123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665 |
- language: c
- sudo: required
- cache:
- directories:
- - $HOME/wolfssl-4.0.0-stable
- - $HOME/mesalink-1.0.0
- - $HOME/nghttp2-1.39.2
- 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=novalgrind BORINGSSL=yes QUICHE="yes" C="--with-ssl=$HOME/boringssl --with-quiche=$HOME/quiche/target/release --enable-alt-svc" LD_LIBRARY_PATH=/home/travis/boringssl/lib:$HOME/quiche/target/release:/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=novalgrind NGTCP2=yes C="--with-ssl=$HOME/ngbuild --with-ngtcp2=$HOME/ngbuild --with-nghttp3=$HOME/ngbuild --enable-alt-svc" NOTESTS=
- # - 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 [ "$NGTCP2" = yes ]; then
- (cd $HOME &&
- git clone --depth 1 -b openssl-quic-draft-22 https://github.com/tatsuhiro-t/openssl possl &&
- cd possl &&
- ./config enable-tls1_3 --prefix=$HOME/ngbuild &&
- make && make install_sw &&
- cd .. &&
- git clone --depth 1 https://github.com/ngtcp2/nghttp3
- cd nghttp3 &&
- autoreconf -i &&
- ./configure --prefix=$HOME/ngbuild --enable-lib-only &&
- make && make install &&
- cd .. &&
- git clone --depth 1 -b draft-22 https://github.com/ngtcp2/ngtcp2 &&
- cd ngtcp2 &&
- autoreconf -i &&
- ./configure PKG_CONFIG_PATH=$HOME/ngbuild/lib/pkgconfig LDFLAGS="-Wl,-rpath,$HOME/ngbuild/lib" --prefix=$HOME/ngbuild &&
- make && make install)
- fi
- - |
- 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 &&
- cp ../build/crypto/libcrypto.so . &&
- cp ../build/ssl/libssl.so . &&
- echo "BoringSSL lib dir: "`pwd` &&
- cd ../build &&
- make clean && rm -f CMakeCache.txt &&
- CXX="g++" CC="gcc" cmake -DCMAKE_POSITION_INDEPENDENT_CODE=on .. &&
- make &&
- export LIBS=-lpthread )
- fi
- - |
- if [ "$TRAVIS_OS_NAME" = linux -a "$QUICHE" ]; then
- (cd $HOME &&
- git clone --depth=1 https://github.com/cloudflare/quiche.git &&
- curl https://sh.rustup.rs -sSf | sh -s -- -y &&
- source $HOME/.cargo/env &&
- cd quiche &&
- QUICHE_BSSL_PATH=$HOME/boringssl cargo build -v --release --features pkg-config-meta)
- 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.39.2/Makefile ]; then
- (cd $HOME && \
- curl -L https://github.com/nghttp2/nghttp2/releases/download/v1.39.2/nghttp2-1.39.2.tar.gz |
- tar xzf - && \
- cd nghttp2-1.39.2 && \
- 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.39.2 && 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 200 300 500 700 800 900 1000 1100 1200 1302 1400 1502 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 --enable-werror $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
|