| language: c |
| sudo: required |
| cache: |
| directories: |
| - $HOME/wolfssl-4.0.0-stable |
| - $HOME/mesalink-1.0.0 |
| - $HOME/nghttp2-1.34.0 |
| |
| env: |
| global: |
| - LD_LIBRARY_PATH=/usr/local/lib |
| |
| addons: |
| apt: |
| config: |
| retries: true |
| sources: &common_sources |
| - ubuntu-toolchain-r-test |
| packages: &common_packages |
| - cmake |
| - gcc-8 |
| - valgrind |
| - libev-dev |
| - libc-ares-dev |
| - g++-8 |
| - libstdc++-8-dev |
| - stunnel4 |
| - libidn2-0-dev |
| - gnutls-bin |
| |
| matrix: |
| include: |
| - os: linux |
| compiler: gcc |
| dist: trusty |
| env: |
| - T=normal C="--with-gssapi --with-libssh2" CHECKSRC=1 |
| - OVERRIDE_CC="CC=gcc-8" OVERRIDE_CXX="CXX=g++-8" |
| addons: |
| apt: |
| sources: |
| - *common_sources |
| packages: |
| - *common_packages |
| - krb5-user |
| - libssh2-1-dev |
| - os: linux |
| compiler: gcc |
| dist: trusty |
| env: |
| - T=normal C=--with-libssh |
| - OVERRIDE_CC="CC=gcc-8" OVERRIDE_CXX="CXX=g++-8" |
| addons: |
| apt: |
| sources: |
| - *common_sources |
| packages: |
| - *common_packages |
| - libssh-dev |
| - os: linux |
| compiler: gcc |
| dist: trusty |
| env: |
| - T=normal C="--disable-http --disable-smtp --disable-imap" |
| - OVERRIDE_CC="CC=gcc-8" OVERRIDE_CXX="CXX=g++-8" |
| - os: linux |
| compiler: gcc |
| dist: trusty |
| env: |
| - T=normal C="--enable-ares" |
| - OVERRIDE_CC="CC=gcc-8" OVERRIDE_CXX="CXX=g++-8" |
| - os: linux |
| compiler: gcc |
| dist: xenial |
| env: |
| - T=normal C="--disable-verbose" CPPFLAGS="-Wno-variadic-macros" NOTESTS=1 |
| - OVERRIDE_CC="CC=gcc-8" OVERRIDE_CXX="CXX=g++-8" |
| addons: |
| apt: |
| sources: |
| - *common_sources |
| packages: |
| - *common_packages |
| - libpsl-dev |
| - libbrotli-dev |
| - os: linux |
| compiler: gcc |
| dist: xenial |
| env: |
| - T=novalgrind BORINGSSL=yes C="--with-ssl=$HOME/boringssl" LD_LIBRARY_PATH=/home/travis/boringssl/lib:/usr/local/lib |
| - OVERRIDE_CC="CC=gcc-8" OVERRIDE_CXX="CXX=g++-8" |
| addons: |
| apt: |
| sources: |
| - *common_sources |
| packages: |
| - *common_packages |
| - libpsl-dev |
| - libbrotli-dev |
| - os: linux |
| compiler: gcc |
| dist: xenial |
| env: |
| - T=debug-wolfssl C="--with-wolfssl --without-ssl" |
| - OVERRIDE_CC="CC=gcc-8" OVERRIDE_CXX="CXX=g++-8" |
| addons: |
| apt: |
| sources: |
| - *common_sources |
| packages: |
| - *common_packages |
| - libpsl-dev |
| - libbrotli-dev |
| - os: linux |
| compiler: gcc |
| dist: xenial |
| env: |
| - T=debug-mesalink C="--with-mesalink --without-ssl" |
| - OVERRIDE_CC="CC=gcc-8" OVERRIDE_CXX="CXX=g++-8" |
| addons: |
| apt: |
| sources: |
| - *common_sources |
| packages: |
| - *common_packages |
| - libpsl-dev |
| - libbrotli-dev |
| - os: linux |
| compiler: clang |
| dist: xenial |
| env: |
| - T=debug |
| - OVERRIDE_CC="CC=clang-7" OVERRIDE_CXX="CXX=clang++-7" |
| addons: |
| apt: |
| sources: |
| - *common_sources |
| - llvm-toolchain-xenial-7 |
| packages: |
| - *common_packages |
| - clang-7 |
| - libpsl-dev |
| - libbrotli-dev |
| - os: linux |
| compiler: clang |
| dist: xenial |
| env: |
| - T=debug C="--enable-alt-svc" |
| - OVERRIDE_CC="CC=clang-7" OVERRIDE_CXX="CXX=clang++-7" |
| addons: |
| apt: |
| sources: |
| - *common_sources |
| - llvm-toolchain-xenial-7 |
| packages: |
| - *common_packages |
| - clang-7 |
| - libpsl-dev |
| - libbrotli-dev |
| - os: linux |
| compiler: clang |
| dist: xenial |
| env: |
| - T=debug C="--with-mbedtls --without-ssl" |
| - OVERRIDE_CC="CC=clang-7" OVERRIDE_CXX="CXX=clang++-7" |
| addons: |
| apt: |
| sources: |
| - *common_sources |
| - llvm-toolchain-xenial-7 |
| packages: |
| - *common_packages |
| - clang-7 |
| - libpsl-dev |
| - libbrotli-dev |
| - libmbedtls-dev |
| - os: linux |
| compiler: clang |
| dist: xenial |
| env: |
| - T=debug C="--with-gnutls --without-ssl" |
| - OVERRIDE_CC="CC=clang-7" OVERRIDE_CXX="CXX=clang++-7" |
| addons: |
| apt: |
| sources: |
| - *common_sources |
| - llvm-toolchain-xenial-7 |
| packages: |
| - *common_packages |
| - clang-7 |
| - libgnutls28-dev |
| - libpsl-dev |
| - libbrotli-dev |
| - os: linux |
| compiler: clang |
| dist: xenial |
| env: |
| - T=debug C="--disable-threaded-resolver" |
| - OVERRIDE_CC="CC=clang-7" OVERRIDE_CXX="CXX=clang++-7" |
| addons: |
| apt: |
| sources: |
| - *common_sources |
| - llvm-toolchain-xenial-7 |
| packages: |
| - *common_packages |
| - clang-7 |
| - libpsl-dev |
| - libbrotli-dev |
| - os: linux |
| compiler: clang |
| dist: xenial |
| env: |
| - T=debug C="--with-nss --without-ssl" NOTESTS=1 CPPFLAGS="-isystem /usr/include/nss" |
| - OVERRIDE_CC="CC=clang-7" OVERRIDE_CXX="CXX=clang++-7" |
| addons: |
| apt: |
| sources: |
| - *common_sources |
| - llvm-toolchain-xenial-7 |
| packages: |
| - *common_packages |
| - clang-7 |
| - libnss3-dev |
| - libpsl-dev |
| - libbrotli-dev |
| - os: linux |
| compiler: gcc |
| dist: trusty |
| env: |
| - T=iconv |
| - OVERRIDE_CC="CC=gcc-8" OVERRIDE_CXX="CXX=g++-8" |
| - os: osx |
| compiler: gcc |
| env: T=debug C=--with-libssh2 |
| - os: osx |
| compiler: gcc |
| env: T=debug C="--disable-dict --disable-file --disable-ftp --disable-gopher --disable-imap --disable-ldap --disable-pop3 --disable-rtmp --disable-rtsp --disable-scp --disable-sftp --disable-smb --disable-smtp --disable-telnet --disable-tftp --disable-unix-sockets --disable-shared --enable-debug --enable-maintainer-mode --without-brotli --without-gssapi --without-libidn2 --without-libmetalink --without-libpsl --without-librtmp --without-libssh2 --without-nghttp2 --without-ntlm-auth --without-ssl --without-zlib" |
| - os: osx |
| compiler: gcc |
| env: T=debug C=--enable-ares |
| - os: osx |
| compiler: gcc |
| env: T=debug C="--with-ssl=/usr/local/opt/openssl --with-libmetalink" |
| - os: osx |
| compiler: gcc |
| env: T=debug C="--with-ssl=/usr/local/opt/libressl --with-libmetalink" |
| - os: osx |
| compiler: clang |
| osx_image: xcode10 |
| env: T=debug C="--without-ssl --with-darwinssl --with-libmetalink" |
| - os: osx |
| compiler: clang |
| env: T=normal |
| - os: osx |
| compiler: clang |
| env: T=cmake |
| - os: linux |
| compiler: gcc |
| dist: xenial |
| env: |
| - T=cmake |
| - OVERRIDE_CC="CC=gcc-8" OVERRIDE_CXX="CXX=g++-8" |
| addons: |
| apt: |
| sources: |
| - *common_sources |
| packages: |
| - *common_packages |
| - libpsl-dev |
| - libbrotli-dev |
| - os: linux |
| compiler: clang |
| dist: xenial |
| env: |
| - T=cmake |
| - OVERRIDE_CC="CC=clang-7" OVERRIDE_CXX="CXX=clang++-7" |
| addons: |
| apt: |
| sources: |
| - *common_sources |
| - llvm-toolchain-xenial-7 |
| packages: |
| - *common_packages |
| - clang-7 |
| - libpsl-dev |
| - libbrotli-dev |
| - os: linux |
| compiler: gcc |
| dist: xenial |
| env: |
| - T=coverage |
| - OVERRIDE_CC="CC=gcc-8" OVERRIDE_CXX="CXX=g++-8" |
| addons: |
| apt: |
| sources: |
| - *common_sources |
| packages: |
| - *common_packages |
| - lcov |
| - libpsl-dev |
| - libbrotli-dev |
| - libssh2-1-dev |
| - os: linux |
| compiler: gcc |
| dist: xenial |
| env: |
| - T=distcheck |
| - OVERRIDE_CC="CC=gcc-8" OVERRIDE_CXX="CXX=g++-8" |
| addons: |
| apt: |
| sources: |
| - *common_sources |
| packages: |
| - *common_packages |
| - libpsl-dev |
| - libbrotli-dev |
| - os: linux |
| compiler: clang |
| dist: xenial |
| env: |
| - T=fuzzer |
| - OVERRIDE_CC="CC=clang-7" OVERRIDE_CXX="CXX=clang++-7" |
| addons: |
| apt: |
| sources: |
| - *common_sources |
| - llvm-toolchain-xenial-7 |
| packages: |
| - *common_packages |
| - clang-7 |
| - libpsl-dev |
| - libbrotli-dev |
| - os: linux |
| compiler: clang |
| dist: xenial |
| env: |
| - T=tidy |
| - OVERRIDE_CC="CC=clang-7" OVERRIDE_CXX="CXX=clang++-7" |
| addons: |
| apt: |
| sources: |
| - *common_sources |
| - llvm-toolchain-xenial-7 |
| packages: |
| - *common_packages |
| - clang-7 |
| - clang-tidy-7 |
| - libpsl-dev |
| - libbrotli-dev |
| - os: linux |
| compiler: clang |
| dist: xenial |
| env: |
| - T=scan-build |
| - OVERRIDE_CC="CC=clang-7" OVERRIDE_CXX="CXX=clang++-7" |
| addons: |
| apt: |
| sources: |
| - *common_sources |
| - llvm-toolchain-xenial-7 |
| packages: |
| - *common_packages |
| - clang-7 |
| - libpsl-dev |
| - libbrotli-dev |
| - os: linux |
| compiler: clang |
| dist: xenial |
| env: |
| - T=debug CFLAGS="-fsanitize=address,undefined,signed-integer-overflow -fno-sanitize-recover=undefined,integer -Wformat -Werror=format-security -Werror=array-bounds -g" LDFLAGS="-fsanitize=address,undefined -fno-sanitize-recover=undefined,integer" LIBS="-ldl -lubsan" |
| - OVERRIDE_CC="CC=clang-7" OVERRIDE_CXX="CXX=clang++-7" |
| addons: |
| apt: |
| sources: |
| - *common_sources |
| - llvm-toolchain-xenial-7 |
| packages: |
| - *common_packages |
| - clang-7 |
| - libpsl-dev |
| - libbrotli-dev |
| |
| before_install: |
| - eval "${OVERRIDE_CC}" |
| - eval "${OVERRIDE_CXX}" |
| |
| install: |
| - if [ "$T" = "coverage" ]; then pip2 install --user cpp-coveralls; fi |
| - if [ "$TRAVIS_OS_NAME" == "osx" ]; then brew update > /dev/null; fi |
| - if [ "$TRAVIS_OS_NAME" == "osx" ]; then brew reinstall libtool > /dev/null; fi |
| - if [ "$TRAVIS_OS_NAME" == "osx" ]; then brew install rtmpdump libssh2 c-ares libmetalink libressl nghttp2 libmetalink; fi |
| |
| before_script: |
| - ./buildconf |
| - | |
| if [ "$TRAVIS_OS_NAME" = linux -a "$BORINGSSL" ]; then |
| (cd $HOME && |
| git clone --depth=1 https://boringssl.googlesource.com/boringssl && |
| cd boringssl && |
| mkdir build && |
| cd build && |
| CXX="g++" CC="gcc" cmake -DCMAKE_BUILD_TYPE=release -DBUILD_SHARED_LIBS=1 .. && |
| make && |
| cd .. && |
| mkdir lib && |
| cd lib && |
| ln -s ../build/crypto/libcrypto.so . && |
| ln -s ../build/ssl/libssl.so . && |
| echo "BoringSSL lib dir: "`pwd` && |
| export LIBS=-lpthread ) |
| fi |
| - | |
| if [ $TRAVIS_OS_NAME = linux ]; then |
| if [ ! -e $HOME/wolfssl-4.0.0-stable/Makefile ]; then |
| (cd $HOME && \ |
| curl -LO https://github.com/wolfSSL/wolfssl/archive/v4.0.0-stable.tar.gz && \ |
| tar -xzf v4.0.0-stable.tar.gz && \ |
| cd wolfssl-4.0.0-stable && \ |
| ./autogen.sh && \ |
| ./configure --enable-tls13 --enable-all && \ |
| touch wolfssl/wolfcrypt/fips.h && \ |
| make) |
| fi |
| fi |
| - | |
| if [ $TRAVIS_OS_NAME = linux ]; then |
| if [ ! -e $HOME/mesalink-1.0.0/Makefile ]; then |
| (cd $HOME && \ |
| curl https://sh.rustup.rs -sSf | sh -s -- -y && \ |
| source $HOME/.cargo/env && \ |
| curl -LO https://github.com/mesalock-linux/mesalink/archive/v1.0.0.tar.gz && \ |
| tar -xzf v1.0.0.tar.gz && \ |
| cd mesalink-1.0.0 && \ |
| ./autogen.sh && \ |
| ./configure --enable-tls13 && \ |
| make) |
| fi |
| fi |
| - | |
| if [ $TRAVIS_OS_NAME = linux ]; then |
| if [ ! -e $HOME/nghttp2-1.34.0/Makefile ]; then |
| (cd $HOME && \ |
| curl -L https://github.com/nghttp2/nghttp2/releases/download/v1.34.0/nghttp2-1.34.0.tar.gz | |
| tar xzf - && \ |
| cd nghttp2-1.34.0 && \ |
| CXX="g++-8" CC="gcc-8" CFLAGS="" LDFLAGS="" LIBS="" ./configure --disable-threads --enable-app && \ |
| make) |
| fi |
| fi |
| - | |
| if [ $TRAVIS_OS_NAME = linux ]; then |
| (cd $HOME/wolfssl-4.0.0-stable && sudo make install) |
| (cd $HOME/mesalink-1.0.0 && sudo make install) |
| (cd $HOME/nghttp2-1.34.0 && sudo make install) |
| fi |
| |
| script: |
| - | |
| set -eo pipefail |
| if [ "$T" = "coverage" ]; then |
| ./configure --enable-debug --disable-shared --disable-threaded-resolver --enable-code-coverage --enable-werror --enable-alt-svc --with-libssh2 |
| make |
| make TFLAGS=-n test-nonflaky |
| make "TFLAGS=-n -e" test-nonflaky |
| tests="1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 200 201 202 300 301 302 500 501 502 503 504 506 507 508 509 510 511 512 513 514 515 516 517 518 519 700 701 702 800 801 802 803 900 901 902 903 1000 1001 1002 1004 1100 1101 1200 1201 1302 1303 1304 1305 1306 1308 1400 1401 1402 1404 1450 1451 1452 1502 1507 1508 1600 1602 1603 1605 1650 1651 1652 1653 1654 2001 2100 3000" |
| make "TFLAGS=-n -t $tests" test-nonflaky |
| coveralls --gcov /usr/bin/gcov-8 --gcov-options '\-lp' -i src -e lib -e tests -e docs -b $PWD/src |
| coveralls --gcov /usr/bin/gcov-8 --gcov-options '\-lp' -e src -i lib -e tests -e docs -b $PWD/lib |
| fi |
| - | |
| set -eo pipefail |
| if [ "$T" = "debug" ]; then |
| ./configure --enable-debug --enable-werror $C |
| make && make examples |
| if [ -z $NOTESTS ]; then |
| make TFLAGS=-n test-nonflaky |
| fi |
| fi |
| - | |
| set -eo pipefail |
| if [ "$T" = "debug-wolfssl" ]; then |
| ./configure --enable-debug --enable-werror $C |
| make |
| make "TFLAGS=-n !313" test-nonflaky |
| fi |
| - | |
| set -eo pipefail |
| if [ "$T" = "debug-mesalink" ]; then |
| ./configure --enable-debug --enable-werror $C |
| make |
| make "TFLAGS=-n !313 !3001" test-nonflaky |
| fi |
| - | |
| set -eo pipefail |
| if [ "$T" = "novalgrind" ]; then |
| ./configure $C |
| make && make examples |
| make TFLAGS=-n test-nonflaky |
| fi |
| - | |
| set -eo pipefail |
| if [ "$T" = "normal" ]; then |
| if [ $TRAVIS_OS_NAME = linux ]; then |
| # Remove system curl to make sure we don't rely on it. |
| # Only done on Linux since we're not permitted to on mac. |
| sudo rm -f /usr/bin/curl |
| fi |
| ./configure --enable-warnings --enable-werror $C |
| make && make examples |
| if [ -z $NOTESTS ]; then |
| make test-nonflaky |
| fi |
| if [ -n $CHECKSRC ]; then |
| make checksrc |
| fi |
| fi |
| - | |
| set -eo pipefail |
| if [ "$T" = "tidy" ]; then |
| ./configure --enable-warnings --enable-werror $C |
| make && make tidy |
| fi |
| - | |
| set -eo pipefail |
| if [ "$T" = "iconv" ]; then |
| source .travis-iconv-env.sh |
| ./configure --enable-debug --enable-werror $C |
| make && make examples |
| make test-nonflaky |
| fi |
| - | |
| set -eo pipefail |
| if [ "$T" = "cmake" ]; then |
| if [ $TRAVIS_OS_NAME = linux ]; then |
| cmake -H. -Bbuild -DCURL_WERROR=ON && cmake --build build |
| else |
| cmake -H. -Bbuild -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -DCURL_DISABLE_LDAP=ON -DCURL_DISABLE_LDAPS=ON && cmake --build build |
| fi |
| fi |
| - | |
| set -eo pipefail |
| if [ "$T" = "distcheck" ]; then |
| # find BOM markers and exit if we do |
| ! git grep `printf '\xef\xbb\xbf'` |
| ./configure |
| make |
| ./maketgz 99.98.97 |
| # verify in-tree build - and install it |
| (tar xf curl-99.98.97.tar.gz && \ |
| cd curl-99.98.97 && \ |
| ./configure --prefix=$HOME/temp && \ |
| make && \ |
| make TFLAGS=1 test && \ |
| make install) |
| # basic check of the installed files |
| bash scripts/installcheck.sh $HOME/temp |
| rm -rf curl-99.98.97 |
| # verify out-of-tree build |
| (tar xf curl-99.98.97.tar.gz && \ |
| touch curl-99.98.97/docs/{cmdline-opts,libcurl}/Makefile.inc && \ |
| mkdir build && \ |
| cd build && \ |
| ../curl-99.98.97/configure && \ |
| make && \ |
| make TFLAGS='-p 1 1139' test) |
| # verify cmake build |
| rm -rf curl-99.98.97 |
| (tar xf curl-99.98.97.tar.gz && \ |
| cd curl-99.98.97 && \ |
| mkdir build && \ |
| cd build && \ |
| cmake .. && \ |
| make) |
| fi |
| - | |
| set -eo pipefail |
| if [ "$T" = "fuzzer" ]; then |
| # Download the fuzzer to a temporary folder |
| ./tests/fuzz/download_fuzzer.sh /tmp/curl_fuzzer |
| |
| export CURLSRC=$PWD |
| |
| # Run the mainline fuzzer test |
| pushd /tmp/curl_fuzzer |
| ./mainline.sh ${CURLSRC} |
| popd |
| fi |
| - | |
| if [ "$T" = "scan-build" ]; then |
| scan-build ./configure --enable-debug --enable-werror $C |
| scan-build --status-bugs make && scan-build --status-bugs make examples |
| fi |
| |
| # whitelist branches to avoid testing feature branches twice (as branch and as pull request) |
| branches: |
| only: |
| - master |
| - /\/ci$/ |
| |
| notifications: |
| email: false |