travis: Build on ARM64, IBM Power and IBM Z architectures
authorTobias Brunner <tobias@strongswan.org>
Wed, 15 Jan 2020 13:57:56 +0000 (14:57 +0100)
committerTobias Brunner <tobias@strongswan.org>
Wed, 22 Jan 2020 14:10:09 +0000 (15:10 +0100)
IBM Z is big-endian, IBM Power runs in little-endian mode.

Botan requires a fix for issues with GCC and amalgamation enabled (target
pragma ‘*’ is invalid) on ARM64 and IBM Power, while wolfSSL can't be
compiled successfully on IBM Z without an additional patch.

libunwind is not available for x390x, but since we explicitly disable
such backtraces it's not necessary anyway.

.travis.yml
scripts/test.sh

index 7e99731..68db3ac 100644 (file)
@@ -51,6 +51,12 @@ matrix:
     - env: TEST=all
       compiler: clang
     - env: TEST=all
+      arch: arm64
+    - env: TEST=all
+      arch: ppc64le
+    - env: TEST=all
+      arch: s390x
+    - env: TEST=all
       dist: xenial
     - env: TEST=all
       dist: xenial
index 5ed4a15..885b33f 100755 (executable)
@@ -4,7 +4,7 @@
 build_botan()
 {
        # same revision used in the build recipe of the testing environment
-       BOTAN_REV=2.13.0
+       BOTAN_REV=0881f2c33ff7 # 2.13.0 + amalgamation patch
        BOTAN_DIR=$TRAVIS_BUILD_DIR/../botan
 
        if test -d "$BOTAN_DIR"; then
@@ -36,7 +36,7 @@ build_botan()
 
 build_wolfssl()
 {
-       WOLFSSL_REV=v4.3.0-stable
+       WOLFSSL_REV=87859f9e810b # v4.3.0-stable + IBM Z patch
        WOLFSSL_DIR=$TRAVIS_BUILD_DIR/../wolfssl
 
        if test -d "$WOLFSSL_DIR"; then
@@ -147,6 +147,9 @@ all|coverage|sonarcloud)
                        --disable-kernel-wfp --disable-kernel-iph --disable-winhttp"
        # not enabled on the build server
        CONFIG="$CONFIG --disable-af-alg"
+       if test "$TRAVIS_CPU_ARCH" != "amd64"; then
+               CONFIG="$CONFIG --disable-aesni --disable-rdrand"
+       fi
        if test "$TEST" != "coverage"; then
                CONFIG="$CONFIG --disable-coverage"
        else
@@ -155,7 +158,7 @@ all|coverage|sonarcloud)
        fi
        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
+                 libpcsclite-dev libpam0g-dev binutils-dev libnm-dev
                  libjson-c-dev iptables-dev python-pip libtspi-dev libsystemd-dev"
        PYDEPS="tox"
        if test "$1" = "deps"; then