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 b92fee8  Branch image updates for cmake (#253)
b92fee8 is described below

commit b92fee81c3847a8d6b1164025c889e146bfc1d46
Author: Brian Neradt <[email protected]>
AuthorDate: Mon Oct 23 15:11:07 2023 -0500

    Branch image updates for cmake (#253)
    
    Updates the following images for cmake:
    * ubuntu:20.04
    * debian:11
    * rockylinux:9
---
 docker/{debian => debian11}/Dockerfile       |   2 +-
 docker/{debian => debian12}/Dockerfile       |   0
 docker/rockylinux9/Dockerfile                | 182 ++++++++++++++++---------
 docker/rockylinux9/build_h3_tools.sh         | 195 +++++++++++++++++++++------
 docker/ubuntu/Dockerfile                     |  15 ---
 docker/{ubuntu2204 => ubuntu2004}/Dockerfile |   9 +-
 docker/ubuntu2204/Dockerfile                 |   3 +-
 7 files changed, 276 insertions(+), 130 deletions(-)

diff --git a/docker/debian/Dockerfile b/docker/debian11/Dockerfile
similarity index 97%
copy from docker/debian/Dockerfile
copy to docker/debian11/Dockerfile
index 02bf7ed..5c9c809 100644
--- a/docker/debian/Dockerfile
+++ b/docker/debian11/Dockerfile
@@ -1,6 +1,6 @@
 # syntax=docker/dockerfile:1
 
-FROM debian:12
+FROM debian:11
 
 RUN <<EOT /bin/bash
   set -ex
diff --git a/docker/debian/Dockerfile b/docker/debian12/Dockerfile
similarity index 100%
rename from docker/debian/Dockerfile
rename to docker/debian12/Dockerfile
diff --git a/docker/rockylinux9/Dockerfile b/docker/rockylinux9/Dockerfile
index 418c775..3209387 100644
--- a/docker/rockylinux9/Dockerfile
+++ b/docker/rockylinux9/Dockerfile
@@ -1,90 +1,142 @@
 FROM rockylinux:9
 
-RUN dnf -y install epel-release dnf-plugins-core ; \
-    dnf config-manager --set-enabled crb ;  \
-    dnf install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm ; \
-    dnf repolist ; \
-    dnf -y update ; \
-    # Compilers
-    dnf -y install ccache make pkgconfig bison flex gcc-c++ clang \
-    # Autoconf
+RUN <<EOF
+  set -e
+  dnf -y install epel-release dnf-plugins-core
+  dnf config-manager --set-enabled crb
+  dnf install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm
+  dnf repolist
+  dnf -y update
+
+  # Compilers
+  dnf -y install \
+    ccache make pkgconfig bison flex gcc-c++ clang cmake ninja-build \
     autoconf automake libtool \
-    # Various other tools
-    sudo git rpm-build file wget openssl hwloc nghttp2 libnghttp2-devel ; \
-    # Devel packages that ATS needs
-    dnf -y install openssl-devel expat-devel pcre-devel libcap-devel \
-        hwloc-devel libunwind-devel xz-devel libcurl-devel ncurses-devel \
-        jemalloc-devel GeoIP-devel luajit-devel brotli-devel \
-        ImageMagick-devel ImageMagick-c++-devel hiredis-devel \
-        zlib-devel libmaxminddb-devel perl-ExtUtils-MakeMaker \
-        perl-Digest-SHA perl-URI perl-FindBin curl tcl-devel java; \
-    # autest stuff
-    dnf -y install python3 httpd-tools procps-ng nmap-ncat python3-pip \
-        python3-gunicorn python3-requests python3-devel python3-psutil \
-        telnet golang;
-
-RUN pip3 install --upgrade pip
-RUN pip3 install pipenv httpbin
-#RUN dnf -y install gcc-toolset-11 gcc-toolset-11-libasan-devel
-RUN dnf -y install go-toolset llvm-toolset
-
-# Install openssl-quic
-#RUN dnf install -y python38-devel
-#RUN alternatives --set python /usr/bin/python3.8
-RUN dnf -y install libev-devel jemalloc-devel libxml2-devel \
+    sudo git rpm-build file wget openssl hwloc nghttp2 libnghttp2-devel \
+    go-toolset llvm-toolset
+
+  # Devel packages that ATS needs.
+  #
+  # --alowerasing for cur. See:
+  # https://bugs.launchpad.net/tripleo/+bug/1953156
+  dnf -y install --allowerasing \
+    openssl-devel expat-devel pcre-devel libcap-devel hwloc-devel 
libunwind-devel \
+    xz-devel libcurl-devel ncurses-devel jemalloc-devel GeoIP-devel 
luajit-devel brotli-devel \
+    ImageMagick-devel ImageMagick-c++-devel hiredis-devel zlib-devel 
libmaxminddb-devel \
+    perl-ExtUtils-MakeMaker perl-Digest-SHA perl-URI perl-IPC-Cmd 
perl-Pod-Html perl-FindBin \
+    curl tcl-devel java
+
+  # autest stuff
+  dnf -y install \
+    python3 httpd-tools procps-ng nmap-ncat python3-pip \
+    python3-gunicorn python3-requests python3-devel python3-psutil telnet 
golang
+EOF
+
+RUN <<EOF
+  set -e
+  pip3 install --upgrade pip
+  pip3 install pipenv httpbin
+EOF
+
+#-------------------------------------------------------------------------------
+# Install some custom build tools.
+#-------------------------------------------------------------------------------
+
+WORKDIR /root
+
+# We put our custom packages in /opt.
+RUN <<EOF
+  set -e
+  mkdir -p /opt/bin
+  chmod 755 /opt/bin
+  echo 'PATH=/opt/bin:$PATH' | tee -a /etc/profile.d/opt_bin.sh
+EOF
+ARG PATH=/opt/bin:$PATH
+
+#-------------------------------------------------------------------------------
+# Install the HTTP/3 build tools, including openssl-quic.
+#-------------------------------------------------------------------------------
+RUN <<EOF
+  set -e
+  dnf -y install libev-devel jemalloc-devel libxml2-devel \
     c-ares-devel libevent-devel jansson-devel zlib-devel systemd-devel \
     libpsl-devel libgsasl-devel libidn-devel openldap-devel
+EOF
 
-#ARG h3_tools_dir=/root/build_h3_tools
-#RUN mkdir -p ${h3_tools_dir}
-#WORKDIR ${h3_tools_dir}
-#COPY /build_h3_tools.sh ${h3_tools_dir}/build_h3_tools.sh
+# go and rust will be installed by build_h3_tools.
+RUN dnf remove -y golang rust
+RUN dnf install -y cargo
+ARG h3_tools_dir=/root/build_h3_tools
+RUN mkdir -p ${h3_tools_dir}
+COPY /build_h3_tools.sh ${h3_tools_dir}/build_h3_tools.sh
 # This will install OpenSSL QUIC and related tools in /opt.
-#RUN bash ${h3_tools_dir}/build_h3_tools.sh; rm -rf ${h3_tools_dir} 
/root/.rustup
-WORKDIR /root
+RUN <<EOF
+  set -e
+  cd ${h3_tools_dir}
+  bash ${h3_tools_dir}/build_h3_tools.sh
+
+  # Removing the build dir is crucial to keeping the Docker image size
+  # reasonable.
+  rm -rf ${h3_tools_dir} /root/.rustup
+EOF
+
+#-------------------------------------------------------------------------------
+# Various CI Job and Test Requirements.
+#-------------------------------------------------------------------------------
+
+# Autests require some go applications.
+RUN <<EOF
+  set -e
+  echo 'export PATH=$PATH:/opt/go/bin' | tee -a /etc/profile.d/go.sh
+  echo 'export GOBIN=/opt/go/bin' | tee -a /etc/profile.d/go.sh
 
-# Make sure we pick up this built version of curl, which is in /opt/bin.
-#RUN echo 'PATH=/opt/bin:$PATH' | tee -a /etc/profile.d/curl_http3.sh
+  /opt/go/bin/go install github.com/summerwind/h2spec/cmd/h2spec@latest
+  cp /root/go/bin/h2spec /opt/go/bin/
+
+  /opt/go/bin/go install 
github.com/mccutchen/go-httpbin/v2/cmd/[email protected]
+  cp /root/go/bin/go-httpbin /opt/go/bin/
+EOF
 
 RUN update-crypto-policies --set LEGACY
-RUN echo 'export GOROOT=/usr/local/go' | tee -a /etc/profile
-RUN echo 'export PATH=$PATH:/usr/local/go/bin' | tee -a /etc/profile
-RUN source /etc/profile
-RUN wget 
https://github.com/summerwind/h2spec/releases/download/v2.6.0/h2spec_linux_amd64.tar.gz
-RUN tar xf h2spec_linux_amd64.tar.gz
-RUN cp --force h2spec /usr/local/bin/h2spec
-RUN dnf clean all
-
-# 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
-# issues.
+
+# Add the CI's jenkins 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 issues.
 ARG username=jenkins
 ARG uid=1200
-RUN useradd \
+RUN <<EOF
+  set -e
+  useradd \
     --home-dir /home/${username} \
     --groups users,wheel \
     --uid ${uid} \
     --shell /bin/bash \
     --create-home \
     ${username}
-RUN echo "${username} ALL=(ALL:ALL) NOPASSWD:ALL" >> /etc/sudoers
-RUN chown -R ${username} /home/${username}
+  echo "${username} ALL=(ALL:ALL) NOPASSWD:ALL" >> /etc/sudoers
+  chown -R ${username} /home/${username}
+EOF
 
-# Install lcov requirements.
-RUN dnf install -y perl-IO-Compress
+# Install lcov.
+RUN yum install -y perl-IO-Compress
 ARG lcov_build_dir=/var/tmp/lcov_build_dir
 RUN mkdir -p ${lcov_build_dir}
-WORKDIR ${lcov_build_dir}
-RUN git clone https://github.com/linux-test-project/lcov.git; \
-    cd lcov; \
-    # v1.15 is required for g++ version 9 compiled files.
-    git checkout v1.15; \
-    make install
-WORKDIR /root
-RUN rm -rf ${lcov_build_dir}
-RUN dnf clean all
+RUN <<EOF
+  set -e
+  cd ${lcov_build_dir}
+  git clone https://github.com/linux-test-project/lcov.git
+  cd lcov
+  # v1.15 is required for g++ version 9 compiled files.
+  git checkout v1.15
+  make install
+  cd /root
+  rm -rf ${lcov_build_dir}
+EOF
 
 # Install ABI checking tools.
-RUN dnf install -y ctags elfutils-libelf-devel wdiff
+RUN yum install -y ctags elfutils-libelf-devel wdiff
 COPY /install_abi_tools.sh /root/install_abi_tools.sh
 RUN bash /root/install_abi_tools.sh
+
+# Keep this at the end to clean up the yum cache.
+RUN yum clean all
diff --git a/docker/rockylinux9/build_h3_tools.sh 
b/docker/rockylinux9/build_h3_tools.sh
index a4ac962..5e2e463 100644
--- a/docker/rockylinux9/build_h3_tools.sh
+++ b/docker/rockylinux9/build_h3_tools.sh
@@ -19,6 +19,7 @@
 #  See the License for the specific language governing permissions and
 #  limitations under the License.
 
+set -e
 
 
 # This is a slightly modified version of:
@@ -31,12 +32,12 @@
 #   versions of these over time.
 #
 # * It also doesn't run sudo since the Dockerfile will run this as root.
-
-
-set -e
+#
+# * It also doesn't use a mktemp since the caller sets up a temporary directory
+#   that it later removes.
 
 # Update this as the draft we support updates.
-OPENSSL_BRANCH=${OPENSSL_BRANCH:-"OpenSSL_1_1_1o+quic"}
+OPENSSL_BRANCH=${OPENSSL_BRANCH:-"openssl-3.1.2+quic"}
 
 # Set these, if desired, to change these to your preferred installation
 # directory
@@ -45,117 +46,221 @@ OPENSSL_BASE=${OPENSSL_BASE:-"${BASE}/openssl-quic"}
 OPENSSL_PREFIX=${OPENSSL_PREFIX:-"${OPENSSL_BASE}-${OPENSSL_BRANCH}"}
 MAKE="make"
 
-# These are for Linux like systems, specially the LDFLAGS, also depends on 
dirs above
 CFLAGS=${CFLAGS:-"-O3 -g"}
 CXXFLAGS=${CXXFLAGS:-"-O3 -g"}
-LDFLAGS=${LDFLAGS:-"-Wl,-rpath=${OPENSSL_PREFIX}/lib"}
 
 if [ -e /etc/redhat-release ]; then
     MAKE="gmake"
+    TMP_QUICHE_BSSL_PATH="${BASE}/boringssl/lib64"
     echo 
"+-------------------------------------------------------------------------+"
     echo "| You probably need to run this, or something like this, for your 
system: |"
     echo "|                                                                    
     |"
     echo "|   sudo yum -y install libev-devel jemalloc-devel python2-devel     
     |"
     echo "|   sudo yum -y install libxml2-devel c-ares-devel libevent-devel    
     |"
-    echo "|   sudo yum -y install jansson-devel zlib-devel systemd-devel       
     |"
+    echo "|   sudo yum -y install jansson-devel zlib-devel systemd-devel cargo 
     |"
+    echo "|                                                                    
     |"
+    echo "| Rust may be needed too, see https://rustup.rs for the details      
     |"
     echo 
"+-------------------------------------------------------------------------+"
     echo
     echo
 elif [ -e /etc/debian_version ]; then
+    TMP_QUICHE_BSSL_PATH="${BASE}/boringssl/lib"
     echo 
"+-------------------------------------------------------------------------+"
     echo "| You probably need to run this, or something like this, for your 
system: |"
     echo "|                                                                    
     |"
     echo "|   sudo apt -y install libev-dev libjemalloc-dev python2-dev 
libxml2-dev |"
     echo "|   sudo apt -y install libpython2-dev libc-ares-dev libsystemd-dev  
     |"
-    echo "|   sudo apt -y install libevent-dev libjansson-dev zlib1g-dev       
     |"
+    echo "|   sudo apt -y install libevent-dev libjansson-dev zlib1g-dev cargo 
     |"
+    echo "|                                                                    
     |"
+    echo "| Rust may be needed too, see https://rustup.rs for the details      
     |"
     echo 
"+-------------------------------------------------------------------------+"
     echo
     echo
 fi
 
+if [ `uname -s` = "Darwin" ]; then
+    echo 
"+-------------------------------------------------------------------------+"
+    echo "| When building on a Mac, be aware that the Apple version of clang 
may    |"
+    echo "| fail to build curl due to the issue described here:                
     |"
+    echo "| https://github.com/curl/curl/issues/11391#issuecomment-1623890325  
     |"
+    echo 
"+-------------------------------------------------------------------------+"
+fi
+
+if [ -z ${QUICHE_BSSL_PATH+x} ]; then
+   QUICHE_BSSL_PATH=${TMP_QUICHE_BSSL_PATH:-"${BASE}/boringssl/lib"}
+fi
+
 set -x
+if [ `uname -s` = "Linux" ]
+then
+  num_threads=$(nproc)
+elif [ `uname -s` = "FreeBSD" ]
+then
+  num_threads=$(sysctl -n hw.ncpu)
+else
+  # MacOS.
+  num_threads=$(sysctl -n hw.logicalcpu)
+fi
+
+# boringssl
+echo "Building boringssl..."
+
+# We need this go version.
+mkdir -p ${BASE}/go
+
+if [ `uname -m` = "arm64" -o `uname -m` = "aarch64" ]; then
+    ARCH="arm64"
+else
+    ARCH="amd64"
+fi
+
+if [ `uname -s` = "Darwin" ]; then
+    OS="darwin"
+elif [ `uname -s` = "FreeBSD" ]; then
+    OS="freebsd"
+else
+    OS="linux"
+fi
+
+wget https://go.dev/dl/go1.21.0.${OS}-${ARCH}.tar.gz
+rm -rf ${BASE}/go && tar -C ${BASE} -xf go1.21.0.${OS}-${ARCH}.tar.gz
+rm go1.21.0.${OS}-${ARCH}.tar.gz
+chmod -R a+rX ${BASE}
+
+GO_BINARY_PATH=${BASE}/go/bin/go
+if [ ! -d boringssl ]; then
+  git clone https://boringssl.googlesource.com/boringssl
+  cd boringssl
+  git checkout e4f60679caa293c047be69f57fc48b46c7452327
+  cd ..
+fi
+cd boringssl
+cmake \
+  -B build \
+  -DGO_EXECUTABLE=${GO_BINARY_PATH} \
+  -DCMAKE_INSTALL_PREFIX=${BASE}/boringssl \
+  -DCMAKE_BUILD_TYPE=Release \
+  -DCMAKE_CXX_FLAGS='-Wno-error=ignored-attributes' \
+  -DBUILD_SHARED_LIBS=1
+cmake --build build -j ${num_threads}
+cmake --install build
+chmod -R a+rX ${BASE}
+cd ..
+
+# Build quiche
+# Steps borrowed from: 
https://github.com/apache/trafficserver-ci/blob/main/docker/rockylinux8/Dockerfile
+echo "Building quiche"
+QUICHE_BASE="${BASE:-/opt}/quiche"
+[ ! -d quiche ] && git clone --recursive 
https://github.com/cloudflare/quiche.git
+cd quiche
+# Latest quiche commits breaks our code so we build from the last commit
+# we know it works, in this case this commit includes the rpath fix commit
+# for quiche. https://github.com/cloudflare/quiche/pull/1508
+# Why does the latest break our code? -> 
https://github.com/cloudflare/quiche/pull/1537
+git checkout a1b212761c6cc0b77b9121cdc313e507daf6deb3
+QUICHE_BSSL_PATH=${QUICHE_BSSL_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
+cp target/release/libquiche.a ${QUICHE_BASE}/lib/
+[ -f target/release/libquiche.so ] && cp target/release/libquiche.so 
${QUICHE_BASE}/lib/
+cp quiche/include/quiche.h ${QUICHE_BASE}/include/
+cp target/release/quiche.pc ${QUICHE_BASE}/lib/pkgconfig
+chmod -R a+rX ${BASE}
+cd ..
 
-# OpenSSL needs special hackery ... Only grabbing the branch we need here... 
Bryan has shit for network.
 echo "Building OpenSSL with QUIC support"
-[ ! -d openssl-quic ] && git clone -b ${OPENSSL_BRANCH} 
https://github.com/quictls/openssl.git openssl-quic
+[ ! -d openssl-quic ] && git clone -b ${OPENSSL_BRANCH} --depth 1 
https://github.com/quictls/openssl.git openssl-quic
 cd openssl-quic
-git checkout ca2e0784d2c38edcefd5d68028f4d954bd8faddb
-./config --prefix=${OPENSSL_PREFIX}
-${MAKE} -j $(nproc)
+./config enable-tls1_3 --prefix=${OPENSSL_PREFIX}
+${MAKE} -j ${num_threads}
 ${MAKE} install_sw
+chmod -R a+rX ${BASE}
 
 # The symlink target provides a more convenient path for the user while also
 # providing, in the symlink source, the precise branch of the OpenSSL build.
 ln -sf ${OPENSSL_PREFIX} ${OPENSSL_BASE}
+chmod -R a+rX ${BASE}
 cd ..
 
+# OpenSSL will install in /lib or lib64 depending upon the architecture.
+if [ -d "${OPENSSL_PREFIX}/lib" ]; then
+  OPENSSL_LIB="${OPENSSL_PREFIX}/lib"
+elif [ -d "${OPENSSL_PREFIX}/lib64" ]; then
+  OPENSSL_LIB="${OPENSSL_PREFIX}/lib64"
+else
+  echo "Could not find the OpenSSL install library directory."
+  exit 1
+fi
+LDFLAGS=${LDFLAGS:-"-Wl,-rpath,${OPENSSL_LIB}"}
+
 # Then nghttp3
 echo "Building nghttp3..."
-[ ! -d nghttp3 ] && git clone https://github.com/ngtcp2/nghttp3.git
+[ ! -d nghttp3 ] && git clone --depth 1 -b v0.13.0 
https://github.com/ngtcp2/nghttp3.git
 cd nghttp3
-git checkout 9b771ad0adc407b3faa8b6b2203ce7a699c5620b
 autoreconf -if
 ./configure \
   --prefix=${BASE} \
-  PKG_CONFIG_PATH=${BASE}/lib/pkgconfig:${OPENSSL_PREFIX}/lib/pkgconfig \
+  PKG_CONFIG_PATH=${BASE}/lib/pkgconfig:${OPENSSL_LIB}/pkgconfig \
   CFLAGS="${CFLAGS}" \
   CXXFLAGS="${CXXFLAGS}" \
-  LDFLAGS="${LDFLAGS}"
-#  --enable-lib-only
-${MAKE} -j $(nproc)
+  LDFLAGS="${LDFLAGS}" \
+  --enable-lib-only
+${MAKE} -j ${num_threads}
 ${MAKE} install
+chmod -R a+rX ${BASE}
 cd ..
 
 # Now ngtcp2
 echo "Building ngtcp2..."
-[ ! -d ngtcp2 ] && git clone https://github.com/ngtcp2/ngtcp2.git
+[ ! -d ngtcp2 ] && git clone --depth 1 -b v0.17.0 
https://github.com/ngtcp2/ngtcp2.git
 cd ngtcp2
-git checkout f65399b545f934b615a8d6d91e262b613456b204
 autoreconf -if
 ./configure \
   --prefix=${BASE} \
-  PKG_CONFIG_PATH=${BASE}/lib/pkgconfig:${OPENSSL_PREFIX}/lib/pkgconfig \
+  PKG_CONFIG_PATH=${BASE}/lib/pkgconfig:${OPENSSL_LIB}/pkgconfig \
   CFLAGS="${CFLAGS}" \
   CXXFLAGS="${CXXFLAGS}" \
   LDFLAGS="${LDFLAGS}" \
   --enable-lib-only
-${MAKE} -j $(nproc)
+${MAKE} -j ${num_threads}
 ${MAKE} install
+chmod -R a+rX ${BASE}
 cd ..
 
 # Then nghttp2, with support for H3
 echo "Building nghttp2 ..."
-[ ! -d nghttp2 ] && git clone https://github.com/tatsuhiro-t/nghttp2.git
+[ ! -d nghttp2 ] && git clone --depth 1 -b v1.55.1 
https://github.com/tatsuhiro-t/nghttp2.git
 cd nghttp2
-
-# This commit will be removed whenever the nghttp2 author rebases origin/quic.
-# For reference, this commit is currently described as:
-#
-# commit 25f29e7634a2c8c5ba5c63432e5d94217a6535ef
-# Author: Tatsuhiro Tsujikawa <[email protected]>
-# Date:   Mon Aug 16 16:58:11 2021 +0900
-#
-#     Compile with the latest ngtcp2
-git checkout 08676d23f964ac9aa1f9317ad30f0b7d78eb5a5a
-
 autoreconf -if
+if [ `uname -s` = "Darwin" ] || [ `uname -s` = "FreeBSD" ]
+then
+  # --enable-app requires systemd which is not available on Mac/FreeBSD.
+  ENABLE_APP=""
+else
+  ENABLE_APP="--enable-app"
+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_PREFIX}/lib/pkgconfig \
+  PKG_CONFIG_PATH=${BASE}/lib/pkgconfig:${OPENSSL_LIB}/pkgconfig \
   CFLAGS="${CFLAGS}" \
   CXXFLAGS="${CXXFLAGS}" \
-  LDFLAGS="${LDFLAGS}" \
-  --enable-lib-only
-${MAKE} -j $(nproc)
+  LDFLAGS="${LDFLAGS} -L${OPENSSL_LIB}" \
+  --enable-http3 \
+  ${ENABLE_APP}
+${MAKE} -j ${num_threads}
 ${MAKE} install
+chmod -R a+rX ${BASE}
 cd ..
 
-# And finally curl
+# Then curl
 echo "Building curl ..."
-[ ! -d curl ] && git clone https://github.com/curl/curl.git
+[ ! -d curl ] && git clone --depth 1 -b curl-8_2_1 
https://github.com/curl/curl.git
 cd curl
-git checkout 45ac4d019475df03562fe0ac54eb67e1d1de0ca7
-autoreconf -i
+# On mac autoreconf fails on the first attempt with an issue finding ltmain.sh.
+# The second runs fine.
+autoreconf -fi || autoreconf -fi
 ./configure \
   --prefix=${BASE} \
   --with-ssl=${OPENSSL_PREFIX} \
@@ -165,5 +270,7 @@ autoreconf -i
   CFLAGS="${CFLAGS}" \
   CXXFLAGS="${CXXFLAGS}" \
   LDFLAGS="${LDFLAGS}"
-${MAKE} -j $(nproc)
+${MAKE} -j ${num_threads}
 ${MAKE} install
+chmod -R a+rX ${BASE}
+cd ..
diff --git a/docker/ubuntu/Dockerfile b/docker/ubuntu/Dockerfile
deleted file mode 100644
index 2ad7d7b..0000000
--- a/docker/ubuntu/Dockerfile
+++ /dev/null
@@ -1,15 +0,0 @@
-FROM ubuntu:20.04
-
-RUN apt-get update; \
-    DEBIAN_FRONTEND=noninteractive apt-get -y install build-essential llvm 
ccache \
-    make pkgconf bison flex g++ clang gettext libc++-dev autoconf automake \
-    libtool autotools-dev git distcc file wget openssl hwloc intltool-debian 
clang-tools-10 clang-10; \
-
-    DEBIAN_FRONTEND=noninteractive apt-get -y install libssl-dev libexpat1-dev 
\
-    libpcre3-dev libcap-dev libhwloc-dev libunwind8 libunwind-dev zlib1g-dev \
-    tcl-dev tcl8.6-dev libjemalloc-dev libluajit-5.1-dev liblzma-dev \
-    libhiredis-dev libbrotli-dev libncurses-dev libgeoip-dev libmagick++-dev \
-    libmaxminddb-dev libcjose-dev libcjose0 libjansson-dev; \
-    
-    DEBIAN_FRONTEND=noninteractive apt-get autoremove; apt-get clean;
-
diff --git a/docker/ubuntu2204/Dockerfile b/docker/ubuntu2004/Dockerfile
similarity index 85%
copy from docker/ubuntu2204/Dockerfile
copy to docker/ubuntu2004/Dockerfile
index f891f3b..3c0a8d7 100644
--- a/docker/ubuntu2204/Dockerfile
+++ b/docker/ubuntu2004/Dockerfile
@@ -1,4 +1,4 @@
-FROM ubuntu:22.04
+FROM ubuntu:20.04
 
 ENV DEBIAN_FRONTEND=noninteractive
 
@@ -10,15 +10,16 @@ RUN <<EOF
     apt-get -y install build-essential llvm lld ccache \
     make pkgconf bison flex g++ clang gettext libc++-dev autoconf automake \
     libtool autotools-dev git distcc file wget openssl hwloc intltool-debian \
-    clang-tools-14 clang-14 cmake ninja-build
+    clang-tools-10 clang-10 cmake ninja-build
 
     apt-get -y install libssl-dev libexpat1-dev \
     libpcre3-dev libcap-dev libhwloc-dev libunwind8 libunwind-dev zlib1g-dev \
-    libjemalloc-dev libluajit-5.1-dev liblzma-dev \
+    tcl-dev tcl8.6-dev libjemalloc-dev libluajit-5.1-dev liblzma-dev \
     libhiredis-dev libbrotli-dev libncurses-dev libgeoip-dev libmagick++-dev \
     libmaxminddb-dev libcjose-dev libcjose0 libjansson-dev
 
-    apt-get -y autoremove; apt-get -y clean
+    apt-get -y autoremove
+    apt-get -y clean
 EOF
 
 # Add the CI's test user. N.B: 1200 is the uid that our jenkins user is
diff --git a/docker/ubuntu2204/Dockerfile b/docker/ubuntu2204/Dockerfile
index f891f3b..d5dc2ac 100644
--- a/docker/ubuntu2204/Dockerfile
+++ b/docker/ubuntu2204/Dockerfile
@@ -18,7 +18,8 @@ RUN <<EOF
     libhiredis-dev libbrotli-dev libncurses-dev libgeoip-dev libmagick++-dev \
     libmaxminddb-dev libcjose-dev libcjose0 libjansson-dev
 
-    apt-get -y autoremove; apt-get -y clean
+    apt-get -y autoremove
+    apt-get -y clean
 EOF
 
 # Add the CI's test user. N.B: 1200 is the uid that our jenkins user is

Reply via email to