Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
139 changes: 75 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,77 +8,89 @@ 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.
Expand All @@ -94,6 +102,8 @@ before_script: ./autogen.sh

# travis auto terminates jobs that go for 10 minutes without printing to stdout, but travis_wait doesn't work well with forking programs like valgrind (https://docs.travis-ci.com/user/common-build-problems/#build-times-out-because-no-output-was-received https://github.com/bitcoin-core/secp256k1/pull/750#issuecomment-623476860)
script:
- if [ -n "$QEMU" ]; then docker run --rm --privileged multiarch/qemu-user-static --reset -p yes; fi
- cat /proc/sys/fs/binfmt_misc/qemu-s390x
- function keep_alive() { while true; do echo -en "\a"; sleep 60; done }
- keep_alive &
- ./contrib/travis.sh
Expand All @@ -106,3 +116,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