mirror of
https://github.com/curl/curl.git
synced 2026-07-30 05:08:07 +03:00
GHA/non-native: BSD overhaul, test more autotools, bump versions
- add autotools jobs for MidnightBSD, NetBSD, OpenBSD.
Takes under 3 minutes per new job, under +6m in total.
- comment out MidnightBSD to save CI time.
- to make them as fast as possible, skip building tests and examples,
and omit libidn2, openldap dependencies.
- add DragonFly BSD cmake job, which finally works.
(keep it commented out since the package server fails frequently.)
- do `mport index/upgrade` to make MidnightBSD autotools builds work.
- rework filtering MidnightBSD package manager's excessive log output.
- fixup OpenBSD autotools job to uninstall system curl to avoid linking
against it (and breaking debug builds).
- make OpenBSD package manager commands non-interactive.
- specify install packages for each matrix entry.
- make autotools build step verbose (to ease debugging).
- add link to DragonFly BSD package repo.
- bump cross-platform-actions from 1.1.0 to 1.3.0.
- bump FreeBSD 15.0 to 15.1.
- bump OpenBSD to 7.7 to 7.9.
This did not go well last time with 7.8, let's see with 7.9.
Ref: 8d00e28136 #19372
Ref: c3b890b2c0 #19368
- sync test-skipper keywords with rest of workflows.
- drop installing impacket. It was unused.
(also a slow install with many dependencies)
The original motivation was to prepare fixing OpenBSD's (and possibly
other platforms) `getaddrinfo()` thread-safety check.
Ref: https://github.com/curl/curl/pull/22138#issuecomment-4773617195
Closes #22145
This commit is contained in:
parent
9adc32a6e2
commit
bf29c3e175
1 changed files with 75 additions and 31 deletions
106
.github/workflows/non-native.yml
vendored
106
.github/workflows/non-native.yml
vendored
|
|
@ -49,26 +49,67 @@ jobs:
|
|||
MAKEFLAGS: -j 3
|
||||
MATRIX_ARCH: '${{ matrix.arch }}'
|
||||
MATRIX_BUILD: '${{ matrix.build }}'
|
||||
MATRIX_INSTALL: '${{ matrix.install }}'
|
||||
MATRIX_OPTIONS: '${{ matrix.options }}'
|
||||
MATRIX_OS: '${{ matrix.os }}'
|
||||
MATRIX_VERSION: '${{ matrix.version }}'
|
||||
strategy:
|
||||
matrix:
|
||||
include:
|
||||
# { os: 'dragonflybsd', version: '6.4.2', build: 'autotools', arch: 'x86_64', cc: 'gcc' , desc: 'openssl !runtests',
|
||||
# options: '--with-openssl' }
|
||||
- { os: 'freebsd' , version: '15.0', build: 'autotools', arch: 'x86_64', cc: 'clang', desc: 'openssl',
|
||||
options: '--with-openssl --with-gssapi' }
|
||||
- { os: 'freebsd' , version: '15.0', build: 'cmake' , arch: 'x86_64', cc: 'clang', desc: 'openssl !unity !runtests !examples',
|
||||
# https://github.com/DragonFlyBSD/DPorts
|
||||
# { os: 'dragonflybsd', version: '6.4.2', build: 'autotools', arch: 'x86_64', cc: 'gcc' , desc: 'openssl skiprun',
|
||||
# install: 'autoconf automake libtool openldap26-client libidn2',
|
||||
# options: '--with-openssl --enable-ldap --enable-ldaps --with-libidn2' }
|
||||
|
||||
# { os: 'dragonflybsd', version: '6.4.2', build: 'cmake' , arch: 'x86_64', cc: 'gcc' , desc: 'openssl skipall',
|
||||
# install: 'cmake ninja' }
|
||||
|
||||
# https://ports.freebsd.org/
|
||||
- { os: 'freebsd' , version: '15.1', build: 'autotools', arch: 'x86_64', cc: 'clang', desc: 'openssl',
|
||||
install: 'autoconf automake libtool krb5-devel openldap26-client libidn2 stunnel',
|
||||
options: '--with-openssl --with-gssapi --enable-ldap --enable-ldaps --with-libidn2' }
|
||||
|
||||
- { os: 'freebsd' , version: '15.1', build: 'cmake' , arch: 'x86_64', cc: 'clang', desc: 'openssl !unity skiprun !examples',
|
||||
install: 'cmake-core ninja perl5 krb5-devel openldap26-client libidn2',
|
||||
options: '-DCURL_USE_GSSAPI=ON -DCMAKE_UNITY_BUILD=OFF' }
|
||||
|
||||
- { os: 'freebsd' , version: '14.3', build: 'autotools', arch: 'arm64' , cc: 'clang', desc: 'openssl !examples',
|
||||
options: '--with-openssl --with-gssapi' }
|
||||
install: 'autoconf automake libtool krb5-devel openldap26-client libidn2 stunnel',
|
||||
options: '--with-openssl --with-gssapi --enable-ldap --enable-ldaps --with-libidn2' }
|
||||
|
||||
- { os: 'freebsd' , version: '14.3', build: 'cmake' , arch: 'arm64' , cc: 'clang', desc: 'openssl',
|
||||
install: 'cmake-core ninja perl5 krb5-devel openldap26-client libidn2 stunnel',
|
||||
options: '-DCURL_USE_GSSAPI=ON' }
|
||||
- { os: 'midnightbsd' , version: '4.0.4', build: 'cmake' , arch: 'x86_64', cc: 'clang', desc: 'gnutls !runtests',
|
||||
|
||||
# https://app.midnightbsd.org/
|
||||
# https://man.midnightbsd.org/cgi-bin/man.cgi/mport
|
||||
# { os: 'midnightbsd' , version: '4.0.4', build: 'autotools' , arch: 'x86_64', cc: 'clang', desc: 'gnutls skipall !examples',
|
||||
# install: 'autoconf autoconf-archive automake libtool gnutls',
|
||||
# options: '--with-gnutls' }
|
||||
|
||||
- { os: 'midnightbsd' , version: '4.0.4', build: 'cmake' , arch: 'x86_64', cc: 'clang', desc: 'gnutls skiprun',
|
||||
install: 'cmake-core ninja perl5 gnutls openldap26-client libidn2',
|
||||
options: '-DCURL_USE_GNUTLS=ON' }
|
||||
|
||||
# https://pkgsrc.se/
|
||||
- { os: 'netbsd' , version: '10.1' , build: 'autotools', arch: 'x86_64', cc: 'gcc' , desc: 'openssl skipall !examples',
|
||||
install: 'autoconf automake libtool mit-krb5',
|
||||
options: '--with-openssl --with-gssapi' }
|
||||
|
||||
- { os: 'netbsd' , version: '10.1' , build: 'cmake' , arch: 'x86_64', cc: 'gcc' , desc: 'openssl',
|
||||
install: 'cmake ninja-build mit-krb5 openldap-client libidn2',
|
||||
options: '-DCURL_USE_GSSAPI=ON' }
|
||||
- { os: 'openbsd' , version: '7.7' , build: 'cmake' , arch: 'x86_64', cc: 'clang', desc: 'libressl' }
|
||||
|
||||
# https://openbsd.app/
|
||||
# https://www.openbsd.org/faq/faq15.html
|
||||
# https://github.com/OpenMPT/openmpt/blob/master/.github/workflows/OpenBSD-Autotools.yml
|
||||
- { os: 'openbsd' , version: '7.9' , build: 'autotools', arch: 'x86_64', cc: 'clang', desc: 'libressl skipall !examples',
|
||||
install: 'autoconf-2.72p0 automake-1.18.1 libtool', # NOTE: also sync these versions with the autoreconf step!
|
||||
options: '--with-openssl' }
|
||||
|
||||
- { os: 'openbsd' , version: '7.9' , build: 'cmake' , arch: 'x86_64', cc: 'clang', desc: 'libressl',
|
||||
install: 'cmake ninja openldap-client-- libidn2' }
|
||||
|
||||
fail-fast: false
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||
|
|
@ -76,9 +117,9 @@ jobs:
|
|||
persist-credentials: false
|
||||
|
||||
- name: 'setup VM'
|
||||
uses: cross-platform-actions/action@0c165ad7eb2d6a7e8552d6af5aad2bbedfc646b0 # v1.1.0
|
||||
uses: cross-platform-actions/action@5ea7e8e4677bd726033a10b094ba1c5762b15dee # v1.3.0
|
||||
with:
|
||||
environment_variables: 'CC CURL_CI CURL_TEST_MIN DO_NOT_TRACK MAKEFLAGS MATRIX_ARCH MATRIX_BUILD MATRIX_OPTIONS MATRIX_OS'
|
||||
environment_variables: 'CC CURL_CI CURL_TEST_MIN DO_NOT_TRACK MAKEFLAGS MATRIX_ARCH MATRIX_BUILD MATRIX_INSTALL MATRIX_OPTIONS MATRIX_OS MATRIX_VERSION'
|
||||
operating_system: '${{ matrix.os }}'
|
||||
version: '${{ matrix.version }}'
|
||||
architecture: '${{ matrix.arch }}'
|
||||
|
|
@ -86,31 +127,34 @@ jobs:
|
|||
- name: 'install prereqs'
|
||||
run: |
|
||||
if [ "${MATRIX_OS}" = 'dragonflybsd' ]; then
|
||||
sudo pkg install -y autoconf automake libtool perl5 pkgconf brotli openldap26-client libidn2 libnghttp2
|
||||
sudo pkg install -y pkgconf brotli libnghttp2 ${MATRIX_INSTALL}
|
||||
elif [ "${MATRIX_OS}" = 'freebsd' ]; then
|
||||
# https://ports.freebsd.org/
|
||||
if [ "${MATRIX_BUILD}" = 'cmake' ]; then
|
||||
tools='cmake-core ninja perl5'
|
||||
else
|
||||
tools='autoconf automake libtool'
|
||||
fi
|
||||
sudo pkg install -y ${tools} pkgconf brotli krb5-devel openldap26-client libidn2 libnghttp2 stunnel py311-impacket
|
||||
sudo pkg install -y pkgconf brotli libnghttp2 ${MATRIX_INSTALL}
|
||||
elif [ "${MATRIX_OS}" = 'midnightbsd' ]; then
|
||||
# https://app.midnightbsd.org/
|
||||
# https://man.midnightbsd.org/cgi-bin/man.cgi/mport
|
||||
sudo mport -q install cmake-core ninja perl5 pkgconf brotli gnutls openldap26-client libidn2 libnghttp2 | grep -E '(Downloading.+100|Installing)' || true
|
||||
if [ "${MATRIX_BUILD}" = 'autotools' ]; then
|
||||
sudo mport index | grep -v -E 'Downloading.+%'
|
||||
sudo mport upgrade | grep -v -E '(Downloading.+%|^/usr/local)'
|
||||
fi
|
||||
sudo mport install pkgconf brotli libnghttp2 ${MATRIX_INSTALL} | grep -v -E '(Downloading.+%|^/usr/local)' || true
|
||||
elif [ "${MATRIX_OS}" = 'netbsd' ]; then
|
||||
# https://pkgsrc.se/
|
||||
sudo pkgin -y install cmake ninja-build pkg-config perl brotli mit-krb5 openldap-client libssh2 libidn2 libpsl nghttp2 py311-impacket
|
||||
sudo pkgin -y install pkg-config perl brotli libssh2 libpsl nghttp2 ${MATRIX_INSTALL}
|
||||
elif [ "${MATRIX_OS}" = 'openbsd' ]; then
|
||||
# https://openbsd.app/
|
||||
# https://www.openbsd.org/faq/faq15.html
|
||||
sudo pkg_add cmake ninja brotli openldap-client-- libssh2 libidn2 libpsl nghttp2 py3-six py3-impacket
|
||||
sudo pkg_add -I brotli libssh2 libpsl nghttp2 ${MATRIX_INSTALL}
|
||||
if [ "${MATRIX_BUILD}" = 'autotools' ]; then
|
||||
sudo pkg_delete -I curl # to avoid autotools build linking against system libcurl
|
||||
fi
|
||||
fi
|
||||
|
||||
- name: 'autoreconf'
|
||||
if: ${{ matrix.build == 'autotools' }}
|
||||
run: autoreconf -fi
|
||||
run: |
|
||||
if [ "${MATRIX_OS}" = 'openbsd' ]; then
|
||||
if [ "${MATRIX_VERSION}" = '7.9' ]; then
|
||||
export AUTOCONF_VERSION=2.72
|
||||
export AUTOMAKE_VERSION=1.18
|
||||
fi
|
||||
fi
|
||||
autoreconf -fi
|
||||
|
||||
- name: 'configure'
|
||||
run: |
|
||||
|
|
@ -126,7 +170,7 @@ jobs:
|
|||
mkdir bld && cd bld
|
||||
../configure --prefix="$HOME"/curl-install --enable-unity --enable-debug --enable-warnings --enable-werror --disable-static \
|
||||
--disable-dependency-tracking --enable-option-checking=fatal \
|
||||
--with-brotli --enable-ldap --enable-ldaps --with-libidn2 --with-libssh2 --with-nghttp2 \
|
||||
--with-brotli --with-libssh2 --with-nghttp2 \
|
||||
${options} ${MATRIX_OPTIONS}
|
||||
fi
|
||||
|
||||
|
|
@ -144,7 +188,7 @@ jobs:
|
|||
if [ "${MATRIX_BUILD}" = 'cmake' ]; then
|
||||
cmake --build bld
|
||||
else
|
||||
make -C bld
|
||||
make -C bld V=1
|
||||
fi
|
||||
|
||||
- name: 'curl -V'
|
||||
|
|
@ -159,7 +203,7 @@ jobs:
|
|||
fi
|
||||
|
||||
- name: 'build tests'
|
||||
if: ${{ matrix.arch == 'x86_64' }} # Slow on emulated CPU
|
||||
if: ${{ matrix.arch == 'x86_64' && !contains(matrix.desc, 'skipall') }} # Slow on emulated CPU
|
||||
run: |
|
||||
if [ "${MATRIX_BUILD}" = 'cmake' ]; then
|
||||
cmake --build bld --target testdeps
|
||||
|
|
@ -168,7 +212,7 @@ jobs:
|
|||
fi
|
||||
|
||||
- name: 'run tests'
|
||||
if: ${{ matrix.arch == 'x86_64' && !contains(matrix.desc, '!runtests') }} # Slow on emulated CPU
|
||||
if: ${{ matrix.arch == 'x86_64' && !contains(matrix.desc, 'skipall') && !contains(matrix.desc, 'skiprun') }} # Slow on emulated CPU
|
||||
run: |
|
||||
export TFLAGS='-j8'
|
||||
if [ "${MATRIX_OS}" = 'openbsd' ]; then
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue