non-native.yml 8.3 KB

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