travis: Switch to the Ubuntu 18.04 (bionic) image for tests
authorTobias Brunner <tobias@strongswan.org>
Thu, 17 Oct 2019 06:31:51 +0000 (08:31 +0200)
committerTobias Brunner <tobias@strongswan.org>
Mon, 21 Oct 2019 11:58:12 +0000 (13:58 +0200)
Do two full build tests on 16.04 (xenial) and the two for OpenSSL 1.0
also run there.  Since 18.04 ships OpenSSL 1.1.1, which conflicts with
our custom built version, we skip that until OpenSSL 3.0 is released.
A workaround is required for an issue with sonarqube on bionic.

.travis.yml
scripts/test.sh

index 3a62e2c..7e99731 100644 (file)
@@ -1,7 +1,7 @@
 language: c
 
 sudo: required
-dist: xenial
+dist: bionic
 
 # don't build tags separately
 if: tag IS blank
@@ -50,6 +50,11 @@ matrix:
     - env: TEST=all
     - env: TEST=all
       compiler: clang
+    - env: TEST=all
+      dist: xenial
+    - env: TEST=all
+      dist: xenial
+      compiler: clang
     - env: TEST=all MONOLITHIC=yes
     - env: TEST=all MONOLITHIC=yes
       compiler: clang
@@ -86,7 +91,9 @@ matrix:
     - env: TEST=openssl
     - env: TEST=openssl LEAK_DETECTIVE=yes
     - env: TEST=openssl-1.0
+      dist: xenial
     - env: TEST=openssl-1.0 LEAK_DETECTIVE=yes
+      dist: xenial
     - env: TEST=gcrypt
     - env: TEST=gcrypt LEAK_DETECTIVE=yes
     - env: TEST=apidoc
index 833d38a..1cf92b9 100755 (executable)
@@ -86,43 +86,6 @@ build_tss2()
        cd -
 }
 
-build_openssl()
-{
-       SSL_REV=1.1.1d
-       SSL_PKG=openssl-$SSL_REV
-       SSL_DIR=$TRAVIS_BUILD_DIR/../$SSL_PKG
-       SSL_SRC=https://www.openssl.org/source/$SSL_PKG.tar.gz
-       SSL_INS=/usr/local/ssl
-       SSL_OPT="shared no-tls no-dtls no-ssl3 no-zlib no-comp no-idea no-psk no-srp
-                        no-stdio no-tests enable-rfc3779 enable-ec_nistp_64_gcc_128
-                        --api=1.1.0"
-
-       if test -d "$SSL_DIR"; then
-               return
-       fi
-
-       echo "$ build_openssl()"
-
-       curl -L $SSL_SRC | tar xz -C $TRAVIS_BUILD_DIR/.. &&
-       cd $SSL_DIR &&
-       ./config --prefix=$SSL_INS --openssldir=$SSL_INS $SSL_OPT &&
-       make -j4 >/dev/null &&
-       sudo make install_sw >/dev/null &&
-       echo $SSL_INS/lib | sudo tee /etc/ld.so.conf.d/openssl-$SSL_REV.conf >/dev/null &&
-       sudo ldconfig || exit $?
-       cd -
-}
-
-use_custom_openssl()
-{
-       CFLAGS="$CFLAGS -I/usr/local/ssl/include"
-       LDFLAGS="$LDFLAGS -L/usr/local/ssl/lib"
-       export LDFLAGS
-       if test "$1" = "deps"; then
-               build_openssl
-       fi
-}
-
 if test -z $TRAVIS_BUILD_DIR; then
        TRAVIS_BUILD_DIR=$PWD
 fi
@@ -144,10 +107,6 @@ openssl*)
        CONFIG="--disable-defaults --enable-pki --enable-openssl --enable-pem"
        export TESTS_PLUGINS="test-vectors pem openssl!"
        DEPS="libssl-dev"
-       if test "$TEST" != "openssl-1.0"; then
-               DEPS=""
-               use_custom_openssl $1
-       fi
        ;;
 gcrypt)
        CONFIG="--disable-defaults --enable-pki --enable-gcrypt --enable-pkcs1"
@@ -197,14 +156,13 @@ all|coverage|sonarcloud)
        DEPS="$DEPS libcurl4-gnutls-dev libsoup2.4-dev libunbound-dev libldns-dev
                  libmysqlclient-dev libsqlite3-dev clearsilver-dev libfcgi-dev
                  libpcsclite-dev libpam0g-dev binutils-dev libunwind8-dev libnm-dev
-                 libjson0-dev iptables-dev python-pip libtspi-dev libsystemd-dev"
+                 libjson-c-dev iptables-dev python-pip libtspi-dev libsystemd-dev"
        PYDEPS="pytest"
        if test "$1" = "deps"; then
                build_botan
                build_wolfssl
                build_tss2
        fi
-       use_custom_openssl $1
        ;;
 win*)
        CONFIG="--disable-defaults --enable-svc --enable-ikev2
@@ -374,6 +332,12 @@ esac
 echo "$ make $TARGET"
 case "$TEST" in
 sonarcloud)
+       # there is an issue with the platform detection that causes sonarqube to
+       # fail on bionic with "ERROR: ld.so: object '...libinterceptor-${PLATFORM}.so'
+       # from LD_PRELOAD cannot be preloaded (cannot open shared object file)"
+       # https://jira.sonarsource.com/browse/CPP-2027
+       BW_PATH=$(dirname $(which build-wrapper-linux-x86-64))
+       cp $BW_PATH/libinterceptor-x86_64.so $BW_PATH/libinterceptor-haswell.so
        # without target, coverage is currently not supported anyway because
        # sonarqube only supports gcov, not lcov
        build-wrapper-linux-x86-64 --out-dir bw-output make -j4 || exit $?