Skip to content

Commit 3325d78

Browse files
authored
Update dependency versions and caching in workflow
Updated versions for various dependencies in the HTTP3 workflow. Added caching for nettle and updated cache keys to include nettle version.
1 parent a0aa23b commit 3325d78

1 file changed

Lines changed: 84 additions & 39 deletions

File tree

.github/workflows/http3-linux.yml

Lines changed: 84 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -45,15 +45,17 @@ env:
4545
# renovate: datasource=github-tags depName=awslabs/aws-lc versioning=semver registryUrl=https://github.com
4646
AWSLC_VERSION: 1.63.0
4747
# renovate: datasource=github-tags depName=google/boringssl versioning=semver registryUrl=https://github.com
48-
BORINGSSL_VERSION: 0.20251002.0
49-
# renovate: datasource=github-tags depName=gnutls/gnutls versioning=semver registryUrl=https://github.com
50-
GNUTLS_VERSION: 3.8.10
48+
BORINGSSL_VERSION: 0.20251124.0
49+
# renovate: datasource=github-tags depName=gnutls/nettle versioning=semver registryUrl=https://github.com
50+
NETTLE_VERSION: 3.10.2
51+
# renovate: datasource=github-tags depName=gnutls/gnutls versioning=semver extractVersion=^nettle_?(?<version>.+)_release_.+$ registryUrl=https://github.com
52+
GNUTLS_VERSION: 3.8.11
5153
# renovate: datasource=github-tags depName=wolfSSL/wolfssl versioning=semver extractVersion=^v?(?<version>.+)-stable$ registryUrl=https://github.com
52-
WOLFSSL_VERSION: 5.8.2
54+
WOLFSSL_VERSION: 5.8.4
5355
# renovate: datasource=github-tags depName=ngtcp2/nghttp3 versioning=semver registryUrl=https://github.com
54-
NGHTTP3_VERSION: 1.12.0
56+
NGHTTP3_VERSION: 1.13.1
5557
# renovate: datasource=github-tags depName=ngtcp2/ngtcp2 versioning=semver registryUrl=https://github.com
56-
NGTCP2_VERSION: 1.17.0
58+
NGTCP2_VERSION: 1.18.0
5759
# renovate: datasource=github-tags depName=nghttp2/nghttp2 versioning=semver registryUrl=https://github.com
5860
NGHTTP2_VERSION: 1.68.0
5961
# renovate: datasource=github-tags depName=cloudflare/quiche versioning=semver registryUrl=https://github.com
@@ -101,14 +103,23 @@ jobs:
101103
path: ~/boringssl/build
102104
key: ${{ runner.os }}-http3-build-${{ env.cache-name }}-${{ env.BORINGSSL_VERSION }}
103105

106+
- name: 'cache nettle'
107+
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
108+
id: cache-nettle
109+
env:
110+
cache-name: cache-nettle
111+
with:
112+
path: ~/nettle/build
113+
key: ${{ runner.os }}-http3-build-${{ env.cache-name }}-${{ env.NETTLE_VERSION }}
114+
104115
- name: 'cache gnutls'
105116
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
106117
id: cache-gnutls
107118
env:
108119
cache-name: cache-gnutls
109120
with:
110121
path: ~/gnutls/build
111-
key: ${{ runner.os }}-http3-build-${{ env.cache-name }}-${{ env.GNUTLS_VERSION }}
122+
key: ${{ runner.os }}-http3-build-${{ env.cache-name }}-${{ env.GNUTLS_VERSION }}-${{ env.NETTLE_VERSION }}
112123

113124
- name: 'cache wolfssl'
114125
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
@@ -135,7 +146,7 @@ jobs:
135146
cache-name: cache-ngtcp2
136147
with:
137148
path: ~/ngtcp2/build
138-
key: ${{ runner.os }}-http3-build-${{ env.cache-name }}-${{ env.NGTCP2_VERSION }}-${{ env.OPENSSL_VERSION }}-${{ env.LIBRESSL_VERSION }}-${{ env.AWSLC_VERSION }}-${{ env.GNUTLS_VERSION }}-${{ env.WOLFSSL_VERSION }}
149+
key: ${{ runner.os }}-http3-build-${{ env.cache-name }}-${{ env.NGTCP2_VERSION }}-${{ env.OPENSSL_VERSION }}-${{ env.LIBRESSL_VERSION }}-${{ env.AWSLC_VERSION }}-${{ env.NETTLE_VERSION }}-${{ env.GNUTLS_VERSION }}-${{ env.WOLFSSL_VERSION }}
139150

