33ARG ARCH=
44ARG TOOLCHAIN=
55ARG TOOLCHAIN_PREFIX=
6- ARG OPENSSL_TARGET=
76
8- ARG OPENSSL_VERSION =
9- ARG OPENSSL_SHA256 =
7+ ARG AWS_LC_VERSION =
8+ ARG AWS_LC_SHA256 =
109
1110ARG PCRE2_VERSION=
1211ARG PCRE2_SHA256=
@@ -29,31 +28,37 @@ ARG ARCH_FLAGS
2928RUN dpkg --add-architecture "${ARCH}" && \
3029 apt-get update && \
3130 apt-get install --no-install-recommends -y \
32- gcc-10-${TOOLCHAIN} libc6-dev-${ARCH}-cross make file libc6-dev perl libtext-template-perl \
33- libreadline-dev curl ca-certificates libcrypt-dev:${ARCH} gcc-10 binutils-${TOOLCHAIN} binutils
31+ gcc-12-${TOOLCHAIN} g++-12-${TOOLCHAIN} libc6-dev-${ARCH}-cross make file libc6-dev perl libtext-template-perl \
32+ libreadline-dev curl ca-certificates libcrypt-dev:${ARCH} gcc-12 g++-12 binutils-${TOOLCHAIN} binutils \
33+ cmake ninja-build golang
3434
35- ### OpenSSL
35+ ### AWS-LC
3636
37- FROM builder as ssl
37+ FROM builder as awslc
3838
3939ARG ARCH
4040ARG TOOLCHAIN
4141ARG TOOLCHAIN_PREFIX
4242ARG ARCH_FLAGS
4343
44- ARG OPENSSL_VERSION
45- ARG OPENSSL_SHA256
46- ARG OPENSSL_TARGET
47-
48- RUN curl -OJL https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz && \
49- echo ${OPENSSL_SHA256} openssl-${OPENSSL_VERSION}.tar.gz | sha256sum -c && \
50- tar zxvf openssl-${OPENSSL_VERSION}.tar.gz && \
51- cd openssl-${OPENSSL_VERSION} && \
52- ./Configure ${OPENSSL_TARGET} --cross-compile-prefix=/usr/bin/${TOOLCHAIN_PREFIX}- CC=gcc-10 \
53- -march=${ARCH_FLAGS} enable-ec_nistp_64_gcc_128 \
54- no-shared --prefix=/tmp/openssl --openssldir=/tmp/openssl --libdir=lib && \
55- make && \
56- make install_sw
44+ ARG AWS_LC_VERSION
45+ ARG AWS_LC_SHA256
46+
47+ RUN curl -OJL https://github.com/aws/aws-lc/archive/refs/tags/${AWS_LC_VERSION}.tar.gz && \
48+ echo ${AWS_LC_SHA256} aws-lc-${AWS_LC_VERSION#v}.tar.gz | sha256sum -c && \
49+ tar zxvf aws-lc-${AWS_LC_VERSION#v}.tar.gz && \
50+ cd aws-lc-${AWS_LC_VERSION#v} && \
51+ if [ "${ARCH}" = "amd64" ]; then CMAKE_ARCH="x86_64"; elif [ "${ARCH}" = "arm64" ]; then CMAKE_ARCH="aarch64"; else CMAKE_ARCH="${ARCH}"; fi && \
52+ cmake -GNinja \
53+ -DCMAKE_SYSTEM_NAME=Linux \
54+ -DCMAKE_SYSTEM_PROCESSOR=${CMAKE_ARCH} \
55+ -DCMAKE_C_COMPILER=/usr/bin/${TOOLCHAIN_PREFIX}-gcc-12 \
56+ -DCMAKE_CXX_COMPILER=/usr/bin/${TOOLCHAIN_PREFIX}-g++-12 \
57+ -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=OFF -DBUILD_SHARED_LIBS=OFF \
58+ -DCMAKE_INSTALL_PREFIX=/tmp/awslc \
59+ . && \
60+ ninja && \
61+ ninja install
5762
5863### PCRE2
5964
@@ -71,7 +76,7 @@ RUN curl -OJL "https://github.com/PhilipHazel/pcre2/releases/download/pcre2-${PC
7176 echo ${PCRE2_SHA256} pcre2-${PCRE2_VERSION}.tar.gz | sha256sum -c && \
7277 tar zxvf pcre2-${PCRE2_VERSION}.tar.gz && \
7378 cd pcre2-${PCRE2_VERSION} && \
74- CC=/usr/bin/${TOOLCHAIN_PREFIX}-gcc-10 CFLAGS="-O3 -march=${ARCH_FLAGS} -g" \
79+ CC=/usr/bin/${TOOLCHAIN_PREFIX}-gcc-12 CFLAGS="-O3 -march=${ARCH_FLAGS} -g" \
7580 ./configure --prefix=/tmp/pcre2 --disable-shared --enable-jit --host=${TOOLCHAIN} && \
7681 make install
7782
@@ -91,7 +96,7 @@ RUN curl -OJL "http://www.lua.org/ftp/lua-${LUA_VERSION}.tar.gz" && \
9196 echo "${LUA_MD5} lua-${LUA_VERSION}.tar.gz" | md5sum -c && \
9297 tar zxf lua-${LUA_VERSION}.tar.gz && \
9398 cd lua-${LUA_VERSION} && \
94- make CC="/usr/bin/${TOOLCHAIN_PREFIX}-gcc-10 " \
99+ make CC="/usr/bin/${TOOLCHAIN_PREFIX}-gcc-12 " \
95100 MYCFLAGS="-march=${ARCH_FLAGS} -g" \
96101 AR="/usr/bin/${TOOLCHAIN_PREFIX}-ar rcu" \
97102 RANLIB=/usr/bin/${TOOLCHAIN_PREFIX}-ranlib && \
@@ -101,7 +106,7 @@ RUN curl -OJL "http://www.lua.org/ftp/lua-${LUA_VERSION}.tar.gz" && \
101106
102107FROM builder as haproxy
103108
104- COPY --from=ssl /tmp/openssl /tmp/openssl
109+ COPY --from=awslc /tmp/awslc /tmp/awslc
105110COPY --from=pcre2 /tmp/pcre2 /tmp/pcre2
106111COPY --from=lua /tmp/lua /tmp/lua
107112
@@ -120,10 +125,10 @@ RUN curl -OJL "http://www.haproxy.org/download/${HAPROXY_MAJOR}/src/haproxy-${HA
120125 make -C haproxy-${HAPROXY_VERSION} \
121126 TARGET=linux-glibc \
122127 ARCH_FLAGS="-march=${ARCH_FLAGS}" \
123- CC=/usr/bin/${TOOLCHAIN_PREFIX}-gcc-10 \
128+ CC=/usr/bin/${TOOLCHAIN_PREFIX}-gcc-12 \
124129 USE_SLZ=1 \
125130 USE_STATIC_PCRE2=1 USE_PCRE2_JIT=1 PCRE2DIR=/tmp/pcre2 \
126- USE_OPENSSL=1 SSL_INC=/tmp/openssl /include SSL_LIB=/tmp/openssl /lib \
131+ USE_OPENSSL=1 SSL_INC=/tmp/awslc /include SSL_LIB=/tmp/awslc /lib \
127132 USE_LUA=1 LUA_LIB=/tmp/lua/lib LUA_INC=/tmp/lua/include \
128133 USE_PROMEX=1 \
129134 DESTDIR=/tmp/haproxy PREFIX= \
@@ -145,3 +150,4 @@ COPY --from=haproxy /tmp/haproxy /usr/local/
145150RUN rm -rf /var/lib/apt/lists/*
146151
147152CMD ["haproxy", "-f", "/usr/local/etc/haproxy/haproxy.cfg"]
153+
0 commit comments