.travis.yml 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410
  1. #***************************************************************************
  2. # _ _ ____ _
  3. # Project ___| | | | _ \| |
  4. # / __| | | | |_) | |
  5. # | (__| |_| | _ <| |___
  6. # \___|\___/|_| \_\_____|
  7. #
  8. # Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
  9. #
  10. # This software is licensed as described in the file COPYING, which
  11. # you should have received as part of this distribution. The terms
  12. # are also available at https://curl.haxx.se/docs/copyright.html.
  13. #
  14. # You may opt to use, copy, modify, merge, publish, distribute and/or sell
  15. # copies of the Software, and permit persons to whom the Software is
  16. # furnished to do so, under the terms of the COPYING file.
  17. #
  18. # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
  19. # KIND, either express or implied.
  20. #
  21. ###########################################################################
  22. language: c
  23. os: linux
  24. dist: bionic
  25. cache:
  26. directories:
  27. - $HOME/wolfssl-4.4.0-stable
  28. - $HOME/mesalink-1.0.0
  29. - $HOME/nghttp2-1.39.2
  30. env:
  31. global:
  32. - LD_LIBRARY_PATH=/usr/local/lib
  33. addons:
  34. apt: &common_apt
  35. config:
  36. retries: true
  37. packages: &common_packages
  38. - cmake
  39. - valgrind
  40. - libev-dev
  41. - libc-ares-dev
  42. - g++-8
  43. - stunnel4
  44. - libidn2-dev
  45. - gnutls-bin
  46. - python-impacket
  47. jobs:
  48. include:
  49. - env:
  50. - T=normal C="--with-gssapi --with-libssh2" CHECKSRC=1
  51. - OVERRIDE_CC="CC=gcc-8" OVERRIDE_CXX="CXX=g++-8"
  52. addons:
  53. apt:
  54. <<: *common_apt
  55. packages:
  56. - *common_packages
  57. - krb5-user
  58. - libssh2-1-dev
  59. - env:
  60. - T=normal C=--with-libssh
  61. # Avoid bionic, its pre-release libssh version triggers deprecation warnings.
  62. dist: focal
  63. addons:
  64. apt:
  65. <<: *common_apt
  66. packages:
  67. - cmake
  68. - valgrind
  69. - libev-dev
  70. - libc-ares-dev
  71. - g++-8
  72. - stunnel4
  73. - libidn2-dev
  74. - gnutls-bin
  75. # The above list is common_packages minus impacket.
  76. - libssh-dev
  77. - env:
  78. - T=normal C="--enable-ares"
  79. - OVERRIDE_CC="CC=gcc-8" OVERRIDE_CXX="CXX=g++-8"
  80. - env:
  81. - T=normal C="--enable-mqtt"
  82. - env:
  83. - T=normal C="--disable-proxy"
  84. - env:
  85. - T=normal C="--disable-verbose" CPPFLAGS="-Wno-variadic-macros" NOTESTS=1
  86. - OVERRIDE_CC="CC=gcc-8" OVERRIDE_CXX="CXX=g++-8"
  87. addons:
  88. apt:
  89. <<: *common_apt
  90. packages:
  91. - *common_packages
  92. - libpsl-dev
  93. - libbrotli-dev
  94. - libzstd-dev
  95. - env:
  96. - T=novalgrind BORINGSSL=yes C="--with-ssl=$HOME/boringssl" LD_LIBRARY_PATH=/home/travis/boringssl/lib:/usr/local/lib
  97. - OVERRIDE_CC="CC=gcc-8" OVERRIDE_CXX="CXX=g++-8"
  98. before_install:
  99. - eval "$(gimme stable)"; gimme --list # Install latest Go (for boringssl)
  100. - env:
  101. - T=novalgrind QUICHE="yes" C="--with-ssl=$HOME/quiche/deps/boringssl/src --with-quiche=$HOME/quiche/target/release --enable-alt-svc" LD_LIBRARY_PATH=$HOME/quiche/target/release:/usr/local/lib
  102. - OVERRIDE_CC="CC=gcc-8" OVERRIDE_CXX="CXX=g++-8"
  103. addons:
  104. apt:
  105. <<: *common_apt
  106. packages:
  107. - *common_packages
  108. - libpsl-dev
  109. - libbrotli-dev
  110. - libzstd-dev
  111. - env:
  112. - T=novalgrind NGTCP2=yes C="--with-ssl=$HOME/ngbuild --with-ngtcp2=$HOME/ngbuild --with-nghttp3=$HOME/ngbuild --enable-alt-svc" NOTESTS=
  113. - OVERRIDE_CC="CC=gcc-8" OVERRIDE_CXX="CXX=g++-8"
  114. addons:
  115. apt:
  116. <<: *common_apt
  117. packages:
  118. - *common_packages
  119. - libpsl-dev
  120. - libbrotli-dev
  121. - libzstd-dev
  122. - env:
  123. - T=novalgrind NGTCP2=yes GNUTLS=yes C="PKG_CONFIG_PATH=$HOME/ngbuild --without-ssl --with-gnutls=$HOME/ngbuild --with-ngtcp2=$HOME/ngbuild --with-nghttp3=$HOME/ngbuild --enable-alt-svc" NOTESTS=
  124. - OVERRIDE_CC="CC=gcc-8" OVERRIDE_CXX="CXX=g++-8"
  125. addons:
  126. apt:
  127. <<: *common_apt
  128. packages:
  129. - *common_packages
  130. - libpsl-dev
  131. - libbrotli-dev
  132. - libzstd-dev
  133. - autogen
  134. - automake
  135. - autopoint
  136. - bison
  137. - gperf
  138. - libgmp-dev
  139. - libopts25-dev
  140. - libp11-kit-dev
  141. - libtasn1-6-dev
  142. - nettle-dev
  143. - env:
  144. - T=debug-wolfssl C="--with-wolfssl --without-ssl"
  145. - OVERRIDE_CC="CC=gcc-8" OVERRIDE_CXX="CXX=g++-8"
  146. addons:
  147. apt:
  148. <<: *common_apt
  149. packages:
  150. - *common_packages
  151. - libpsl-dev
  152. - libbrotli-dev
  153. - libzstd-dev
  154. - env:
  155. - T=debug-mesalink C="--with-mesalink --without-ssl" MESALINK=yes
  156. - OVERRIDE_CC="CC=gcc-8" OVERRIDE_CXX="CXX=g++-8"
  157. addons:
  158. apt:
  159. <<: *common_apt
  160. packages:
  161. - *common_packages
  162. - libpsl-dev
  163. - libbrotli-dev
  164. - libzstd-dev
  165. - env:
  166. - T=debug
  167. - &clang OVERRIDE_CC="CC=clang-9" OVERRIDE_CXX="CXX=clang++-9"
  168. compiler: clang
  169. addons:
  170. apt:
  171. <<: *common_apt
  172. packages:
  173. - &clang_packages [*common_packages, clang-9]
  174. - libpsl-dev
  175. - libbrotli-dev
  176. - libzstd-dev
  177. - env:
  178. - T=debug C="--enable-alt-svc"
  179. - *clang
  180. compiler: clang
  181. addons:
  182. apt:
  183. <<: *common_apt
  184. packages:
  185. - *clang_packages
  186. - libpsl-dev
  187. - libbrotli-dev
  188. - libzstd-dev
  189. - env:
  190. - T=debug C="--with-mbedtls --without-ssl"
  191. - *clang
  192. compiler: clang
  193. addons:
  194. apt:
  195. <<: *common_apt
  196. packages:
  197. - *clang_packages
  198. - libpsl-dev
  199. - libbrotli-dev
  200. - libzstd-dev
  201. - libmbedtls-dev
  202. - env:
  203. - T=debug C="--with-gnutls --without-ssl"
  204. - *clang
  205. compiler: clang
  206. addons:
  207. apt:
  208. <<: *common_apt
  209. packages:
  210. - *clang_packages
  211. - libgnutls28-dev
  212. - libpsl-dev
  213. - libbrotli-dev
  214. - libzstd-dev
  215. - env:
  216. - T=debug C="--with-nss --without-ssl" NOTESTS=1 CPPFLAGS="-isystem /usr/include/nss"
  217. - *clang
  218. compiler: clang
  219. addons:
  220. apt:
  221. <<: *common_apt
  222. packages:
  223. - *clang_packages
  224. - libnss3-dev
  225. - libpsl-dev
  226. - libbrotli-dev
  227. - libzstd-dev
  228. - env:
  229. - T=iconv
  230. - OVERRIDE_CC="CC=gcc-8" OVERRIDE_CXX="CXX=g++-8"
  231. - env:
  232. - T=cmake BORINGSSL=yes QUICHE=yes C="-DUSE_QUICHE=1 -DOPENSSL_ROOT_DIR=$HOME/boringssl -DCURL_BROTLI=1 -DCURL_ZSTD=1"
  233. - OVERRIDE_CC="CC=gcc-8" OVERRIDE_CXX="CXX=g++-8"
  234. - PKG_CONFIG_PATH="$HOME/quiche/target/release"
  235. before_install:
  236. - eval "$(gimme stable)"; gimme --list # Install latest Go (for boringssl)
  237. addons:
  238. apt:
  239. <<: *common_apt
  240. packages:
  241. - *common_packages
  242. - libpsl-dev
  243. - libbrotli-dev
  244. - libzstd-dev
  245. - env:
  246. - T=cmake NGTCP2=yes C="-DUSE_NGTCP2=ON -DCURL_BROTLI=1 -DCURL_ZSTD=1"
  247. - *clang
  248. - PKG_CONFIG_PATH="$HOME/ngbuild/lib/pkgconfig"
  249. compiler: clang
  250. addons:
  251. apt:
  252. <<: *common_apt
  253. packages:
  254. - *clang_packages
  255. - libpsl-dev
  256. - libbrotli-dev
  257. - libzstd-dev
  258. - env:
  259. - T=torture
  260. - OVERRIDE_CC="CC=gcc-8" OVERRIDE_CXX="CXX=g++-8"
  261. addons:
  262. apt:
  263. <<: *common_apt
  264. packages:
  265. - *common_packages
  266. - lcov
  267. - libpsl-dev
  268. - libbrotli-dev
  269. - libzstd-dev
  270. - libssh2-1-dev
  271. - env:
  272. - T=distcheck
  273. - OVERRIDE_CC="CC=gcc-8" OVERRIDE_CXX="CXX=g++-8"
  274. addons:
  275. apt:
  276. <<: *common_apt
  277. packages:
  278. - *common_packages
  279. - libpsl-dev
  280. - libbrotli-dev
  281. - libzstd-dev
  282. - env:
  283. - T=fuzzer
  284. - *clang
  285. compiler: clang
  286. addons:
  287. apt:
  288. <<: *common_apt
  289. packages:
  290. - *clang_packages
  291. - libpsl-dev
  292. - libbrotli-dev
  293. - libzstd-dev
  294. - env:
  295. - T=tidy
  296. - *clang
  297. compiler: clang
  298. addons:
  299. apt:
  300. <<: *common_apt
  301. packages:
  302. - *clang_packages
  303. - clang-tidy-9
  304. - libpsl-dev
  305. - libbrotli-dev
  306. - libzstd-dev
  307. - env:
  308. - T=scan-build
  309. - *clang
  310. compiler: clang
  311. addons:
  312. apt:
  313. <<: *common_apt
  314. packages:
  315. - *clang_packages
  316. - libpsl-dev
  317. - libbrotli-dev
  318. - libzstd-dev
  319. - env:
  320. - 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"
  321. - *clang
  322. compiler: clang
  323. addons:
  324. apt:
  325. <<: *common_apt
  326. packages:
  327. - *clang_packages
  328. - libpsl-dev
  329. - libbrotli-dev
  330. - libzstd-dev
  331. - env:
  332. - T=debug C="--enable-alt-svc"
  333. - OVERRIDE_CC="CC=gcc-8" OVERRIDE_CXX="CXX=g++-8"
  334. arch: arm64
  335. addons:
  336. apt:
  337. <<: *common_apt
  338. packages:
  339. - *common_packages
  340. - libpsl-dev
  341. - libbrotli-dev
  342. - libzstd-dev
  343. - libev-dev
  344. - libssl-dev
  345. - libtool
  346. - pkg-config
  347. - zlib1g-dev
  348. - env:
  349. - T=debug C="--enable-alt-svc"
  350. - OVERRIDE_CC="CC=gcc-8" OVERRIDE_CXX="CXX=g++-8"
  351. arch: ppc64le
  352. addons:
  353. apt:
  354. <<: *common_apt
  355. packages:
  356. - *common_packages
  357. - libpsl-dev
  358. - libbrotli-dev
  359. - libzstd-dev
  360. - libev-dev
  361. - libssl-dev
  362. - libtool
  363. - pkg-config
  364. - zlib1g-dev
  365. - env:
  366. - T=debug C="--enable-alt-svc"
  367. - OVERRIDE_CC="CC=gcc-8" OVERRIDE_CXX="CXX=g++-8"
  368. arch: s390x
  369. addons:
  370. apt:
  371. <<: *common_apt
  372. packages:
  373. - *common_packages
  374. - libpsl-dev
  375. - libbrotli-dev
  376. - libzstd-dev
  377. - libev-dev
  378. - libssl-dev
  379. - libtool
  380. - pkg-config
  381. - zlib1g-dev
  382. before_install:
  383. - export "${OVERRIDE_CC-blank=}"
  384. - export "${OVERRIDE_CXX-blank=}"
  385. install:
  386. - if [ "$T" = "coverage" ]; then pip2 install --user cpp-coveralls; fi
  387. # before_script and script:
  388. # Travis isn't reliable catching errors in inline script commands (#3730).
  389. # Do not add anything here, instead add to the respective script.
  390. before_script:
  391. - ./scripts/travis/before_script.sh || travis_terminate 1
  392. script:
  393. - ./scripts/travis/script.sh || travis_terminate 1
  394. # select branches to avoid testing feature branches twice (as branch and as pull request)
  395. branches:
  396. only:
  397. - master
  398. - /\/ci$/
  399. notifications:
  400. email: false