1 # Travis defines and exports CC and CXX *after* we have defined our
2 # environment variables via 'env'. So, do not use 'env' to define them.
3 # Instead, put their definitions in MATRIX_EVAL, which we eval after the
4 # definitions from Travis.
10 # See https://github.com/nemequ/icc-travis.
11 secure: B3manbbi0anCAGDJTdAa9TlodzRHeiYD87FKmFzS877dPm8Cm0BDvtUhKBUpBvP8+nbHOWFGrgDmLugSZjTGU+mAxtuQpamUFHvinu0BIk3qtjlqouwvbtIqUu8iiZ3Uqu+xKeAANKRy0YVZGLlEb9F3N119tJ/Fxp1p9bXL1qph+CZ25OFbUgZ2s4F+/AyHMUxJlNXKFe3Qean65hC6edhU3zoaKzr/g/wtbhRmcyWbkOa1dJqzr2yKotcPvrnApGhDzgMKFtohg/t7xfMADDVv6sGS5XNpt25Z+MUCmLg4Z9eD7u109jvRV1eu/jgVafqsthWEhXbuMiFgFhKBKGCNZ0dACIfKZSkFZI6FdM7ovJ6aNhSlxZ2169Ybd22rN1UTHeCQWySPcVVOg5taLVpqe+E8Xhnv4hBO5NrzElWwCMLxIdPUSwVStYvtDr8ZytHWzfot50vSnFKIFpTOr9hP4+AJMVmmqJfaJo2MLBft/q2xkztrMv3lQSj3m4+ma9kPDwXIu9uCutjlnhc00jNx9qegi5VfpAjxcG1R+pX4T20az6ByHk/7LPQsANkT31RJq/jAeD9LEuMOy8miha83q4QuvbFaqPK3PY0el/O1LZaXqLsV2aQ0uqH8YX0l4r5NzHdhb+3lYgvpMBO5ytr/EWJiEyNYV518050IUDE=
14 # 1. Build the tarball
15 # On a modern distro, with all the needed dependencies, including the whole git history.
16 # 2. Check it on various environments.
17 # Less dependencies, and little git content (we would like to have none, but it's not
18 # an option on Travis).
23 # The 'check' jobs do not need the repo at all, only the 'dist'
24 # does. Let's save time, bandwith, energy, and polar bears.
28 # matrix.include and jobs.include are aliases
29 # (https://docs.travis-ci.com/user/conditional-builds-stages-jobs/).
38 - sudo apt-get install -qq autoconf automake autopoint flex gettext graphviz help2man m4 texinfo
48 # Travis makes a shallow clone, but we need it in full to build the ChangeLog and apply the fixes in git-log-fix.
49 - git fetch --unshallow || true
50 - git submodule update --init --recursive
53 - ./configure --enable-gcc-warnings || { cat config.log && false; }
56 # Can help understanding why we get "dirty" tarballs.
58 - dist=$(echo bison*.xz)
60 # Unfortunately we cannot deterministically know the name of the tarball without the full
61 # git history (because git describe --abbrev=4 may use more than 4 characters if there are
64 # So for the sake of the 'check' jobs (that don't even have the repo at all), also expose this
65 # tarball on a name that only depends on the Travis build number.
67 # Without -b -, exit status is always 0.
69 # If we rerun a job that was already uploaded, 'ln -s' will fail: remove beforehand.
70 - sftp -b - bison@sftp.lrde.epita.fr <<< "put $dist"$'\n'"-rm bison-$TRAVIS_BUILD_NUMBER.tar.xz"$'\n'"ln -s $dist bison-$TRAVIS_BUILD_NUMBER.tar.xz"
76 # Start with three completely different environments, to get
86 # See https://github.com/travis-ci/apt-source-safelist/issues/410.
87 - sourceline: 'ppa:ubuntu-toolchain-r/test'
90 - MATRIX_EVAL="CC=gcc-9 && CXX=g++-9 && CONFIGUREFLAGS='CPPFLAGS=-DNDEBUG CFLAGS=-O3 CXXFLAGS=-O3'"
92 # ASAN is time consuming, and we timeout the 50min granted by
93 # Travis if we run all the tests in one go. Run in two parts.
94 - name: "Clang 9 libc++ and ASAN part 1"
101 # See https://github.com/travis-ci/apt-source-safelist/issues/410.
102 - sourceline: 'ppa:ubuntu-toolchain-r/test'
103 - sourceline: 'deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-9 main'
104 key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key'
110 # Do not use ASAN with ubuntu's libc++: https://bugs.llvm.org/show_bug.cgi?id=17379
111 - MATRIX_EVAL="CC='clang-9 -fsanitize=address' CXX='clang++-9 -fsanitize=address -stdlib=libc++'"
114 - name: "Clang 9 libc++ and ASAN part 2"
120 # Do not use ASAN with ubuntu's libc++: https://bugs.llvm.org/show_bug.cgi?id=17379
121 - MATRIX_EVAL="CC='clang-9 -fsanitize=address' CXX='clang++-9 -fsanitize=address -stdlib=libc++'"
124 # Currently no longer works (https://github.com/nemequ/icc-travis/issues/15).
127 # # We need the build-aux/install-icc.sh script.
135 # # ICC's warnings are often very wrong (e.g., it thinks foo ?
136 # # "bar" : "baz" is char* instead of const char*), so don't try
137 # # to work around the, and obviously, don't die on them.
138 # - MATRIX_EVAL="CC=icc && CXX=icpc"
139 # - MAKE_ARGS='WERROR_CFLAGS= WERROR_CXXFLAGS='
146 - name: "GCC 8 with sanitizers part 1"
153 - MATRIX_EVAL="CC='gcc-8 -fsanitize=undefined,address -fno-omit-frame-pointer' CXX='g++-8 -fsanitize=undefined,address -fno-omit-frame-pointer'"
154 - CONFIGUREFLAGS='CFLAGS=-O1 CXXFLAGS=-O1'
165 - MATRIX_EVAL="CC=gcc-8 && CXX=g++-8"
175 - MATRIX_EVAL="CC=gcc-7 && CXX=g++-7"
183 sources: ubuntu-toolchain-r-test
186 - MATRIX_EVAL="CC=gcc-6 && CXX=g++-6"
194 sources: ubuntu-toolchain-r-test
197 - MATRIX_EVAL="CC=gcc-5 && CXX=g++-5"
205 sources: ubuntu-toolchain-r-test
208 - MATRIX_EVAL="CC=gcc-4.9 && CXX=g++-4.9"
216 sources: ubuntu-toolchain-r-test
219 - MATRIX_EVAL="CC=gcc-4.8 && CXX=g++-4.8"
227 sources: ubuntu-toolchain-r-test
230 - MATRIX_EVAL="CC=gcc-4.7 && CXX=g++-4.7"
238 sources: ubuntu-toolchain-r-test
241 - MATRIX_EVAL="CC=gcc-4.6 && CXX=g++-4.6"
247 - name: "Clang 8 -O3"
258 - MATRIX_EVAL="CC=clang-8 && CXX='clang++-8 -stdlib=libc++'"
259 - CONFIGUREFLAGS='CPPFLAGS=-DNDEBUG CFLAGS=-O3 CXXFLAGS=-O3'
272 - MATRIX_EVAL="CC=clang-7 && CXX='clang++-7 -stdlib=libc++'"
274 - name: "Clang 6 and libc++"
281 - llvm-toolchain-xenial-6.0
282 - ubuntu-toolchain-r-test
287 - MATRIX_EVAL="CC=clang-6.0 && CXX='clang++-6.0 -stdlib=libc++'"
295 sources: llvm-toolchain-xenial-5.0
300 - MATRIX_EVAL="CC='clang-5.0' CXX='clang++-5.0'"
308 sources: llvm-toolchain-xenial-4.0
311 - MATRIX_EVAL="CC=clang-4.0 && CXX=clang++-4.0"
319 sources: llvm-toolchain-xenial-3.9
322 - MATRIX_EVAL="CC=clang-3.9 && CXX=clang++-3.9"
331 - ubuntu-toolchain-r-test
332 - llvm-toolchain-precise-3.8
335 - MATRIX_EVAL="CC=clang-3.8 && CXX=clang++-3.8"
344 - ubuntu-toolchain-r-test
345 - llvm-toolchain-precise-3.7
348 - MATRIX_EVAL="CC=clang-3.7 && CXX=clang++-3.7"
357 - ubuntu-toolchain-r-test
358 - llvm-toolchain-precise-3.6
361 - MATRIX_EVAL="CC=clang-3.6 && CXX=clang++-3.6"
370 - ubuntu-toolchain-r-test
371 - llvm-toolchain-precise-3.5
374 - MATRIX_EVAL="CC=clang-3.5 && CXX=clang++-3.5"
379 # Not available on Xenial.
385 # No versioned name installed, but beware that Travis installs
386 # a more modern clang earlier in the default PATH.
387 - MATRIX_EVAL='CC=/usr/bin/clang && CXX=/usr/bin/clang++'
392 # Not available on Xenial.
398 # See comment for 3.4.
399 - MATRIX_EVAL='CC=/usr/bin/clang && CXX=/usr/bin/clang++'
401 ## From https://docs.gitlab.com/ce/ci/ssh_keys/#ssh-keys-when-using-the-docker-executor.
402 ## Applies to Travis too. Applied to all the 'script's (of all the jobs).
404 - 'which ssh-agent || ( sudo apt-get install openssh-client -y )'
405 - eval "$(ssh-agent -s)"
406 # $SSH_PRIVATE_KEY is multiline. Use $'...' to register its value: $'-----BEGIN OPENSSH PRIVATE KEY-----\nXXXXX...\n...==\n-----END OPENSSH PRIVATE KEY-----'.
407 - echo "$SSH_PRIVATE_KEY" >/tmp/key.id_rsa
408 - chmod 600 /tmp/key.id_rsa
409 - ssh-add /tmp/key.id_rsa </dev/null
412 - echo '|1|bpc51UGxoDZjCPiwRlCStW32trI=|rfh6mLoLZv/vAvOVrpZXI1hTLxg= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBIR+ckMoJTNXHvAQLHWSfrRnrNJGW2ZR6kr5pBVDGCkz1v1RcQ5rleq0NAt9kS3v4hgnuLiEVnK7KDRzcEH3ikc=' >>~/.ssh/known_hosts
413 - chmod 600 ~/.ssh/known_hosts
415 # Applies only to the jobs that don't have a 'script', i.e., applies to all the 'check' jobs, but not the 'dist' one.
417 - eval "$MATRIX_EVAL"
418 # Beware not too leak $SSH_PRIVATE_KEY.
420 - sudo apt-get install -qq doxygen flex m4
421 # Install and activate ICC.
422 - if [[ $CC == "icc" ]]; then build-aux/install-icc.sh; fi
423 - if [[ -f ~/.bashrc ]]; then source ~/.bashrc; fi
424 # Install and activate dmd.
425 - mkdir -p ~/dlang && wget https://dlang.org/install.sh -O ~/dlang/install.sh
426 - source $(source ~/dlang/install.sh dmd -a)
436 - if [[ -f ~/.bashrc ]]; then source ~/.bashrc; fi
437 # Unset this variable, otherwise, Java programs' stderr is cluttered
438 # with `Picked up _JAVA_OPTIONS: -Xmx2048m -Xms512m`, which makes
439 # the test suite fail.
440 - unset _JAVA_OPTIONS
442 # Fail fast from now on.
444 - sftp bison@sftp.lrde.epita.fr:bison-$TRAVIS_BUILD_NUMBER.tar.xz
445 - tar xf bison-$TRAVIS_BUILD_NUMBER.tar.xz
446 - dir=$(tar tf bison-$TRAVIS_BUILD_NUMBER.tar.xz | sed 1q)
450 - ../configure --enable-gcc-warnings CC="$CC" CXX="$CXX" $CONFIGUREFLAGS || { cat config.log && false; }
451 - make -j2 $MAKE_ARGS
452 - if test ${PART-1} = 1; then make check VERBOSE=1 TESTSUITEFLAGS=-j2 || { cat test-suite.log && cat tests/testsuite.log && false; }; fi
453 - if test ${PART-2} = 2; then make maintainer-check-posix VERBOSE=1 TESTSUITEFLAGS=-j2 || { cat tests/testsuite.log && false; }; fi
454 - if test ${PART-2} = 2; then make maintainer-check-g++ VERBOSE=1 TESTSUITEFLAGS=-j2 || { cat tests/testsuite.log && false; }; fi
457 - uninstall_intel_software || true