mirror of
https://github.com/curl/curl.git
synced 2024-12-27 06:59:43 +08:00
972bdffb9f
Closes
603 lines
20 KiB
YAML
603 lines
20 KiB
YAML
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
|