Skip to content

Commit

Permalink
WIP: Try to use qemu for big endian test on travis
Browse files Browse the repository at this point in the history
  • Loading branch information
real-or-random committed Oct 30, 2020
1 parent 3967d96 commit c08cdea
Show file tree
Hide file tree
Showing 2 changed files with 86 additions and 66 deletions.
138 changes: 74 additions & 64 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,4 @@
language: c
os:
- linux
- osx

dist: bionic
# Valgrind currently supports upto macOS 10.13, the latest xcode of that version is 10.1
osx_image: xcode10.1
Expand All @@ -12,83 +8,96 @@ addons:
- libgmp-dev
- valgrind
- libtool-bin
compiler:
- clang
- gcc
services:
- docker

#os:
# - linux
# - osx
#compiler:
# - clang
# - gcc
env:
global:
- WIDEMUL=auto BIGNUM=auto STATICPRECOMPUTATION=yes ECMULTGENPRECISION=auto ASM=no BUILD=check WITH_VALGRIND=yes RUN_VALGRIND=no EXTRAFLAGS= HOST= ECDH=no RECOVERY=no SCHNORRSIG=no EXPERIMENTAL=no CTIMETEST=yes BENCH=yes ITERS=2
matrix:
- WIDEMUL=int64 RECOVERY=yes
- WIDEMUL=int64 ECDH=yes EXPERIMENTAL=yes SCHNORRSIG=yes
- WIDEMUL=int128
- WIDEMUL=int128 RECOVERY=yes EXPERIMENTAL=yes SCHNORRSIG=yes
- WIDEMUL=int128 ECDH=yes EXPERIMENTAL=yes SCHNORRSIG=yes
- WIDEMUL=int128 ASM=x86_64
- BIGNUM=no
- BIGNUM=no RECOVERY=yes EXPERIMENTAL=yes SCHNORRSIG=yes
- BIGNUM=no STATICPRECOMPUTATION=no
- BUILD=distcheck WITH_VALGRIND=no CTIMETEST=no BENCH=no
- CPPFLAGS=-DDETERMINISTIC
- CFLAGS=-O0 CTIMETEST=no
- ECMULTGENPRECISION=2
- ECMULTGENPRECISION=8
- RUN_VALGRIND=yes BIGNUM=no ASM=x86_64 ECDH=yes RECOVERY=yes EXPERIMENTAL=yes SCHNORRSIG=yes EXTRAFLAGS="--disable-openssl-tests" BUILD=
# matrix:
# - WIDEMUL=int64 RECOVERY=yes
# - WIDEMUL=int64 ECDH=yes EXPERIMENTAL=yes SCHNORRSIG=yes
# - WIDEMUL=int128
# - WIDEMUL=int128 RECOVERY=yes EXPERIMENTAL=yes SCHNORRSIG=yes
# - WIDEMUL=int128 ECDH=yes EXPERIMENTAL=yes SCHNORRSIG=yes
# - WIDEMUL=int128 ASM=x86_64
# - BIGNUM=no
# - BIGNUM=no RECOVERY=yes EXPERIMENTAL=yes SCHNORRSIG=yes
# - BIGNUM=no STATICPRECOMPUTATION=no
# - BUILD=distcheck WITH_VALGRIND=no CTIMETEST=no BENCH=no
# - CPPFLAGS=-DDETERMINISTIC
# - CFLAGS=-O0 CTIMETEST=no
# - ECMULTGENPRECISION=2
# - ECMULTGENPRECISION=8
# - RUN_VALGRIND=yes BIGNUM=no ASM=x86_64 ECDH=yes RECOVERY=yes EXPERIMENTAL=yes SCHNORRSIG=yes EXTRAFLAGS="--disable-openssl-tests" BUILD=