140151
- name: 'cache ngtcp2 boringssl'
141152
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
@@ -161,6 +172,7 @@ jobs:
161172
steps.cache-libressl.outputs.cache-hit != 'true' ||
162173
steps.cache-awslc.outputs.cache-hit != 'true' ||
163174
steps.cache-boringssl.outputs.cache-hit != 'true' ||
175+
steps.cache-nettle.outputs.cache-hit != 'true' ||
164176
steps.cache-gnutls.outputs.cache-hit != 'true' ||
165177
steps.cache-wolfssl.outputs.cache-hit != 'true' ||
166178
steps.cache-nghttp3.outputs.cache-hit != 'true' ||
@@ -181,15 +193,15 @@ jobs:
181193
libbrotli-dev libzstd-dev zlib1g-dev \
182194
libev-dev \
183195
libc-ares-dev \
184-
nettle-dev libp11-kit-dev autopoint bison gperf gtk-doc-tools libtasn1-bin # for GnuTLS
196+
libp11-kit-dev autopoint bison gperf gtk-doc-tools libtasn1-bin # for GnuTLS
185197
echo 'CC=gcc-12' >> "$GITHUB_ENV"
186198
echo 'CXX=g++-12' >> "$GITHUB_ENV"
187199
188200
- name: 'build openssl'
189201
if: ${{ steps.cache-openssl-http3-no-deprecated.outputs.cache-hit != 'true' }}
190202
run: |
191203
cd ~
192-
git clone --quiet --depth=1 -b "openssl-${OPENSSL_VERSION}" https://github.com/openssl/openssl
204+
git clone --quiet --depth 1 -b "openssl-${OPENSSL_VERSION}" https://github.com/openssl/openssl
193205
cd openssl
194206
./config --prefix="$PWD"/build --libdir=lib no-makedepend no-apps no-docs no-tests no-deprecated
195207
make
@@ -228,26 +240,37 @@ jobs:
228240
cmake --build .
229241
cmake --install .
230242
243+
- name: 'build nettle'
244+
if: ${{ steps.cache-nettle.outputs.cache-hit != 'true' }}
245+
run: |
246+
cd ~
247+
curl --disable --fail --silent --show-error --connect-timeout 15 --max-time 120 --retry 6 --retry-connrefused \
248+
--location "https://ftpmirror.gnu.org/nettle/nettle-${NETTLE_VERSION}.tar.gz" | tar -xz
249+
cd "nettle-${NETTLE_VERSION}"
250+
./configure --disable-dependency-tracking --prefix=/home/runner/nettle/build \
251+
--disable-silent-rules --disable-static --disable-openssl --disable-documentation
252+
make install
253+
231254
- name: 'build gnutls'
232255
if: ${{ steps.cache-gnutls.outputs.cache-hit != 'true' }}
233256
run: |
234257
cd ~
235-
git clone --quiet --depth=1 -b "${GNUTLS_VERSION}" https://github.com/gnutls/gnutls.git
236-
cd gnutls
237-
# required: nettle-dev libp11-kit-dev libev-dev autopoint bison gperf gtk-doc-tools libtasn1-bin
238-
./bootstrap
239-
./configure --disable-dependency-tracking --prefix="$PWD"/build \
240-
LDFLAGS="-Wl,-rpath,$PWD/build/lib -L$PWD/build/lib" \
258+
curl --disable --fail --silent --show-error --connect-timeout 15 --max-time 120 --retry 6 --retry-connrefused \
259+
"https://www.gnupg.org/ftp/gcrypt/gnutls/v${GNUTLS_VERSION%.*}/gnutls-${GNUTLS_VERSION}.tar.xz" | tar -xJ
260+
cd "gnutls-${GNUTLS_VERSION}"
261+
# required: libp11-kit-dev libev-dev autopoint bison gperf gtk-doc-tools libtasn1-bin
262+
./configure --disable-dependency-tracking --prefix=/home/runner/gnutls/build \
263+
PKG_CONFIG_PATH=/home/runner/nettle/build/lib64/pkgconfig \
264+
LDFLAGS=-Wl,-rpath,/home/runner/nettle/build/lib64 \
241265
--with-included-libtasn1 --with-included-unistring \
242266
--disable-guile --disable-doc --disable-tests --disable-tools
243-
make
244267
make install
245268
246269
- name: 'build wolfssl'
247270
if: ${{ steps.cache-wolfssl.outputs.cache-hit != 'true' }}
248271
run: |
249272
cd ~
250-
git clone --quiet --depth=1 -b "v${WOLFSSL_VERSION}-stable" https://github.com/wolfSSL/wolfssl.git
273+
git clone --quiet --depth 1 -b "v${WOLFSSL_VERSION}-stable" https://github.com/wolfSSL/wolfssl
251274
cd wolfssl
252275
./autogen.sh
253276
./configure --disable-dependency-tracking --enable-all --enable-quic \
@@ -259,9 +282,9 @@ jobs:
259282
if: ${{ steps.cache-nghttp3.outputs.cache-hit != 'true' }}
260283
run: |
261284
cd ~
262-
git clone --quiet --depth=1 -b "v${NGHTTP3_VERSION}" https://github.com/ngtcp2/nghttp3
285+
git clone --quiet --depth 1 -b "v${NGHTTP3_VERSION}" https://github.com/ngtcp2/nghttp3
263286
cd nghttp3
264-
git submodule update --init --depth=1
287+
git submodule update --init --depth 1
265288
autoreconf -fi
266289
./configure --disable-dependency-tracking --prefix="$PWD"/build --enable-lib-only
267290
make
@@ -272,15 +295,15 @@ jobs:
272295
# building twice to get crypto libs for ossl, libressl and awslc installed
273296
run: |
274297
cd ~
275-
git clone --quiet --depth=1 -b "v${NGTCP2_VERSION}" https://github.com/ngtcp2/ngtcp2
298+
git clone --quiet --depth 1 -b "v${NGTCP2_VERSION}" https://github.com/ngtcp2/ngtcp2
276299
cd ngtcp2
277300
autoreconf -fi
278301
./configure --disable-dependency-tracking --prefix="$PWD"/build \
279302
PKG_CONFIG_PATH=/home/runner/libressl/build/lib/pkgconfig --enable-lib-only --with-openssl
280303
make install
281304
make clean
282305
./configure --disable-dependency-tracking --prefix="$PWD"/build \
283-
PKG_CONFIG_PATH=/home/runner/openssl/build/lib/pkgconfig:/home/runner/gnutls/build/lib/pkgconfig:/home/runner/wolfssl/build/lib/pkgconfig \
306+
PKG_CONFIG_PATH=/home/runner/openssl/build/lib/pkgconfig:/home/runner/nettle/build/lib64/pkgconfig:/home/runner/gnutls/build/lib/pkgconfig:/home/runner/wolfssl/build/lib/pkgconfig \
284307
--enable-lib-only --with-openssl --with-gnutls --with-wolfssl --with-boringssl \
285308
BORINGSSL_LIBS='-L/home/runner/awslc/build/lib -lssl -lcrypto' \
286309
BORINGSSL_CFLAGS='-I/home/runner/awslc/build/include'
@@ -290,7 +313,7 @@ jobs:
290313
if: ${{ steps.cache-ngtcp2-boringssl.outputs.cache-hit != 'true' }}
291314
run: |
292315
cd ~
293-
git clone --quiet --depth=1 -b "v${NGTCP2_VERSION}" https://github.com/ngtcp2/ngtcp2 ngtcp2-boringssl
316+
git clone --quiet --depth 1 -b "v${NGTCP2_VERSION}" https://github.com/ngtcp2/ngtcp2 ngtcp2-boringssl
294317
cd ngtcp2-boringssl
295318
autoreconf -fi
296319
./configure --disable-dependency-tracking --prefix="$PWD"/build \
@@ -303,9 +326,9 @@ jobs:
303326
if: ${{ steps.cache-nghttp2.outputs.cache-hit != 'true' }}
304327
run: |
305328
cd ~
306-
git clone --quiet --depth=1 -b "v${NGHTTP2_VERSION}" https://github.com/nghttp2/nghttp2
329+
git clone --quiet --depth 1 -b "v${NGHTTP2_VERSION}" https://github.com/nghttp2/nghttp2
307330
cd nghttp2
308-
git submodule update --init --depth=1
331+
git submodule update --init --depth 1
309332
autoreconf -fi
310333
# required (for nghttpx application): libc-ares-dev libev-dev zlib1g-dev
311334
# optional (for nghttpx application): libbrotli-dev
@@ -383,16 +406,17 @@ jobs:
383406
-DCMAKE_UNITY_BUILD=ON
384407
385408
- name: 'gnutls'
386-
install_packages: nettle-dev libp11-kit-dev
409+
install_packages: libp11-kit-dev
387410
install_steps: skipall
388-
PKG_CONFIG_PATH: /home/runner/gnutls/build/lib/pkgconfig:/home/runner/nghttp3/build/lib/pkgconfig:/home/runner/ngtcp2/build/lib/pkgconfig:/home/runner/nghttp2/build/lib/pkgconfig
411+
PKG_CONFIG_PATH: /home/runner/nettle/build/lib64/pkgconfig:/home/runner/gnutls/build/lib/pkgconfig:/home/runner/nghttp3/build/lib/pkgconfig:/home/runner/ngtcp2/build/lib/pkgconfig:/home/runner/nghttp2/build/lib/pkgconfig
412+
LDFLAGS: -Wl,-rpath,/home/runner/gnutls/build/lib -Wl,-rpath,/home/runner/nettle/build/lib64 -Wl,-rpath,/home/runner/ngtcp2/build/lib
389413
configure: >-
390-
LDFLAGS=-Wl,-rpath,/home/runner/gnutls/build/lib
391414
--with-gnutls=/home/runner/gnutls/build --with-ngtcp2 --enable-ssls-export
392415
393416
- name: 'gnutls'
394-
install_packages: nettle-dev libp11-kit-dev
395-
PKG_CONFIG_PATH: /home/runner/gnutls/build/lib/pkgconfig:/home/runner/nghttp3/build/lib/pkgconfig:/home/runner/ngtcp2/build/lib/pkgconfig:/home/runner/nghttp2/build/lib/pkgconfig
417+
install_packages: libp11-kit-dev
418+
PKG_CONFIG_PATH: /home/runner/nettle/build/lib64/pkgconfig:/home/runner/gnutls/build/lib/pkgconfig:/home/runner/nghttp3/build/lib/pkgconfig:/home/runner/ngtcp2/build/lib/pkgconfig:/home/runner/nghttp2/build/lib/pkgconfig
419+
LDFLAGS: -Wl,-rpath,/home/runner/gnutls/build/lib
396420
generate: >-
397421
-DCURL_USE_GNUTLS=ON -DUSE_NGTCP2=ON
398422
-DCMAKE_UNITY_BUILD=ON
@@ -455,14 +479,13 @@ jobs:
455479
sudo rm -f /var/lib/man-db/auto-update
456480
sudo apt-get -o Dpkg::Use-Pty=0 install \
457481
libtool autoconf automake pkgconf \
458-
libpsl-dev libbrotli-dev libzstd-dev zlib1g-dev libidn2-0-dev libldap-dev libuv1-dev \
482+
libpsl-dev libbrotli-dev libzstd-dev zlib1g-dev libidn2-0-dev libldap-dev libuv1-dev valgrind \
459483
${INSTALL_PACKAGES} \
460484
${MATRIX_INSTALL_PACKAGES}
461485
echo 'CC=gcc-12' >> "$GITHUB_ENV"
462486
echo 'CXX=g++-12' >> "$GITHUB_ENV"
463487
464488
- name: 'cache openssl'
465-
if: ${{ matrix.build.name == 'openssl' || matrix.build.name == 'openssl-quic' }}
466489
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
467490
id: cache-openssl-http3-no-deprecated
468491
env:
@@ -502,6 +525,17 @@ jobs:
502525
key: ${{ runner.os }}-http3-build-${{ env.cache-name }}-${{ env.BORINGSSL_VERSION }}
503526
fail-on-cache-miss: true
504527

