12c593315Sopenharmony_ciFROM debian:12 as build
22c593315Sopenharmony_ci
32c593315Sopenharmony_ciRUN apt-get update && \
42c593315Sopenharmony_ci    apt-get install -y --no-install-recommends \
52c593315Sopenharmony_ci        git clang make binutils autoconf automake autotools-dev libtool \
62c593315Sopenharmony_ci        pkg-config \
72c593315Sopenharmony_ci        zlib1g-dev libev-dev libjemalloc-dev ruby-dev libc-ares-dev bison \
82c593315Sopenharmony_ci        libelf-dev
92c593315Sopenharmony_ci
102c593315Sopenharmony_ciRUN git clone --depth 1 -b OpenSSL_1_1_1w+quic https://github.com/quictls/openssl && \
112c593315Sopenharmony_ci    cd openssl && \
122c593315Sopenharmony_ci    ./config --openssldir=/etc/ssl && \
132c593315Sopenharmony_ci    make -j$(nproc) && \
142c593315Sopenharmony_ci    make install_sw && \
152c593315Sopenharmony_ci    cd .. && \
162c593315Sopenharmony_ci    rm -rf openssl
172c593315Sopenharmony_ci
182c593315Sopenharmony_ciRUN git clone --depth 1 -b v1.0.0 https://github.com/ngtcp2/nghttp3 && \
192c593315Sopenharmony_ci    cd nghttp3 && \
202c593315Sopenharmony_ci    autoreconf -i && \
212c593315Sopenharmony_ci    ./configure --enable-lib-only && \
222c593315Sopenharmony_ci    make -j$(nproc) && \
232c593315Sopenharmony_ci    make install-strip && \
242c593315Sopenharmony_ci    cd .. && \
252c593315Sopenharmony_ci    rm -rf nghttp3
262c593315Sopenharmony_ci
272c593315Sopenharmony_ciRUN git clone --depth 1 -b v1.0.1 https://github.com/ngtcp2/ngtcp2 && \
282c593315Sopenharmony_ci    cd ngtcp2 && \
292c593315Sopenharmony_ci    autoreconf -i && \
302c593315Sopenharmony_ci    ./configure --enable-lib-only \
312c593315Sopenharmony_ci        LIBTOOL_LDFLAGS="-static-libtool-libs" \
322c593315Sopenharmony_ci        OPENSSL_LIBS="-l:libssl.a -l:libcrypto.a -ldl -lpthread" \
332c593315Sopenharmony_ci        PKG_CONFIG_PATH="/usr/local/lib64/pkgconfig" && \
342c593315Sopenharmony_ci    make -j$(nproc) && \
352c593315Sopenharmony_ci    make install-strip && \
362c593315Sopenharmony_ci    cd .. && \
372c593315Sopenharmony_ci    rm -rf ngtcp2
382c593315Sopenharmony_ci
392c593315Sopenharmony_ciRUN git clone --depth 1 -b v1.2.2 https://github.com/libbpf/libbpf && \
402c593315Sopenharmony_ci    cd libbpf && \
412c593315Sopenharmony_ci    PREFIX=/usr/local make -C src install && \
422c593315Sopenharmony_ci    cd .. && \
432c593315Sopenharmony_ci    rm -rf libbpf
442c593315Sopenharmony_ci
452c593315Sopenharmony_ciRUN git clone --depth 1 https://github.com/nghttp2/nghttp2.git && \
462c593315Sopenharmony_ci    cd nghttp2 && \
472c593315Sopenharmony_ci    git submodule update --init && \
482c593315Sopenharmony_ci    autoreconf -i && \
492c593315Sopenharmony_ci    ./configure --disable-examples --disable-hpack-tools \
502c593315Sopenharmony_ci        --with-mruby --with-neverbleed \
512c593315Sopenharmony_ci        --enable-http3 --with-libbpf \
522c593315Sopenharmony_ci        CC=clang CXX=clang++ \
532c593315Sopenharmony_ci        LIBTOOL_LDFLAGS="-static-libtool-libs" \
542c593315Sopenharmony_ci        OPENSSL_LIBS="-l:libssl.a -l:libcrypto.a -ldl -pthread" \
552c593315Sopenharmony_ci        LIBEV_LIBS="-l:libev.a" \
562c593315Sopenharmony_ci        JEMALLOC_LIBS="-l:libjemalloc.a" \
572c593315Sopenharmony_ci        LIBCARES_LIBS="-l:libcares.a" \
582c593315Sopenharmony_ci        ZLIB_LIBS="-l:libz.a" \
592c593315Sopenharmony_ci        LIBBPF_LIBS="-L/usr/local/lib64 -l:libbpf.a -l:libelf.a" \
602c593315Sopenharmony_ci        LDFLAGS="-static-libgcc -static-libstdc++" \
612c593315Sopenharmony_ci        PKG_CONFIG_PATH="/usr/local/lib64/pkgconfig" && \
622c593315Sopenharmony_ci    make -j$(nproc) install-strip && \
632c593315Sopenharmony_ci    cd .. && \
642c593315Sopenharmony_ci    rm -rf nghttp2
652c593315Sopenharmony_ci
662c593315Sopenharmony_ciFROM gcr.io/distroless/base-debian12
672c593315Sopenharmony_ci
682c593315Sopenharmony_ciCOPY --from=build \
692c593315Sopenharmony_ci    /usr/local/share/nghttp2/ \
702c593315Sopenharmony_ci    /usr/local/share/nghttp2/
712c593315Sopenharmony_ciCOPY --from=build \
722c593315Sopenharmony_ci    /usr/local/bin/h2load \
732c593315Sopenharmony_ci    /usr/local/bin/nghttpx \
742c593315Sopenharmony_ci    /usr/local/bin/nghttp \
752c593315Sopenharmony_ci    /usr/local/bin/nghttpd \
762c593315Sopenharmony_ci    /usr/local/bin/
772c593315Sopenharmony_ciCOPY --from=build /usr/local/lib/nghttp2/reuseport_kern.o \
782c593315Sopenharmony_ci    /usr/local/lib/nghttp2/
79