config.yml 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544
  1. #***************************************************************************
  2. # _ _ ____ _
  3. # Project ___| | | | _ \| |
  4. # / __| | | | |_) | |
  5. # | (__| |_| | _ <| |___
  6. # \___|\___/|_| \_\_____|
  7. #
  8. # Copyright (C) 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.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. # SPDX-License-Identifier: curl
  22. #
  23. ###########################################################################
  24. # View these jobs in the browser: https://app.circleci.com/pipelines/github/curl/curl
  25. #
  26. # The macOS builds use M1 (ARM) machines for platform diversity.
  27. # See https://circleci.com/docs/configuration-reference/#macos-execution-environment
  28. # Use the latest 2.1 version of CircleCI pipeline process engine. See: https://circleci.com/docs/2.0/configuration-reference
  29. version: 2.1
  30. commands:
  31. configure:
  32. steps:
  33. - run:
  34. command: |
  35. autoreconf -fi
  36. ./configure --enable-warnings --enable-werror --with-openssl
  37. configure-openssl-no-verbose:
  38. steps:
  39. - run:
  40. command: |
  41. autoreconf -fi
  42. ./configure --disable-verbose --enable-werror --with-openssl
  43. configure-no-proxy:
  44. steps:
  45. - run:
  46. command: |
  47. autoreconf -fi
  48. ./configure --disable-proxy --enable-werror --with-openssl
  49. configure-macos-normal:
  50. steps:
  51. - run:
  52. command: |
  53. autoreconf -fi
  54. ./configure --enable-warnings --enable-websockets --without-ssl CFLAGS='-Wno-vla -mmacosx-version-min=10.9' CPPFLAGS="-I$(brew --prefix libpsl)/include" LDFLAGS="-L$(brew --prefix libpsl)/lib -L$(brew --prefix icu4c)/lib" LIBS="-licuuc -licudata"
  55. configure-macos-debug:
  56. steps:
  57. - run:
  58. command: |
  59. autoreconf -fi
  60. ./configure --enable-warnings --enable-websockets --without-ssl --enable-debug CPPFLAGS="-I$(brew --prefix libpsl)/include" CFLAGS='-Wno-vla -mmacosx-version-min=10.9' LDFLAGS="-L$(brew --prefix libpsl)/lib -L$(brew --prefix icu4c)/lib" LIBS="-licuuc -licudata"
  61. configure-macos-libssh2:
  62. steps:
  63. - run:
  64. command: |
  65. autoreconf -fi
  66. ./configure --enable-warnings --enable-websockets --without-ssl --with-libssh2=/opt/homebrew/opt/libssh2 --enable-debug CPPFLAGS="-I$(brew --prefix libpsl)/include" CFLAGS='-Wno-vla -mmacosx-version-min=10.9' LDFLAGS="-L$(brew --prefix libpsl)/lib -L$(brew --prefix icu4c)/lib" LIBS="-licuuc -licudata"
  67. configure-macos-libssh-c-ares:
  68. steps:
  69. - run:
  70. command: |
  71. autoreconf -fi
  72. ./configure --enable-warnings --enable-websockets --with-openssl --with-libssh --enable-ares --enable-debug PKG_CONFIG_PATH="$(brew --prefix openssl)/lib/pkgconfig" CPPFLAGS="-I$(brew --prefix libpsl)/include" CFLAGS='-Wno-vla -mmacosx-version-min=10.9' LDFLAGS="-L$(brew --prefix libpsl)/lib -L$(brew --prefix icu4c)/lib" LIBS="-licuuc -licudata"
  73. configure-macos-libssh:
  74. steps:
  75. - run:
  76. command: |
  77. autoreconf -fi
  78. ./configure --enable-warnings --enable-websockets --with-openssl --with-libssh --enable-debug PKG_CONFIG_PATH="$(brew --prefix openssl)/lib/pkgconfig" CPPFLAGS="-I$(brew --prefix libpsl)/include" CFLAGS='-Wno-vla -mmacosx-version-min=10.9' LDFLAGS="-L$(brew --prefix libpsl)/lib -L$(brew --prefix icu4c)/lib" LIBS="-licuuc -licudata" || tail -1000 config.log
  79. configure-macos-c-ares:
  80. steps:
  81. - run:
  82. command: |
  83. autoreconf -fi
  84. ./configure --enable-warnings --enable-websockets --without-ssl --enable-ares --enable-debug CPPFLAGS="-I$(brew --prefix libpsl)/include" CFLAGS='-Wno-vla -mmacosx-version-min=10.9' LDFLAGS="-L$(brew --prefix libpsl)/lib -L$(brew --prefix icu4c)/lib" LIBS="-licuuc -licudata"
  85. configure-macos-http-only:
  86. steps:
  87. - run:
  88. command: |
  89. autoreconf -fi
  90. ./configure --enable-warnings --enable-maintainer-mode --disable-dict --disable-file --disable-ftp --disable-gopher --disable-imap --disable-ldap --disable-mqtt --disable-pop3 --disable-rtsp --disable-smb --disable-smtp --disable-telnet --disable-tftp --disable-unix-sockets --disable-shared --without-brotli --without-gssapi --without-libidn2 --without-libpsl --without-librtmp --without-libssh2 --without-nghttp2 --without-ssl --without-zlib --enable-debug CFLAGS='-Wno-vla -mmacosx-version-min=10.15'
  91. configure-macos-securetransport-http2:
  92. steps:
  93. - run:
  94. command: |
  95. autoreconf -fi
  96. ./configure --enable-warnings --enable-websockets --with-secure-transport CPPFLAGS="-I$(brew --prefix libpsl)/include" CFLAGS='-Wno-vla -mmacosx-version-min=10.8' LDFLAGS="-L$(brew --prefix libpsl)/lib -L$(brew --prefix icu4c)/lib" LIBS="-licuuc -licudata"
  97. configure-macos-openssl-http2:
  98. steps:
  99. - run:
  100. command: |
  101. autoreconf -fi
  102. ./configure --enable-warnings --enable-websockets --with-openssl --enable-debug PKG_CONFIG_PATH="$(brew --prefix openssl)/lib/pkgconfig" CPPFLAGS="-I$(brew --prefix libpsl)/include" CFLAGS='-Wno-vla -mmacosx-version-min=10.9' LDFLAGS="-L$(brew --prefix libpsl)/lib -L$(brew --prefix icu4c)/lib" LIBS="-licuuc -licudata"
  103. configure-macos-libressl-http2:
  104. steps:
  105. - run:
  106. command: |
  107. autoreconf -fi
  108. ./configure --enable-warnings --enable-websockets --with-openssl --enable-debug PKG_CONFIG_PATH="$(brew --prefix libressl)/lib/pkgconfig" CPPFLAGS="-I$(brew --prefix libpsl)/include" CFLAGS='-Wno-vla -mmacosx-version-min=10.9' LDFLAGS="-L$(brew --prefix libpsl)/lib -L$(brew --prefix icu4c)/lib" LIBS="-licuuc -licudata"
  109. configure-macos-torture:
  110. steps:
  111. - run:
  112. command: |
  113. autoreconf -fi
  114. ./configure --enable-warnings --enable-websockets --disable-shared --disable-threaded-resolver --with-openssl --enable-debug PKG_CONFIG_PATH="$(brew --prefix openssl)/lib/pkgconfig" CPPFLAGS="-I$(brew --prefix libpsl)/include" CFLAGS='-Wno-vla -mmacosx-version-min=10.9' LDFLAGS="-L$(brew --prefix libpsl)/lib -L$(brew --prefix icu4c)/lib" LIBS="-licuuc -licudata"
  115. configure-macos-torture-ftp:
  116. steps:
  117. - run:
  118. command: |
  119. autoreconf -fi
  120. ./configure --enable-warnings --enable-websockets --disable-shared --disable-threaded-resolver --with-openssl --enable-debug PKG_CONFIG_PATH="$(brew --prefix openssl)/lib/pkgconfig" CPPFLAGS="-I$(brew --prefix libpsl)/include" CFLAGS='-Wno-vla -mmacosx-version-min=10.9' LDFLAGS="-L$(brew --prefix libpsl)/lib -L$(brew --prefix icu4c)/lib" LIBS="-licuuc -licudata"
  121. install-cares:
  122. steps:
  123. - run:
  124. command: |
  125. sudo apt-get update && sudo apt-get install -y libc-ares-dev
  126. install-libssh:
  127. steps:
  128. - run:
  129. command: |
  130. sudo apt-get update && sudo apt-get install -y libssh-dev
  131. install-deps:
  132. steps:
  133. - run:
  134. command: |
  135. sudo apt-get update && sudo apt-get install -y libpsl-dev libbrotli-dev libzstd-dev zlib1g-dev python3-pip libpsl-dev
  136. sudo python3 -m pip install impacket
  137. install-deps-brew:
  138. steps:
  139. - run:
  140. command: |
  141. # Drop libressl as long as we're not trying to build it
  142. echo libtool autoconf automake pkg-config nghttp2 libssh2 openssl libssh c-ares libpsl icu4c | xargs -Ix -n1 echo brew '"x"' > /tmp/Brewfile
  143. while [ $? -eq 0 ]; do for i in 1 2 3; do brew update && brew bundle install --no-lock --file /tmp/Brewfile && break 2 || { echo Error: wait to try again; sleep 10; } done; false Too many retries; done
  144. sudo python3 -m pip install impacket
  145. configure-libssh:
  146. steps:
  147. - run:
  148. command: |
  149. autoreconf -fi
  150. ./configure --enable-warnings --enable-werror --with-openssl --with-libssh
  151. install-wolfssl:
  152. steps:
  153. - run:
  154. command: |
  155. WOLFSSL_VER=5.6.0
  156. curl -LOsSf --retry 6 --retry-connrefused --max-time 999 https://github.com/wolfSSL/wolfssl/archive/v$WOLFSSL_VER-stable.tar.gz
  157. tar -xzf v$WOLFSSL_VER-stable.tar.gz
  158. cd wolfssl-$WOLFSSL_VER-stable
  159. ./autogen.sh
  160. ./configure --enable-tls13 --enable-all --enable-harden --prefix=$HOME/wssl
  161. make install
  162. install-wolfssh:
  163. steps:
  164. - run:
  165. command: |
  166. WOLFSSH_VER=1.4.12
  167. curl -LOsSf --retry 6 --retry-connrefused --max-time 999 https://github.com/wolfSSL/wolfssh/archive/v$WOLFSSH_VER-stable.tar.gz
  168. tar -xzf v$WOLFSSH_VER-stable.tar.gz
  169. cd wolfssh-$WOLFSSH_VER-stable
  170. ./autogen.sh
  171. ./configure --with-wolfssl=$HOME/wssl --prefix=$HOME/wssh --enable-scp --enable-sftp --disable-examples
  172. make install
  173. configure-cares:
  174. steps:
  175. - run:
  176. command: |
  177. autoreconf -fi
  178. ./configure --enable-warnings --enable-werror --with-openssl --enable-ares
  179. configure-wolfssh:
  180. steps:
  181. - run:
  182. command: |
  183. autoreconf -fi
  184. LDFLAGS="-Wl,-rpath,$HOME/wssh/lib" ./configure --enable-warnings --enable-werror --with-wolfssl=$HOME/wssl --with-wolfssh=$HOME/wssh
  185. configure-cares-debug:
  186. steps:
  187. - run:
  188. command: |
  189. autoreconf -fi
  190. ./configure --enable-debug --enable-werror --with-openssl --enable-ares
  191. build:
  192. steps:
  193. - run: make -j3 V=1
  194. - run: make -j3 V=1 examples
  195. build-macos:
  196. steps:
  197. - run: make -j5 V=1
  198. - run: make -j5 V=1 examples
  199. test:
  200. steps:
  201. - run: make -j3 V=1 test-ci
  202. test-macos:
  203. steps:
  204. - run: make -j5 V=1 test-ci
  205. test-torture:
  206. steps:
  207. - run: make -j5 V=1 test-ci TFLAGS="-n -t --shallow=25 !FTP"
  208. test-torture-ftp:
  209. steps:
  210. # Test 250 takes too long, causing Circle CI to kill the job
  211. - run: make -j5 V=1 test-ci TFLAGS="-n -t --shallow=20 FTP !250 !251"
  212. executors:
  213. ubuntu:
  214. machine:
  215. image: ubuntu-2004:2024.01.1
  216. jobs:
  217. basic:
  218. executor: ubuntu
  219. steps:
  220. - checkout
  221. - install-deps
  222. - configure
  223. - build
  224. - test
  225. no-verbose:
  226. executor: ubuntu
  227. steps:
  228. - checkout
  229. - install-deps
  230. - configure-openssl-no-verbose
  231. - build
  232. wolfssh:
  233. executor: ubuntu
  234. steps:
  235. - checkout
  236. - install-deps
  237. - install-wolfssl
  238. - install-wolfssh
  239. - configure-wolfssh
  240. - build
  241. no-proxy:
  242. executor: ubuntu
  243. steps:
  244. - checkout
  245. - install-deps
  246. - configure-no-proxy
  247. - build
  248. - test
  249. cares:
  250. executor: ubuntu
  251. steps:
  252. - checkout
  253. - install-deps
  254. - install-cares
  255. - configure-cares
  256. - build
  257. - test
  258. libssh:
  259. executor: ubuntu
  260. steps:
  261. - checkout
  262. - install-deps
  263. - install-libssh
  264. - configure-libssh
  265. - build
  266. - test
  267. arm:
  268. machine:
  269. image: ubuntu-2004:2024.01.1
  270. resource_class: arm.medium
  271. steps:
  272. - checkout
  273. - install-deps
  274. - configure
  275. - build
  276. - test
  277. arm-cares:
  278. machine:
  279. image: ubuntu-2004:2024.01.1
  280. resource_class: arm.medium
  281. steps:
  282. - checkout
  283. - install-deps
  284. - install-cares
  285. - configure-cares-debug
  286. - build
  287. - test
  288. macos-arm-normal:
  289. macos:
  290. xcode: 15.0.0
  291. resource_class: macos.m1.medium.gen1
  292. steps:
  293. - checkout
  294. - install-deps-brew
  295. - configure-macos-normal
  296. - build-macos
  297. - test-macos
  298. macos-arm-debug:
  299. macos:
  300. xcode: 15.0.0
  301. resource_class: macos.m1.medium.gen1
  302. steps:
  303. - checkout
  304. - install-deps-brew
  305. - configure-macos-debug
  306. - build-macos
  307. - test-macos
  308. macos-arm-libssh2:
  309. macos:
  310. xcode: 15.0.0
  311. resource_class: macos.m1.medium.gen1
  312. steps:
  313. - checkout
  314. - install-deps-brew
  315. - configure-macos-libssh2
  316. - build-macos
  317. - test-macos
  318. macos-arm-libssh-c-ares:
  319. macos:
  320. xcode: 15.0.0
  321. resource_class: macos.m1.medium.gen1
  322. steps:
  323. - checkout
  324. - install-deps-brew
  325. - configure-macos-libssh-c-ares
  326. - build-macos
  327. - test-macos
  328. macos-arm-libssh:
  329. macos:
  330. xcode: 15.0.0
  331. resource_class: macos.m1.medium.gen1
  332. steps:
  333. - checkout
  334. - install-deps-brew
  335. - configure-macos-libssh
  336. - build-macos
  337. - test-macos
  338. macos-arm-c-ares:
  339. macos:
  340. xcode: 15.0.0
  341. resource_class: macos.m1.medium.gen1
  342. steps:
  343. - checkout
  344. - install-deps-brew
  345. - configure-macos-c-ares
  346. - build-macos
  347. - test-macos
  348. macos-arm-http-only:
  349. macos:
  350. xcode: 15.0.0
  351. resource_class: macos.m1.medium.gen1
  352. steps:
  353. - checkout
  354. - install-deps-brew
  355. - configure-macos-http-only
  356. - build-macos
  357. - test-macos
  358. macos-arm-http-securetransport-http2:
  359. macos:
  360. xcode: 15.0.0
  361. resource_class: macos.m1.medium.gen1
  362. steps:
  363. - checkout
  364. - install-deps-brew
  365. - configure-macos-securetransport-http2
  366. - build-macos
  367. - test-macos
  368. macos-arm-http-openssl-http2:
  369. macos:
  370. xcode: 15.0.0
  371. resource_class: macos.m1.medium.gen1
  372. steps:
  373. - checkout
  374. - install-deps-brew
  375. - configure-macos-openssl-http2
  376. - build-macos
  377. - test-macos
  378. macos-arm-http-libressl-http2:
  379. macos:
  380. xcode: 15.0.0
  381. resource_class: macos.m1.medium.gen1
  382. steps:
  383. - checkout
  384. - install-deps-brew
  385. - configure-macos-libressl-http2
  386. - build-macos
  387. - test-macos
  388. macos-arm-http-torture:
  389. macos:
  390. xcode: 15.0.0
  391. resource_class: macos.m1.medium.gen1
  392. steps:
  393. - checkout
  394. - install-deps-brew
  395. - configure-macos-torture
  396. - build-macos
  397. - test-torture
  398. macos-arm-http-torture-ftp:
  399. macos:
  400. xcode: 15.0.0
  401. resource_class: macos.m1.medium.gen1
  402. steps:
  403. - checkout
  404. - install-deps-brew
  405. - configure-macos-torture-ftp
  406. - build-macos
  407. - test-torture-ftp
  408. workflows:
  409. x86-openssl:
  410. jobs:
  411. - basic
  412. openssl-c-ares:
  413. jobs:
  414. - cares
  415. openssl-libssh:
  416. jobs:
  417. - libssh
  418. openssl-no-proxy:
  419. jobs:
  420. - no-proxy
  421. openssl-no-verbose:
  422. jobs:
  423. - no-verbose
  424. wolfssl-wolfssh:
  425. jobs:
  426. - wolfssh
  427. arm-openssl:
  428. jobs:
  429. - arm
  430. arm-openssl-c-ares:
  431. jobs:
  432. - arm-cares
  433. macos-arm-normal:
  434. jobs:
  435. - macos-arm-normal
  436. macos-arm-debug:
  437. jobs:
  438. - macos-arm-debug
  439. macos-arm-libssh2:
  440. jobs:
  441. - macos-arm-libssh2
  442. macos-arm-libssh-c-ares:
  443. jobs:
  444. - macos-arm-libssh-c-ares
  445. macos-arm-libssh:
  446. jobs:
  447. - macos-arm-libssh
  448. macos-arm-c-ares:
  449. jobs:
  450. - macos-arm-c-ares
  451. macos-arm-http-only:
  452. jobs:
  453. - macos-arm-http-only
  454. macos-arm-http-securetransport-http2:
  455. jobs:
  456. - macos-arm-http-securetransport-http2
  457. macos-arm-http-openssl-http2:
  458. jobs:
  459. - macos-arm-http-openssl-http2
  460. # There are problem linking with LibreSSL on the CI boxes that prevent this
  461. # from working.
  462. # macos-arm-http-libressl-http2:
  463. # jobs:
  464. # - macos-arm-http-libressl-http2
  465. macos-arm-http-torture:
  466. jobs:
  467. - macos-arm-http-torture
  468. macos-arm-http-torture-ftp:
  469. jobs:
  470. - macos-arm-http-torture-ftp