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 c368829 I cannot get the nghttp2 to work on centos:7 (#328) c368829 is described below commit c3688295d99047f3871be4cbb68d845b82b8e75c Author: Brian Neradt <brian.ner...@gmail.com> AuthorDate: Fri Mar 22 17:51:37 2024 -0500 I cannot get the nghttp2 to work on centos:7 (#328) gmake[2]: Leaving directory '/root/build_h3_tools/nghttp2/third-party' Making all in src gmake[2]: Entering directory '/root/build_h3_tools/nghttp2/src' Makefile:1237: ../tests/munit/.deps/nghttpx_unittest-munit.Po: No such file or directory gmake[2]: *** No rule to make target '../tests/munit/.deps/nghttpx_unittest-munit.Po'. Stop. gmake[2]: Leaving directory '/root/build_h3_tools/nghttp2/src' gmake[1]: *** [Makefile:559: all-recursive] Error 1 gmake[1]: Leaving directory '/root/build_h3_tools/nghttp2' gmake: *** [Makefile:467: all] Error 2 I believe this is due to the test files being .c instead of .cc, and the older automake doesn't handle that well. This all worked on rockylinux:8, 9, and fedora:39. Giving up, at least for now. I wish there were a switch to turn off the unit tests. Co-authored-by: bneradt <bner...@yahooinc.com> --- docker/centos7/build_h3_tools.sh | 110 ++++++++++++++++----------------------- 1 file changed, 46 insertions(+), 64 deletions(-) diff --git a/docker/centos7/build_h3_tools.sh b/docker/centos7/build_h3_tools.sh index d05b98f..b1b01d8 100644 --- a/docker/centos7/build_h3_tools.sh +++ b/docker/centos7/build_h3_tools.sh @@ -19,7 +19,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -set -e # This is a slightly modified version of: @@ -32,12 +31,12 @@ set -e # versions of these over time. # # * It also doesn't run sudo since the Dockerfile will run this as root. -# -# * It also doesn't use a mktemp since the caller sets up a temporary directory -# that it later removes. + + +set -e # Update this as the draft we support updates. -OPENSSL_BRANCH=${OPENSSL_BRANCH:-"openssl-3.1.4+quic"} +OPENSSL_BRANCH=${OPENSSL_BRANCH:-"OpenSSL_1_1_1t+quic"} # Set these, if desired, to change these to your preferred installation # directory @@ -46,8 +45,10 @@ 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" @@ -78,14 +79,6 @@ elif [ -e /etc/debian_version ]; then 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 @@ -94,9 +87,6 @@ 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) @@ -108,7 +98,7 @@ echo "Building boringssl..." # We need this go version. mkdir -p ${BASE}/go -if [ `uname -m` = "arm64" -o `uname -m` = "aarch64" ]; then +if [ `uname -m` = "arm64" ]; then ARCH="arm64" else ARCH="amd64" @@ -116,35 +106,32 @@ 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.6.${OS}-${ARCH}.tar.gz -rm -rf ${BASE}/go && tar -C ${BASE} -xf go1.21.6.${OS}-${ARCH}.tar.gz -rm go1.21.6.${OS}-${ARCH}.tar.gz -chmod -R a+rX ${BASE} +wget https://go.dev/dl/go1.20.1.${OS}-${ARCH}.tar.gz +rm -rf ${BASE}/go && tar -C ${BASE} -xf go1.20.1.${OS}-${ARCH}.tar.gz +rm go1.20.1.${OS}-${ARCH}.tar.gz 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 31bad2514d21f6207f3925ba56754611c462a873 cd .. fi cd boringssl +mkdir -p build +cd build 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} + -DBUILD_SHARED_LIBS=1 ../ + +${MAKE} -j ${num_threads} +${MAKE} install cd .. # Build quiche @@ -158,7 +145,7 @@ source /root/.cargo/env QUICHE_BASE="${BASE:-/opt}/quiche" [ ! -d quiche ] && git clone --recursive https://github.com/cloudflare/quiche.git cd quiche -git checkout 0.20.1 +git checkout 0b37da1cc564e40749ba650febd40586a4355be4 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 @@ -166,100 +153,96 @@ 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} --depth 1 https://github.com/quictls/openssl.git openssl-quic cd openssl-quic +git checkout c3f5f36f5dadfa334119e940b7576a4abfa428c8 ./config enable-tls1_3 --prefix=${OPENSSL_PREFIX} ${MAKE} -j ${num_threads} -${MAKE} install_sw -chmod -R a+rX ${BASE} +${MAKE} -j install # 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 --depth 1 -b v1.2.0 https://github.com/ngtcp2/nghttp3.git +if [ ! -d nghttp3 ]; then + git clone https://github.com/ngtcp2/nghttp3.git + cd nghttp3 + git checkout -b v0.9.0 v0.9.0 + cd .. +fi cd nghttp3 -git submodule update --init autoreconf -if ./configure \ --prefix=${BASE} \ - PKG_CONFIG_PATH=${BASE}/lib/pkgconfig:${OPENSSL_LIB}/pkgconfig \ + PKG_CONFIG_PATH=${BASE}/lib/pkgconfig:${OPENSSL_PREFIX}/lib/pkgconfig \ CFLAGS="${CFLAGS}" \ CXXFLAGS="${CXXFLAGS}" \ 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 --depth 1 -b v1.4.0 https://github.com/ngtcp2/ngtcp2.git +if [ ! -d ngtcp2 ]; then + git clone https://github.com/ngtcp2/ngtcp2.git + cd ngtcp2 + git checkout -b v0.13.1 v0.13.1 + cd .. +fi cd ngtcp2 autoreconf -if ./configure \ --prefix=${BASE} \ - PKG_CONFIG_PATH=${BASE}/lib/pkgconfig:${OPENSSL_LIB}/pkgconfig \ + PKG_CONFIG_PATH=${BASE}/lib/pkgconfig:${OPENSSL_PREFIX}/lib/pkgconfig \ CFLAGS="${CFLAGS}" \ CXXFLAGS="${CXXFLAGS}" \ LDFLAGS="${LDFLAGS}" \ --enable-lib-only ${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 --depth 1 -b v1.60.0 https://github.com/tatsuhiro-t/nghttp2.git +if [ ! -d nghttp2 ]; then + git clone https://github.com/tatsuhiro-t/nghttp2.git + cd nghttp2 + git checkout -b v1.52.0 v1.52.0 + cd .. +fi cd nghttp2 -git submodule update --init autoreconf -if -if [ `uname -s` = "Darwin" ] || [ `uname -s` = "FreeBSD" ] +if [ `uname -s` = "Darwin" ] then - # --enable-app requires systemd which is not available on Mac/FreeBSD. + # --enable-app requires systemd which is not available on Mac. 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_LIB}/pkgconfig \ + PKG_CONFIG_PATH=${BASE}/lib/pkgconfig:${OPENSSL_PREFIX}/lib/pkgconfig \ CFLAGS="${CFLAGS}" \ CXXFLAGS="${CXXFLAGS}" \ - LDFLAGS="${LDFLAGS} -L${OPENSSL_LIB}" \ + LDFLAGS="${LDFLAGS}" \ --enable-http3 \ ${ENABLE_APP} ${MAKE} -j ${num_threads} ${MAKE} install -chmod -R a+rX ${BASE} cd .. # Then curl echo "Building curl ..." -[ ! -d curl ] && git clone --depth 1 -b curl-8_5_0 https://github.com/curl/curl.git +[ ! -d curl ] && git clone --branch curl-7_88_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. @@ -275,5 +258,4 @@ autoreconf -fi || autoreconf -fi LDFLAGS="${LDFLAGS}" ${MAKE} -j ${num_threads} ${MAKE} install -chmod -R a+rX ${BASE} cd ..