matrix:
fast_finish: true
include:
- compiler: clang
os: linux
env: HOST=i686-linux-gnu
addons:
apt:
packages:
- gcc-multilib
- libgmp-dev:i386
- valgrind
- libtool-bin
- libc6-dbg:i386
- compiler: clang
env: HOST=i686-linux-gnu
os: linux
addons:
apt:
packages:
- gcc-multilib
- valgrind
- libtool-bin
- libc6-dbg:i386
- compiler: gcc
env: HOST=i686-linux-gnu
os: linux
addons:
apt:
packages:
- gcc-multilib
- valgrind
- libtool-bin
- libc6-dbg:i386
# - compiler: clang
# os: linux
# env: HOST=i686-linux-gnu
# addons:
# apt:
# packages:
# - gcc-multilib
# - libgmp-dev:i386
# - valgrind
# - libtool-bin
# - libc6-dbg:i386
# - compiler: clang
# env: HOST=i686-linux-gnu
# os: linux
# addons:
# apt:
# packages:
# - gcc-multilib
# - valgrind
# - libtool-bin
# - libc6-dbg:i386
# - compiler: gcc
# env: HOST=i686-linux-gnu
# os: linux
# addons:
# apt:
# packages:
# - gcc-multilib
# - valgrind
# - libtool-bin
# - libc6-dbg:i386
# - compiler: gcc
# os: linux
# env: HOST=i686-linux-gnu
# addons:
# apt:
# packages:
# - gcc-multilib
# - libgmp-dev:i386
# - valgrind
# - libtool-bin
# - libc6-dbg:i386
# S390x build (big endian system)
- compiler: gcc
os: linux
env: HOST=i686-linux-gnu
env: HOST=s390x-unknown-linux-gnu ECDH=yes RECOVERY=yes EXPERIMENTAL=yes SCHNORRSIG=yes CTIMETEST= BENCH=no WITH_VALGRIND=no BUILD= QEMU=s390x
addons:
apt:
packages:
- gcc-multilib
- libgmp-dev:i386
- valgrind
- libtool-bin
- libc6-dbg:i386
# S390x build (big endian system)
- compiler: gcc
env: HOST=s390x-unknown-linux-gnu ECDH=yes RECOVERY=yes EXPERIMENTAL=yes SCHNORRSIG=yes CTIMETEST=
arch: s390x
- gcc-s390x-linux-gnu
- libc6-dev-s390x-cross

# We use this to install macOS dependencies instead of the built in `homebrew` plugin,
# because in xcode earlier than 11 they have a bug requiring updating the system which overall takes ~8 minutes.
# https://travis-ci.community/t/macos-build-fails-because-of-homebrew-bundle-unknown-command/7296
before_install:
- if [ "${TRAVIS_OS_NAME}" = "osx" ]; then HOMEBREW_NO_AUTO_UPDATE=1 brew install gmp valgrind gcc@9; fi
- if [ -n "$QEMU" ]; then docker run --rm --privileged multiarch/qemu-user-static --reset -p yes; fi

before_script: ./autogen.sh

Expand All @@ -106,3 +115,4 @@ after_script:
- cat ./bench.log
- $CC --version
- valgrind --version
- ls /usr/bin/qemu*
14 changes: 12 additions & 2 deletions contrib/travis.sh
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,23 @@ fi
--with-valgrind="$WITH_VALGRIND" \
--host="$HOST" $EXTRAFLAGS

make -j2

if [ -n "$BUILD" ]
then
make -j2 "$BUILD"
make "$BUILD"
fi

if [ -n "$QEMU" ]
then
qemu_run() { docker run --rm -t -v "${PWD}:/mnt/secp256k1" -w /mnt/secp256k1 $QEMU/ubuntu "$@"; }
qemu_run ls /mnt/secp256k1
qemu_run ./tests
qemu_run ./exhaustive_tests
fi

if [ "$RUN_VALGRIND" = "yes" ]
then
make -j2
# the `--error-exitcode` is required to make the test fail if valgrind found errors, otherwise it'll return 0 (http://valgrind.org/docs/manual/manual-core.html)
valgrind --error-exitcode=42 ./tests 16
valgrind --error-exitcode=42 ./exhaustive_tests
Expand Down

0 comments on commit c08cdea

Please sign in to comment.