528+
- name: 'cache nettle'
529+
if: ${{ matrix.build.name == 'gnutls' }}
530+
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
531+
id: cache-nettle
532+
env:
533+
cache-name: cache-nettle
534+
with:
535+
path: ~/nettle/build
536+
key: ${{ runner.os }}-http3-build-${{ env.cache-name }}-${{ env.NETTLE_VERSION }}
537+
fail-on-cache-miss: true
538+
505539
- name: 'cache gnutls'
506540
if: ${{ matrix.build.name == 'gnutls' }}
507541
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
@@ -510,7 +544,7 @@ jobs:
510544
cache-name: cache-gnutls
511545
with:
512546
path: ~/gnutls/build
513-
key: ${{ runner.os }}-http3-build-${{ env.cache-name }}-${{ env.GNUTLS_VERSION }}
547+
key: ${{ runner.os }}-http3-build-${{ env.cache-name }}-${{ env.GNUTLS_VERSION }}-${{ env.NETTLE_VERSION }}
514548
fail-on-cache-miss: true
515549

516550
- name: 'cache wolfssl'
@@ -541,7 +575,7 @@ jobs:
541575
cache-name: cache-ngtcp2
542576
with:
543577
path: ~/ngtcp2/build
544-
key: ${{ runner.os }}-http3-build-${{ env.cache-name }}-${{ env.NGTCP2_VERSION }}-${{ env.OPENSSL_VERSION }}-${{ env.LIBRESSL_VERSION }}-${{ env.AWSLC_VERSION }}-${{ env.GNUTLS_VERSION }}-${{ env.WOLFSSL_VERSION }}
578+
key: ${{ runner.os }}-http3-build-${{ env.cache-name }}-${{ env.NGTCP2_VERSION }}-${{ env.OPENSSL_VERSION }}-${{ env.LIBRESSL_VERSION }}-${{ env.AWSLC_VERSION }}-${{ env.NETTLE_VERSION }}-${{ env.GNUTLS_VERSION }}-${{ env.WOLFSSL_VERSION }}
545579
fail-on-cache-miss: true
546580

