############################################################################# # # # Travis-ci test-suite for LibTomMath # # (https://github.com/libtom/libtommath.git) # # # ############################################################################# # Run the tests based on Ubuntu 16.04 dist: xenial # Compilation failures are in gcc_errors_*.log # Failed tests in test_*.log # Files do not exist in case of success after_failure: - cat test_*.log - cat valgrind_test.log - cat gcc_errors_*.log # In case of a Travis error a success might get signaled # even without any test run. This file also keeps any notes # printed from the tests which might come handy from time # to time. # Valgrid will print its output to stderr which will not show up # in test_*.log. testme.sh accepts one additional option to # valgrind and "--valgrind-options=--log-fd=1" sends the output # of Valgrind to stdout instead. after_success: - cat test_*.log # Tests restricted to the following branches of LTM. branches: only: - master - develop - /^release/ - /^support/ - /^travis/ # Additional installs: Valgrind for memory tests. install: - sudo apt-get update -qq - sudo apt-get install valgrind - apt-cache search gcc | grep '^gcc-[0-9\.]* ' - apt-cache search clang | grep compiler # The language is C and it will load the respective dependencies language: c # The actual workspace. Will run the individual jobs in parallel # which also means that the jobs must be able to run in parallel. # Either specify sets which will be combined or, as in this case, # specify all builds individually. The number of jobs is currently # restricted to 200 jobs at most. matrix: # Will mark as finished if all of the remaining tests are allowed to fail # or one test has failed already. fast_finish: true # The individual jobs include: # The environment given to the programs in the build # We have only one program and the variable $BUILDOPTIONS # has only the options to that program: testme.sh # Check c89 <-> c99 roundtrip - env: BUILDOPTIONS='--c89-c99-roundtrip' # Check source code format - env: BUILDOPTIONS='--format' addons: apt: packages: - astyle # Run always with valgrind (no sanitizer, but debug info) - env: COMPILE_DEBUG=1 BUILDOPTIONS='--with-cc=gcc-4.9 --with-m64 --with-valgrind' addons: apt: packages: - gcc-4.9 # GCC for the 32-bit architecture (no valgrind) - env: BUILDOPTIONS='--with-cc=gcc-5 --with-m32' addons: apt: packages: - libc6-dev-i386 - gcc-multilib # clang for the 32-bit architecture (no valgrind) - env: BUILDOPTIONS='--with-cc=clang-7 --with-m32' addons: apt: packages: - libc6-dev-i386 - gcc-multilib # RSA superclass with tests (no sanitizer, but debug info) - env: COMPILE_DEBUG=1 BUILDOPTIONS='--with-cc=gcc-5 --with-m64 --cflags=-DLTM_NOTHING --cflags=-DSC_RSA_1_WITH_TESTS --with-travis-valgrind' # Test "autotuning", the automatic evaluation and setting of the Toom-Cook cut-offs. #- env: SANITIZER=1 BUILDOPTIONS='--with-cc=gcc-5 --cflags=-DMP_16BIT --with-travis-valgrind --make-option=tune' #- env: SANITIZER=1 BUILDOPTIONS='--with-cc=gcc-5 --cflags=-DMP_32BIT --with-travis-valgrind --make-option=tune' #- env: SANITIZER=1 BUILDOPTIONS='--with-cc=gcc-5 --with-travis-valgrind --make-option=tune' #- env: SANITIZER=1 BUILDOPTIONS='--with-cc=clang-7 --cflags=-DMP_16BIT --with-travis-valgrind --make-option=tune' #- env: SANITIZER=1 BUILDOPTIONS='--with-cc=clang-7 --cflags=-DMP_32BIT --with-travis-valgrind --make-option=tune' - env: SANITIZER=1 BUILDOPTIONS='--with-cc=clang-7 --with-travis-valgrind --make-option=tune' # GCC for the x86-64 architecture testing against a different Bigint-implementation # with 333333 different inputs. #- env: BUILDOPTIONS='--with-cc=gcc-5 --test-vs-mtest=333333 --with-travis-valgrind' # ... and a better random source. - env: BUILDOPTIONS='--with-cc=gcc-5 --test-vs-mtest=333333 --mtest-real-rand --with-travis-valgrind' # clang for the x86-64 architecture testing against a different Bigint-implementation # with 333333 different inputs - env: BUILDOPTIONS='--with-cc=clang-7 --test-vs-mtest=333333 --with-travis-valgrind' # ... and a better random source. #- env: BUILDOPTIONS='--with-cc=clang-7 --test-vs-mtest=333333 --mtest-real-rand --with-travis-valgrind' # GCC for the x64_32 architecture (32-bit longs and 32-bit pointers) # TODO: Probably not possible to run anything in x32 in Travis # but needs to be checked to be sure. - env: SANITIZER=1 BUILDOPTIONS='--with-cc=gcc-5 --with-mx32' addons: apt: packages: - libc6-dev-x32 - gcc-multilib # GCC for the x86-64 architecture (64-bit longs and 64-bit pointers) - env: SANITIZER=1 BUILDOPTIONS='--with-cc=gcc-5 --with-m64 --with-travis-valgrind' - env: BUILDOPTIONS='--with-cc=gcc-4.7 --with-m64 --with-travis-valgrind' addons: apt: packages: - gcc-4.7 - env: BUILDOPTIONS='--with-cc=gcc-4.8 --with-m64 --with-travis-valgrind' addons: apt: packages: - gcc-4.8 # clang for x86-64 architecture (64-bit longs and 64-bit pointers) - env: SANITIZER=1 CONV_WARNINGS=relaxed BUILDOPTIONS='--with-cc=clang-7 --with-m64 --with-travis-valgrind' - env: SANITIZER=1 CONV_WARNINGS=strict BUILDOPTIONS='--with-cc=clang-7 --with-m64 --with-travis-valgrind' - env: SANITIZER=1 CONV_WARNINGS=strict BUILDOPTIONS='--with-cc=clang-7 --cflags=-DMP_USE_MEMOPS --with-m64 --with-travis-valgrind' - env: SANITIZER=1 CONV_WARNINGS=strict BUILDOPTIONS='--with-cc=clang-7 --c89 --with-m64 --with-travis-valgrind' - env: SANITIZER=1 BUILDOPTIONS='--with-cc=clang-7 --with-m64 --with-travis-valgrind --cflags=-DMP_PREC=MP_MIN_PREC' - env: SANITIZER=1 BUILDOPTIONS='--with-cc=clang-6.0 --with-m64 --with-travis-valgrind' addons: apt: packages: - clang-6.0 - env: SANITIZER=1 BUILDOPTIONS='--with-cc=clang-5.0 --with-m64 --with-travis-valgrind' addons: apt: packages: - clang-5.0 - env: BUILDOPTIONS='--with-cc=clang-4.0 --with-m64 --with-travis-valgrind' addons: apt: packages: - clang-4.0 # GCC for the x86-64 architecture with restricted limb sizes # formerly started with the option "--with-low-mp" to testme.sh # but testing all three in one run took to long and timed out. - env: SANITIZER=1 BUILDOPTIONS='--with-cc=gcc-5 --cflags=-DMP_16BIT --with-travis-valgrind' - env: SANITIZER=1 BUILDOPTIONS='--with-cc=gcc-5 --cflags=-DMP_32BIT --with-travis-valgrind' # clang for the x86-64 architecture with restricted limb sizes - env: SANITIZER=1 BUILDOPTIONS='--with-cc=clang-7 --cflags=-DMP_16BIT --with-travis-valgrind' - env: SANITIZER=1 BUILDOPTIONS='--with-cc=clang-7 --cflags=-DMP_32BIT --with-travis-valgrind' # Notifications go to # An email address is also possible. notifications: irc: "chat.freenode.net#libtom-notifications" # The actual script the jobs run. # Because of a default timeout of 10 minutes it was necessary to use # a Travis tool to extend that timeout to 40 minutes. 50 minutes # seem to be the max and 20 the default if travis_wait is called without # any options. script: - ./testme.sh ${BUILDOPTIONS}