non-native.yml 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. # Copyright (C) Viktor Szakats
  2. #
  3. # SPDX-License-Identifier: curl
  4. name: non-native
  5. on:
  6. push:
  7. branches:
  8. - master
  9. - '*/ci'
  10. paths-ignore:
  11. - '**/*.md'
  12. - '.azure-pipelines.yml'
  13. - '.circleci/**'
  14. - '.cirrus.yml'
  15. - 'appveyor.*'
  16. - 'packages/**'
  17. - 'plan9/**'
  18. - 'projects/**'
  19. - 'winbuild/**'
  20. pull_request:
  21. branches:
  22. - master
  23. paths-ignore:
  24. - '**/*.md'
  25. - '.azure-pipelines.yml'
  26. - '.circleci/**'
  27. - '.cirrus.yml'
  28. - 'appveyor.*'
  29. - 'packages/**'
  30. - 'plan9/**'
  31. - 'projects/**'
  32. - 'winbuild/**'
  33. concurrency:
  34. group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
  35. cancel-in-progress: true
  36. permissions: {}
  37. jobs:
  38. netbsd:
  39. name: 'NetBSD (cmake, openssl, clang)'
  40. runs-on: ubuntu-latest
  41. timeout-minutes: 30
  42. strategy:
  43. matrix:
  44. arch: ['x86_64']
  45. steps:
  46. - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4
  47. - name: 'cmake'
  48. uses: cross-platform-actions/action@b2e15da1e667187766fff4945d20b98ac7055576 # v0.24.0
  49. with:
  50. operating_system: 'netbsd'
  51. version: '10.0'
  52. architecture: ${{ matrix.arch }}
  53. run: |
  54. # https://pkgsrc.se/
  55. sudo pkgin -y install cmake perl brotli heimdal openldap-client libssh2 libidn2 libpsl nghttp2 # python311 py311-impacket
  56. cmake -B bld \
  57. -DCMAKE_UNITY_BUILD=ON \
  58. -DCURL_WERROR=ON \
  59. -DENABLE_DEBUG=ON -DCMAKE_BUILD_TYPE=Debug -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG= \
  60. -DBUILD_EXAMPLES=ON \
  61. -DENABLE_WEBSOCKETS=ON \
  62. -DCURL_USE_OPENSSL=ON \
  63. -DCURL_BROTLI=ON -DUSE_NGHTTP2=ON -DCURL_USE_GSSAPI=ON
  64. cmake --build bld --config Debug --parallel 3
  65. export CURL=$(pwd)/bld/src/curl
  66. "${CURL}" --disable --version
  67. if [ '${{ matrix.arch }}' = 'x86_64' ]; then # Slow on emulated CPU
  68. cmake --build bld --config Debug --parallel 3 --target testdeps
  69. cmake --build bld --config Debug --target test-ci
  70. fi
  71. openbsd:
  72. name: 'OpenBSD (cmake, libressl, clang)'
  73. runs-on: ubuntu-latest
  74. timeout-minutes: 30
  75. strategy:
  76. matrix:
  77. arch: ['x86_64']
  78. steps:
  79. - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4
  80. - name: 'cmake'
  81. uses: cross-platform-actions/action@b2e15da1e667187766fff4945d20b98ac7055576 # v0.24.0
  82. with:
  83. operating_system: 'openbsd'
  84. version: '7.5'
  85. architecture: ${{ matrix.arch }}
  86. run: |
  87. # https://openbsd.app/
  88. sudo pkg_add cmake perl brotli openldap-client libssh2 libidn2 libpsl nghttp2 python3 py3-impacket
  89. cmake -B bld \
  90. -DCMAKE_UNITY_BUILD=ON \
  91. -DCURL_WERROR=ON \
  92. -DENABLE_DEBUG=ON -DCMAKE_BUILD_TYPE=Debug -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG= \
  93. -DBUILD_EXAMPLES=ON \
  94. -DENABLE_WEBSOCKETS=ON \
  95. -DCURL_USE_OPENSSL=ON \
  96. -DCURL_BROTLI=ON -DUSE_NGHTTP2=ON
  97. cmake --build bld --config Debug --parallel 3
  98. export CURL=$(pwd)/bld/src/curl
  99. "${CURL}" --disable --version
  100. if [ '${{ matrix.arch }}' = 'x86_64' ]; then # Slow on emulated CPU
  101. cmake --build bld --config Debug --parallel 3 --target testdeps
  102. export TFLAGS='-j8 ~TFTP' # FIXME: TFTP requests executed twice? Related: `curl: (69) TFTP: Access Violation`?
  103. cmake --build bld --config Debug --target test-ci
  104. fi
  105. freebsd:
  106. name: 'FreeBSD (${{ matrix.build }}, openssl, ${{ matrix.compiler }}, ${{ matrix.arch }})'
  107. runs-on: ubuntu-latest
  108. timeout-minutes: 60
  109. strategy:
  110. matrix:
  111. include:
  112. - { build: 'autotools', arch: 'arm64', compiler: 'clang' }
  113. - { build: 'cmake' , arch: 'arm64', compiler: 'clang' }
  114. fail-fast: false
  115. steps:
  116. - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4
  117. - name: 'autotools'
  118. if: ${{ matrix.build == 'autotools' }}
  119. uses: cross-platform-actions/action@b2e15da1e667187766fff4945d20b98ac7055576 # v0.24.0
  120. with:
  121. operating_system: 'freebsd'
  122. version: '14.0'
  123. architecture: ${{ matrix.arch }}
  124. run: |
  125. # https://ports.freebsd.org/
  126. sudo pkg install -y autoconf automake libtool pkgconf brotli openldap26-client libidn2 libnghttp2 nghttp2 stunnel py39-openssl py39-impacket py39-cryptography
  127. sudo pkg delete -y curl
  128. autoreconf -fi
  129. export CC='${{ matrix.compiler }}'
  130. mkdir bld && cd bld && ../configure --enable-debug --enable-warnings --enable-werror \
  131. --prefix="${HOME}"/install \
  132. --enable-websockets \
  133. --with-openssl \
  134. --with-brotli --enable-ldap --enable-ldaps --with-libidn2 --with-libssh2 --with-nghttp2 --with-gssapi \
  135. --disable-dependency-tracking || { tail -n 1000 config.log; false; }
  136. make -j3 install
  137. src/curl --disable --version
  138. make -j3 examples
  139. if [ '${{ matrix.arch }}' = 'x86_64' ]; then # Slow on emulated CPU
  140. export TFLAGS='-j12'
  141. make check V=1
  142. fi
  143. - name: 'cmake'
  144. if: ${{ matrix.build == 'cmake' }}
  145. uses: cross-platform-actions/action@b2e15da1e667187766fff4945d20b98ac7055576 # v0.24.0
  146. with:
  147. operating_system: 'freebsd'
  148. version: '14.0'
  149. architecture: ${{ matrix.arch }}
  150. run: |
  151. # https://ports.freebsd.org/
  152. sudo pkg install -y cmake brotli openldap26-client libidn2 libnghttp2 nghttp2 stunnel py39-openssl py39-impacket py39-cryptography
  153. sudo pkg delete -y curl
  154. cmake -B bld \
  155. -DCMAKE_C_COMPILER=${{ matrix.compiler }} \
  156. -DCMAKE_UNITY_BUILD=ON \
  157. -DCURL_WERROR=ON \
  158. -DENABLE_DEBUG=ON -DCMAKE_BUILD_TYPE=Debug -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG= \
  159. -DBUILD_EXAMPLES=ON \
  160. -DENABLE_WEBSOCKETS=ON \
  161. -DCURL_USE_OPENSSL=ON \
  162. -DCURL_BROTLI=ON -DUSE_NGHTTP2=ON -DCURL_USE_GSSAPI=ON
  163. cmake --build bld --config Debug --parallel 3
  164. bld/src/curl --disable --version
  165. if [ '${{ matrix.arch }}' = 'x86_64' ]; then # Slow on emulated CPU
  166. cmake --build bld --config Debug --parallel 3 --target testdeps
  167. export TFLAGS='-j12'
  168. cmake --build bld --config Debug --target test-ci
  169. fi
  170. omnios:
  171. name: 'OmniOS (autotools, openssl, gcc, amd64)'
  172. runs-on: ubuntu-22.04
  173. timeout-minutes: 30
  174. steps:
  175. - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4
  176. - name: 'autotools'
  177. uses: vmactions/omnios-vm@7c0ff6e623ee96d9fd7c4dc4cfc92bebd3c4f64a # v1
  178. with:
  179. usesh: true
  180. # https://pkg.omnios.org/r151048/core/en/index.shtml
  181. prepare: pkg install build-essential libtool
  182. run: |
  183. pkg uninstall curl
  184. ln -s /usr/bin/gcpp /usr/bin/cpp # Some tests expect `cpp`, which is named `gcpp` in this env.
  185. autoreconf -fi
  186. mkdir bld && cd bld && ../configure --enable-debug --enable-warnings --enable-werror \
  187. --prefix="${HOME}"/install \
  188. --enable-websockets \
  189. --with-openssl \
  190. --disable-dependency-tracking || { tail -n 1000 config.log; false; }
  191. gmake -j3 install
  192. src/curl --disable --version
  193. gmake -j3 examples
  194. export TFLAGS='-j12'
  195. gmake check V=1