547581
- name: 'cache ngtcp2 boringssl'
@@ -578,7 +612,7 @@ jobs:
578612
if: ${{ matrix.build.name == 'quiche' && steps.cache-quiche.outputs.cache-hit != 'true' }}
579613
run: |
580614
cd ~
581-
git clone --quiet --depth=1 -b "${QUICHE_VERSION}" --recursive https://github.com/cloudflare/quiche.git
615+
git clone --quiet --depth 1 -b "${QUICHE_VERSION}" --recursive https://github.com/cloudflare/quiche
582616
cd quiche
583617
#### Work-around https://github.com/curl/curl/issues/7927 #######
584618
#### See https://github.com/alexcrichton/cmake-rs/issues/131 ####
@@ -594,7 +628,7 @@ jobs:
594628
# lib dir
595629
# /home/runner/quiche/quiche/deps/boringssl/src/lib
596630
597-
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
631+
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
598632
with:
599633
persist-credentials: false
600634

@@ -604,6 +638,7 @@ jobs:
604638

605639
- name: 'configure'
606640
env:
641+
LDFLAGS: '${{ matrix.build.LDFLAGS }}'
607642
MATRIX_CONFIGURE: '${{ matrix.build.configure }}'
608643
MATRIX_GENERATE: '${{ matrix.build.generate }}'
609644
MATRIX_PKG_CONFIG_PATH: '${{ matrix.build.PKG_CONFIG_PATH }}'
@@ -665,9 +700,19 @@ jobs:
665700
666701
- name: 'run tests'
667702
if: ${{ !contains(matrix.build.install_steps, 'skipall') && !contains(matrix.build.install_steps, 'skiprun') }}
668-
env:
669-
TFLAGS: '${{ matrix.build.tflags }}'
670703
run: |
704+
export TFLAGS='-n'
705+
source ~/venv/bin/activate
706+
if [ "${MATRIX_BUILD}" = 'cmake' ]; then
707+
cmake --build bld --verbose --target test-ci
708+
else
709+
make -C bld V=1 test-ci
710+
fi
711+
712+
- name: 'run tests (valgrind)'
713+
if: ${{ !contains(matrix.build.install_steps, 'skipall') && !contains(matrix.build.install_steps, 'skiprun') }}
714+
run: |
715+
export TFLAGS='-j6 HTTP/3'
671716
source ~/venv/bin/activate
672717
if [ "${MATRIX_BUILD}" = 'cmake' ]; then
673718
cmake --build bld --verbose --target test-ci
@@ -681,7 +726,7 @@ jobs:
681726
[ -d ~/venv ] || python3 -m venv ~/venv
682727
~/venv/bin/pip --disable-pip-version-check --no-input --no-cache-dir install --progress-bar off --prefer-binary -r tests/http/requirements.txt
683728
684-
- name: 'run pytest event based'
729+
- name: 'run pytest (event based)'
685730
if: ${{ !contains(matrix.build.install_steps, 'skipall') && !contains(matrix.build.install_steps, 'skiprun') }}
686731
env:
687732
CURL_TEST_EVENT: 1

0 commit comments

Comments
 (0)