diff --git a/.travis.sh b/.travis.sh index c4c33a8..d047975 100755 --- a/.travis.sh +++ b/.travis.sh @@ -2,16 +2,67 @@ set -eu -pgdg_repository() { +lisp_install() { + case "$LISP" in + ccl) + ccl_checksum='08e885e8c2bb6e4abd42b8e8e2b60f257c6929eb34b8ec87ca1ecf848fac6d70' + ccl_version='1.11' + + remote_file "/tmp/ccl-${ccl_version}.tgz" "https://github.com/Clozure/ccl/releases/download/v${ccl_version}/ccl-${ccl_version}-linuxx86.tar.gz" "$ccl_checksum" + tar --file "/tmp/ccl-${ccl_version}.tgz" --extract --exclude='.svn' --directory '/tmp' + sudo mv --no-target-directory '/tmp/ccl' '/usr/local/src/ccl' + sudo ln --no-dereference --force --symbolic "/usr/local/src/ccl/scripts/ccl64" '/usr/local/bin/ccl' + ;; + + sbcl) + sbcl_checksum='eb44d9efb4389f71c05af0327bab7cd18f8bb221fb13a6e458477a9194853958' + sbcl_version='1.3.18' + + remote_file "/tmp/sbcl-${sbcl_version}.tgz" "http://prdownloads.sourceforge.net/sbcl/sbcl-${sbcl_version}-x86-64-linux-binary.tar.bz2" "$sbcl_checksum" + tar --file "/tmp/sbcl-${sbcl_version}.tgz" --extract --directory '/tmp' + ( cd "/tmp/sbcl-${sbcl_version}-x86-64-linux" && sudo ./install.sh ) + ;; + + *) + echo "Unrecognized Lisp: '$LISP'" + exit 1 + ;; + esac +} + +pgdg_repositories() { local sourcelist='sources.list.d/pgdg.list' + sudo tee "/etc/apt/$sourcelist" <<-repositories + deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main + deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg-testing main 10 + repositories + sudo apt-key adv --keyserver 'hkp://ha.pool.sks-keyservers.net' --recv-keys 'ACCC4CF8' - echo deb http://apt.postgresql.org/pub/repos/apt/ trusty-pgdg main | sudo tee "/etc/apt/$sourcelist" sudo apt-get -o Dir::Etc::sourcelist="$sourcelist" -o Dir::Etc::sourceparts='-' -o APT::Get::List-Cleanup='0' update } -postgresql_configure() { - sudo tee /etc/postgresql/9.1/main/pg_hba.conf > /dev/null <<-config +postgresql_install() { + if [ -z "${PGVERSION:-}" ]; then + PGVERSION="$( psql -d postgres -XAtc "select regexp_replace(current_setting('server_version'), '[.][0-9]+$', '')" )" + else + sudo service postgresql stop + xargs sudo apt-get -y --purge remove <<-packages + libpq-dev + libpq5 + postgresql + postgresql-client-common + postgresql-common + packages + sudo rm -rf /var/lib/postgresql + fi + + xargs sudo apt-get -y install <<-packages + postgresql-${PGVERSION} + postgresql-${PGVERSION}-ip4r + packages + + sudo tee /etc/postgresql/${PGVERSION}/main/pg_hba.conf > /dev/null <<-config local all all trust host all all 127.0.0.1/32 trust config @@ -19,17 +70,6 @@ postgresql_configure() { sudo service postgresql restart } -postgresql_uninstall() { - sudo service postgresql stop - xargs sudo apt-get -y --purge remove <<-packages - libpq-dev - libpq5 - postgresql - postgresql-client-common - postgresql-common - packages -} - remote_file() { local target="$1" origin="$2" sum="$3" local check="shasum --algorithm $(( 4 * ${#sum} )) --check" @@ -38,13 +78,4 @@ remote_file() { curl --location --output "$target" "$origin" && $check <<< "$filesum" } -sbcl_install() { - sbcl_checksum='eb44d9efb4389f71c05af0327bab7cd18f8bb221fb13a6e458477a9194853958' - sbcl_version='1.3.18' - - remote_file "/tmp/sbcl-${sbcl_version}.tgz" "http://prdownloads.sourceforge.net/sbcl/sbcl-${sbcl_version}-x86-64-linux-binary.tar.bz2" "$sbcl_checksum" - tar --file "/tmp/sbcl-${sbcl_version}.tgz" --extract --directory '/tmp' - ( cd "/tmp/sbcl-${sbcl_version}-x86-64-linux" && sudo ./install.sh ) -} - $1 diff --git a/.travis.yml b/.travis.yml index 31dc3fb..a430f27 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,11 +1,18 @@ language: common-lisp +sudo: required + +env: + matrix: + - LISP=ccl + - LISP=ccl PGVERSION=9.6 + - LISP=sbcl + - LISP=sbcl PGVERSION=9.6 install: - - ./.travis.sh postgresql_uninstall - - ./.travis.sh pgdg_repository - - sudo apt-get install -y postgresql-9.1-ip4r unzip libsqlite3-dev gawk freetds-dev - - ./.travis.sh postgresql_configure - - ./.travis.sh sbcl_install + - ./.travis.sh lisp_install + - ./.travis.sh pgdg_repositories + - ./.travis.sh postgresql_install + - sudo apt-get install -y unzip libsqlite3-dev gawk freetds-dev before_script: - PGUSER=postgres createuser -S -R -D -E -l pgloader @@ -14,10 +21,10 @@ before_script: - PGUSER=pgloader psql -d pgloader -c "create schema expected;" - PGUSER=pgloader psql -d pgloader -c "create schema err;" - make --version - - make + - make "CL=$LISP" script: - - PGUSER=pgloader make check + - PGUSER=pgloader make "CL=$LISP" check notifications: email: