@@ -13,14 +13,13 @@ concurrency:
1313# END OF COMMON SECTION
1414
1515jobs :
16- # Configs that interact with platform-specific features (sys-ca-certs,
17- # Apple Security.framework, OpenSSL compat layer, networking).
18- # Run on both Ubuntu and macOS .
19- make_check :
16+ # Ubuntu config matrix. macOS is covered separately by make_check_macos
17+ # below with a curated subset; configs here either have equivalent macOS
18+ # coverage there or exercise no Darwin-specific code .
19+ make_check_linux :
2020 strategy :
2121 fail-fast : false
2222 matrix :
23- os : [ ubuntu-24.04, macos-latest ]
2423 config : [
2524 # Add new configs here
2625 ' ' ,
8988 ' --enable-ocsp --enable-ocsp-responder --enable-ocspstapling CPPFLAGS="-DWOLFSSL_NONBLOCK_OCSP" --enable-maxfragment' ,
9089 ' --enable-all CPPFLAGS=-DWOLFSSL_HASH_KEEP' ,
9190 ' --enable-all --enable-writedup' ,
92- ]
93- name : make check
94- if : github.repository_owner == 'wolfssl'
95- runs-on : ${{ matrix.os }}
96- # This should be a safe limit for the tests to run.
97- timeout-minutes : 14
98- steps :
99- - name : Build and test wolfSSL
100- uses : wolfSSL/actions-build-autotools-project@v1
101- with :
102- configure : CFLAGS="-pedantic -Wdeclaration-after-statement -Wnull-dereference -Wno-overlength-strings -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE" ${{ matrix.config }}
103- check : true
104-
105- # Platform-agnostic configs: pure crypto algorithms, preprocessor guards,
106- # or features with no macOS-specific code paths. Linux only.
107- make_check_linux :
108- strategy :
109- fail-fast : false
110- matrix :
111- config : [
11291 ' --enable-ascon --enable-experimental' ,
11392 ' --enable-ascon CPPFLAGS=-DWOLFSSL_ASCON_UNROLL --enable-experimental' ,
11493 # PKCS#7 with RSA-PSS (CMS RSASSA-PSS signers)
@@ -130,7 +109,7 @@ jobs:
130109 ' --enable-curve25519=nonblock --enable-ecc=nonblock --enable-sp=yes,nonblock CPPFLAGS="-DWOLFSSL_PUBLIC_MP -DWOLFSSL_DEBUG_NONBLOCK"' ,
131110 ' --enable-certreq --enable-certext --enable-certgen --disable-secure-renegotiation-info CPPFLAGS="-DNO_TLS"' ,
132111 ]
133- name : make check (Linux only)
112+ name : make check linux
134113 if : github.repository_owner == 'wolfssl'
135114 runs-on : ubuntu-24.04
136115 # This should be a safe limit for the tests to run.
@@ -142,6 +121,55 @@ jobs:
142121 configure : CFLAGS="-pedantic -Wdeclaration-after-statement -Wnull-dereference -Wno-overlength-strings -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE" ${{ matrix.config }}
143122 check : true
144123
124+ # Curated macOS subset. Each config exists for a Darwin-specific reason;
125+ # do not add entries that only re-test platform-agnostic crypto already
126+ # covered by the corresponding Linux run.
127+ make_check_macos :
128+ strategy :
129+ fail-fast : false
130+ matrix :
131+ config : [
132+ # Default build: --enable-sys-ca-certs is auto-on on macOS, so
133+ # this exercises Apple keychain / system trust loading in
134+ # src/ssl_load.c that has no Linux equivalent.
135+ ' ' ,
136+ # Broad key-crypto + Security.framework + opensslextra in one run
137+ # (RSA, ECC, AES, SHA-2/3, ChaCha20-Poly1305, Curve25519/448, HMAC,
138+ # sniffer, DTLS, OCSP, ...). Note: --enable-all does NOT enable
139+ # cryptocb or SHE, so those have their own entries below.
140+ ' --enable-all --enable-asn=template' ,
141+ # Validates the configure-time auto-enable override and that the
142+ # build compiles out the Security.framework code path cleanly --
143+ # macOS is the only OS where sys-ca-certs is auto-on by default.
144+ ' --disable-sys-ca-certs' ,
145+ # DTLS over BSD sockets on Darwin: connection-ID, fragmented
146+ # ClientHello, secure renegotiation, PSK, AES-CCM, null cipher --
147+ # exercises recvmsg/MTU/datagram handling that differs from Linux.
148+ ' --enable-dtls --enable-dtlscid --enable-dtls13 --enable-secure-renegotiation
149+ --enable-psk --enable-aesccm --enable-nullcipher
150+ CPPFLAGS=-DWOLFSSL_STATIC_RSA' ,
151+ # Crypto-callback dispatcher under Apple clang. Not covered by
152+ # --enable-all; verifies the cryptocb find/setkey/keygen path
153+ # compiles and runs on the macOS toolchain.
154+ ' --enable-cryptocb --enable-keygen --enable-cryptocbutils=setkey' ,
155+ ]
156+ name : make check macos
157+ if : github.repository_owner == 'wolfssl'
158+ runs-on : macos-latest
159+ # This should be a safe limit for the tests to run.
160+ timeout-minutes : 14
161+ steps :
162+ - name : Build and test wolfSSL
163+ uses : wolfSSL/actions-build-autotools-project@v1
164+ with :
165+ configure : CFLAGS="-pedantic -Wdeclaration-after-statement -Wnull-dereference -Wno-overlength-strings -DTEST_LIBWOLFSSL_SOURCES_INCLUSION_SEQUENCE" ${{ matrix.config }}
166+ check : true
167+
168+ # Run on both OSes: the user_settings.h header-driven build path is
169+ # distinct from the autotools-driven --enable-all path in
170+ # make_check_linux / make_check_macos, and macOS-specific guard ordering
171+ # (e.g. WOLFSSL_SYS_CA_CERTS pulling in Security.framework) needs to be
172+ # exercised under Apple clang here.
145173 make_user_settings :
146174 strategy :
147175 fail-fast : false
@@ -165,12 +193,11 @@ jobs:
165193 user-settings : ${{ matrix.user-settings }}
166194
167195 make_user_settings_testwolfcrypt :
196+ # testwolfcrypt runs pure crypto tests with no platform-specific
197+ # features, so Linux-only is sufficient for these user_settings.
168198 strategy :
169199 fail-fast : false
170200 matrix :
171- # testwolfcrypt runs pure crypto tests with no platform-specific
172- # features, so Linux-only is sufficient for these user_settings.
173- os : [ ubuntu-24.04 ]
174201 user-settings : [
175202 # Add new user_settings.h here (alphabetical order)
176203 ' examples/configs/user_settings_ca.h' ,
@@ -194,7 +221,7 @@ jobs:
194221 ]
195222 name : make user_setting.h (testwolfcrypt only)
196223 if : github.repository_owner == 'wolfssl'
197- runs-on : ${{ matrix.os }}
224+ runs-on : ubuntu-24.04
198225 # This should be a safe limit for the tests to run.
199226 timeout-minutes : 14
200227 steps :
@@ -208,21 +235,18 @@ jobs:
208235 - name : Run wolfcrypt/test/testwolfcrypt
209236 run : ./wolfcrypt/test/testwolfcrypt
210237
211- # Has to be dedicated function due to the sed call
238+ # Has to be dedicated function due to the sed call.
239+ # Platform-agnostic; --enable-all macOS coverage in make_check_macos and
240+ # the macOS user_settings_all.h run in make_user_settings already cover
241+ # the equivalent code paths on Darwin.
212242 make_user_all :
213- strategy :
214- fail-fast : false
215- matrix :
216- os : [ ubuntu-24.04, macos-latest ]
217243 name : make user_setting.h (with sed)
218244 if : github.repository_owner == 'wolfssl'
219- runs-on : ${{ matrix.os }}
245+ runs-on : ubuntu-24.04
220246 # This should be a safe limit for the tests to run.
221247 timeout-minutes : 14
222248 steps :
223249 - uses : actions/checkout@v4
224- - if : ${{ matrix.os == 'macos-latest' }}
225- run : brew install automake libtool
226250 - run : ./autogen.sh
227251 - name : user_settings_all.h with compatibility layer
228252 run : |
0 commit comments