This is an automated email from the ASF dual-hosted git repository.
bneradt pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/trafficserver-ci.git
The following commit(s) were added to refs/heads/main by this push:
new e5c0821 Add uv to relevant images (#416)
e5c0821 is described below
commit e5c0821206aee730a7864f6af817963ed5f58d43
Author: Brian Neradt <[email protected]>
AuthorDate: Tue Jan 6 16:15:44 2026 -0600
Add uv to relevant images (#416)
---
docker/fedora42/Dockerfile | 1 +
docker/fedora43/Dockerfile | 1 +
docker/rockylinux8/Dockerfile | 38 +++++++++++++++++++++++---
docker/rockylinux8/build_boringssl_h3_tools.sh | 16 +++++------
docker/rockylinux8/build_openssl_h3_tools.sh | 14 +++++-----
docker/rockylinux9/Dockerfile | 1 +
6 files changed, 52 insertions(+), 19 deletions(-)
diff --git a/docker/fedora42/Dockerfile b/docker/fedora42/Dockerfile
index c46bfc7..acd35f8 100644
--- a/docker/fedora42/Dockerfile
+++ b/docker/fedora42/Dockerfile
@@ -249,6 +249,7 @@ RUN <<EOF
EOF
RUN pip3 install pipenv httpbin
+RUN curl -LsSf https://astral.sh/uv/install.sh | sh
# Add the CI's test user. N.B: 1200 is the uid that our jenkins user is
# configured with, so that has to be used. Otherwise there will be permissions
diff --git a/docker/fedora43/Dockerfile b/docker/fedora43/Dockerfile
index 68242d6..4b8c995 100644
--- a/docker/fedora43/Dockerfile
+++ b/docker/fedora43/Dockerfile
@@ -249,6 +249,7 @@ RUN <<EOF
EOF
RUN pip3 install pipenv httpbin
+RUN curl -LsSf https://astral.sh/uv/install.sh | sh
# Add the CI's test user. N.B: 1200 is the uid that our jenkins user is
# configured with, so that has to be used. Otherwise there will be permissions
diff --git a/docker/rockylinux8/Dockerfile b/docker/rockylinux8/Dockerfile
index fb9d4ae..1d26f4a 100644
--- a/docker/rockylinux8/Dockerfile
+++ b/docker/rockylinux8/Dockerfile
@@ -23,7 +23,7 @@ RUN <<EOF
python3.12-devel \
libev-devel jemalloc-devel libxml2-devel \
c-ares-devel libevent-devel jansson-devel cjose-devel \
- zlib-devel systemd-devel
+ zlib-devel systemd-devel libpsl-devel
# Various other tools
dnf -y install \
@@ -69,11 +69,18 @@ ARG PATH=/opt/bin:$PATH
# older system version.
RUN <<EOF
set -e
- wget
https://github.com/ninja-build/ninja/releases/download/v1.11.1/ninja-linux.zip
- unzip ninja-linux.zip
+ arch=$(uname -m)
+ ninja_version=1.12.1
+ if [ "${arch}" = "aarch64" ]; then
+ ninja_zip="ninja-linux-aarch64.zip"
+ else
+ ninja_zip="ninja-linux.zip"
+ fi
+ wget
https://github.com/ninja-build/ninja/releases/download/v${ninja_version}/${ninja_zip}
+ unzip ${ninja_zip}
cp ninja /opt/bin
chmod 755 /opt/bin/
- rm -f ninja ninja-linux.zip
+ rm -f ninja ${ninja_zip}
EOF
RUN <<EOF
@@ -83,6 +90,8 @@ RUN <<EOF
python3.12 -m pip install --upgrade pip
python3.12 -m pip install pipenv httpbin
+
+ curl -LsSf https://astral.sh/uv/install.sh | sh
EOF
#-------------------------------------------------------------------------------
@@ -102,6 +111,25 @@ RUN <<EOF
dnf clean all
EOF
+# Build c-ares from source since Rocky Linux 8's version (1.13.0) is too old
+# for nghttp2's --enable-app option which requires >= 1.16.0.
+RUN <<EOF
+ set -e
+ source /opt/rh/gcc-toolset-14/enable
+ cd /root
+ c_ares_version=1.34.4
+ wget
https://github.com/c-ares/c-ares/releases/download/v${c_ares_version}/c-ares-${c_ares_version}.tar.gz
+ tar xf c-ares-${c_ares_version}.tar.gz
+ cd c-ares-${c_ares_version}
+ # Use INSTALL_LIBDIR=lib to ensure pkg-config file goes to a known location.
+ cmake -B build -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_INSTALL_LIBDIR=lib
+ cmake --build build
+ cmake --install build
+ cd /root
+ rm -rf c-ares-${c_ares_version} c-ares-${c_ares_version}.tar.gz
+ ldconfig /usr/local/lib
+EOF
+
RUN <<EOF
set -e
cd ${h3_tools_dir}
@@ -172,6 +200,7 @@ RUN <<EOF
-DCMAKE_INSTALL_PREFIX=/opt/ \
-DCMAKE_CXX_STANDARD=17 \
-DCMAKE_CXX_FLAGS="-Wno-sign-compare" \
+ -DCMAKE_EXE_LINKER_FLAGS="-ldl" \
-DOPENSSL_LIBRARY_PATH=${OPENSSL_LIB} \
-DOPENSSL_INCLUDE_PATH=${OPENSSL_PREFIX}/include
cmake --build build_openssl
@@ -189,6 +218,7 @@ RUN <<EOF
-DCMAKE_INSTALL_PREFIX=/opt/nuraft-boringssl \
-DCMAKE_CXX_STANDARD=17 \
-DCMAKE_CXX_FLAGS="-Wno-sign-compare" \
+ -DCMAKE_EXE_LINKER_FLAGS="-ldl" \
-DOPENSSL_LIBRARY_PATH=${BORINGSSL_LIB} \
-DOPENSSL_INCLUDE_PATH=${BORINGSSL_PREFIX}/include
cmake --build build_boringssl
diff --git a/docker/rockylinux8/build_boringssl_h3_tools.sh
b/docker/rockylinux8/build_boringssl_h3_tools.sh
index e24ee3b..72f790b 100755
--- a/docker/rockylinux8/build_boringssl_h3_tools.sh
+++ b/docker/rockylinux8/build_boringssl_h3_tools.sh
@@ -128,7 +128,7 @@ GO_BINARY_PATH=${BASE}/go/bin/go
if [ ! -d boringssl ]; then
git clone https://boringssl.googlesource.com/boringssl
cd boringssl
- git checkout a1843d660b47116207877614af53defa767be46a
+ git checkout 45b2464158379f48cec6e35a1ef503ddea1511a6
cd ..
fi
cd boringssl
@@ -180,7 +180,7 @@ echo "Building quiche"
QUICHE_BASE="${BASE:-/opt}/quiche"
[ ! -d quiche ] && git clone https://github.com/cloudflare/quiche.git
cd quiche
-git checkout 0.22.0
+git checkout 0.23.2
QUICHE_BSSL_PATH=${BORINGSSL_LIB_PATH} QUICHE_BSSL_LINK_KIND=dylib cargo build
-j4 --package quiche --release --features ffi,pkg-config-meta,qlog
mkdir -p ${QUICHE_BASE}/lib/pkgconfig
mkdir -p ${QUICHE_BASE}/include
@@ -197,7 +197,7 @@ LDFLAGS=${LDFLAGS:-"-Wl,-rpath,${BORINGSSL_LIB_PATH}"}
# Then nghttp3
echo "Building nghttp3..."
-[ ! -d nghttp3 ] && git clone --depth 1 -b v1.2.0
https://github.com/ngtcp2/nghttp3.git
+[ ! -d nghttp3 ] && git clone --depth 1 -b v1.8.0
https://github.com/ngtcp2/nghttp3.git
cd nghttp3
git submodule update --init
autoreconf -if
@@ -215,7 +215,7 @@ cd ..
# Now ngtcp2
echo "Building ngtcp2..."
-[ ! -d ngtcp2 ] && git clone --depth 1 -b v1.4.0
https://github.com/ngtcp2/ngtcp2.git
+[ ! -d ngtcp2 ] && git clone --depth 1 -b v1.11.0
https://github.com/ngtcp2/ngtcp2.git
cd ngtcp2
autoreconf -if
./configure \
@@ -235,7 +235,7 @@ cd ..
# Then nghttp2, with support for H3
echo "Building nghttp2 ..."
-[ ! -d nghttp2 ] && git clone --depth 1 -b v1.60.0
https://github.com/tatsuhiro-t/nghttp2.git
+[ ! -d nghttp2 ] && git clone --depth 1 -b v1.65.0
https://github.com/tatsuhiro-t/nghttp2.git
cd nghttp2
git submodule update --init
autoreconf -if
@@ -250,10 +250,10 @@ fi
# Note for FreeBSD: This will not build h2load. h2load can be run on a remote
machine.
./configure \
--prefix=${BASE} \
- PKG_CONFIG_PATH=${BASE}/lib/pkgconfig \
+ PKG_CONFIG_PATH=${BASE}/lib/pkgconfig:/usr/local/lib/pkgconfig \
CFLAGS="${CFLAGS} -I${BORINGSSL_PATH}/include" \
CXXFLAGS="${CXXFLAGS} -I${BORINGSSL_PATH}/include" \
- LDFLAGS="${LDFLAGS}" \
+ LDFLAGS="${LDFLAGS} -L/usr/local/lib" \
OPENSSL_LIBS="-lcrypto -lssl -L${BORINGSSL_LIB_PATH}" \
--enable-http3 \
--disable-examples \
@@ -265,7 +265,7 @@ cd ..
# Then curl
echo "Building curl ..."
-[ ! -d curl ] && git clone --depth 1 -b curl-8_7_1
https://github.com/curl/curl.git
+[ ! -d curl ] && git clone --depth 1 -b curl-8_12_1
https://github.com/curl/curl.git
cd curl
# On mac autoreconf fails on the first attempt with an issue finding ltmain.sh.
# The second runs fine.
diff --git a/docker/rockylinux8/build_openssl_h3_tools.sh
b/docker/rockylinux8/build_openssl_h3_tools.sh
index bde4bbc..0283fae 100755
--- a/docker/rockylinux8/build_openssl_h3_tools.sh
+++ b/docker/rockylinux8/build_openssl_h3_tools.sh
@@ -127,7 +127,7 @@ echo "Building quiche"
QUICHE_BASE="${BASE:-/opt}/quiche"
[ ! -d quiche ] && git clone https://github.com/cloudflare/quiche.git
cd quiche
-git checkout 0.22.0
+git checkout 0.23.2
PKG_CONFIG_PATH="$OPENSSL_LIB"/pkgconfig LD_LIBRARY_PATH="$OPENSSL_LIB" \
cargo build -j4 --package quiche --release --features
ffi,pkg-config-meta,qlog,openssl
@@ -146,7 +146,7 @@ cd ..
# Then nghttp3
echo "Building nghttp3..."
-[ ! -d nghttp3 ] && git clone --depth 1 -b v1.2.0
https://github.com/ngtcp2/nghttp3.git
+[ ! -d nghttp3 ] && git clone --depth 1 -b v1.8.0
https://github.com/ngtcp2/nghttp3.git
cd nghttp3
git submodule update --init
autoreconf -if
@@ -164,7 +164,7 @@ cd ..
# Now ngtcp2
echo "Building ngtcp2..."
-[ ! -d ngtcp2 ] && git clone --depth 1 -b v1.4.0
https://github.com/ngtcp2/ngtcp2.git
+[ ! -d ngtcp2 ] && git clone --depth 1 -b v1.11.0
https://github.com/ngtcp2/ngtcp2.git
cd ngtcp2
autoreconf -if
./configure \
@@ -181,7 +181,7 @@ cd ..
# Then nghttp2, with support for H3
echo "Building nghttp2 ..."
-[ ! -d nghttp2 ] && git clone --depth 1 -b v1.60.0
https://github.com/tatsuhiro-t/nghttp2.git
+[ ! -d nghttp2 ] && git clone --depth 1 -b v1.65.0
https://github.com/tatsuhiro-t/nghttp2.git
cd nghttp2
git submodule update --init
autoreconf -if
@@ -196,10 +196,10 @@ fi
# Note for FreeBSD: This will not build h2load. h2load can be run on a remote
machine.
./configure \
--prefix=${BASE} \
- PKG_CONFIG_PATH=${BASE}/lib/pkgconfig:${OPENSSL_LIB}/pkgconfig \
+
PKG_CONFIG_PATH=${BASE}/lib/pkgconfig:${OPENSSL_LIB}/pkgconfig:/usr/local/lib/pkgconfig
\
CFLAGS="${CFLAGS}" \
CXXFLAGS="${CXXFLAGS}" \
- LDFLAGS="${LDFLAGS} -L${OPENSSL_LIB}" \
+ LDFLAGS="${LDFLAGS} -L${OPENSSL_LIB} -L/usr/local/lib" \
--enable-http3 \
${ENABLE_APP}
${MAKE} -j ${num_threads}
@@ -209,7 +209,7 @@ cd ..
# Then curl
echo "Building curl ..."
-[ ! -d curl ] && git clone --depth 1 -b curl-8_7_1
https://github.com/curl/curl.git
+[ ! -d curl ] && git clone --depth 1 -b curl-8_12_1
https://github.com/curl/curl.git
cd curl
# On mac autoreconf fails on the first attempt with an issue finding ltmain.sh.
# The second runs fine.
diff --git a/docker/rockylinux9/Dockerfile b/docker/rockylinux9/Dockerfile
index b33a9aa..b640130 100644
--- a/docker/rockylinux9/Dockerfile
+++ b/docker/rockylinux9/Dockerfile
@@ -38,6 +38,7 @@ RUN <<EOF
set -e
pip3 install --upgrade pip
pip3 install pipenv httpbin
+ curl -LsSf https://astral.sh/uv/install.sh | sh
EOF
#-------------------------------------------------------------------------------