From 61ff4fab498401fc0ba660c67e8a5ec379084bfb Mon Sep 17 00:00:00 2001 From: Richard Holland Date: Mon, 12 Dec 2022 13:51:06 +0000 Subject: [PATCH] add xahaud release builder --- release-builder.sh | 143 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 143 insertions(+) create mode 100755 release-builder.sh diff --git a/release-builder.sh b/release-builder.sh new file mode 100755 index 000000000..26c64db45 --- /dev/null +++ b/release-builder.sh @@ -0,0 +1,143 @@ +#!/bin/bash +which docker 2> /dev/null 2> /dev/null +if [ "$?" -eq "1" ] +then + echo 'Docker not found. Install it first.' + exit 1 +fi + +stat .git 2> /dev/null 2> /dev/null +if [ "$?" -eq "1" ] +then + echo 'Run this inside the rippled directory. (.git dir not found).' + exit 1 +fi +docker run -t -i --rm -v `pwd`:/io --network host ghcr.io/foobarwidget/holy-build-box-x64 /hbb_exe/activate-exec bash -x -c ' +cd /io; +mkdir src/certs; +curl -k https://raw.githubusercontent.com/RichardAH/rippled-release-builder/main/ca-bundle/certbundle.h -o src/certs/certbundle.h; +if [ "`grep certbundle.h src/ripple/net/impl/RegisterSSLCerts.cpp | wc -l`" -eq "0" ] +then + cp src/ripple/net/impl/RegisterSSLCerts.cpp src/ripple/net/impl/RegisterSSLCerts.cpp.old + perl -i -pe "s/^{/{ + #ifdef EMBEDDED_CA_BUNDLE + BIO *cbio = BIO_new_mem_buf(ca_bundle.data(), ca_bundle.size()); + X509_STORE *cts = SSL_CTX_get_cert_store(ctx.native_handle()); + if(!cts || !cbio) + JLOG(j.warn()) + << \"Failed to create cts\/cbio when loading embedded certs.\"; + else + { + X509_INFO *itmp; + int i, count = 0, type = X509_FILETYPE_PEM; + STACK_OF(X509_INFO) *inf = PEM_X509_INFO_read_bio(cbio, NULL, NULL, NULL); + + if (!inf) + { + BIO_free(cbio); + JLOG(j.warn()) + << \"Failed to read cbio when loading embedded certs.\"; + } + else + { + for (i = 0; i < sk_X509_INFO_num(inf); i++) + { + itmp = sk_X509_INFO_value(inf, i); + if (itmp->x509) + { + X509_STORE_add_cert(cts, itmp->x509); + count++; + } + if (itmp->crl) + { + X509_STORE_add_crl(cts, itmp->crl); + count++; + } + } + sk_X509_INFO_pop_free(inf, X509_INFO_free); + BIO_free(cbio); + } + } + #endif/g" src/ripple/net/impl/RegisterSSLCerts.cpp && + sed -i "s/#include /\0\n#include /g" src/ripple/net/impl/RegisterSSLCerts.cpp +fi +rm -rf release-build; +mkdir release-build; +mkdir .nih_c; +mkdir .nih_toolchain; +cd .nih_toolchain && +yum install -y wget lz4 lz4-devel git llvm13-static.x86_64 llvm13-devel.x86_64 devtoolset-10-binutils zlib-static ncurses-static -y \ + gcc-c++ \ + snappy snappy-devel \ + zlib zlib-devel \ + lz4-devel \ + libasan && +echo "-- Install ZStd 1.1.3 --" && +yum install epel-release -y && +ZSTD_VERSION="1.1.3" && +( wget -nc -O zstd-${ZSTD_VERSION}.tar.gz https://github.com/facebook/zstd/archive/v${ZSTD_VERSION}.tar.gz; echo "" ) && +tar xzvf zstd-${ZSTD_VERSION}.tar.gz && +cd zstd-${ZSTD_VERSION} && +make -j8 && make install && +cd .. && +echo "-- Install Cmake 3.23.1 --" && +pwd && +( wget -nc https://github.com/Kitware/CMake/releases/download/v3.23.1/cmake-3.23.1-linux-x86_64.tar.gz; echo "" ) && +tar -xzf cmake-3.23.1-linux-x86_64.tar.gz -C /hbb/ && +echo "-- Install Boost 1.75.0 --" && +pwd && +( wget -nc https://boostorg.jfrog.io/artifactory/main/release/1.75.0/source/boost_1_75_0.tar.gz; echo "" ) && +tar -xzf boost_1_75_0.tar.gz && +cd boost_1_75_0 && ./bootstrap.sh && ./b2 link=static -j8 && ./b2 install && +cd ../ && +echo "-- Install Protobuf 3.20.0 --" && +pwd && +( wget -nc https://github.com/protocolbuffers/protobuf/releases/download/v3.20.0/protobuf-all-3.20.0.tar.gz; echo "" ) && +tar -xzf protobuf-all-3.20.0.tar.gz && +cd protobuf-3.20.0/ && +./autogen.sh && ./configure --prefix=/usr --disable-shared link=static && make -j8 && make install && +cd .. && +echo "-- Build LLD --" && +pwd && +ln /usr/bin/llvm-config-13 /usr/bin/llvm-config && +mv /opt/rh/devtoolset-9/root/usr/bin/ar /opt/rh/devtoolset-9/root/usr/bin/ar-9 && +ln /opt/rh/devtoolset-10/root/usr/bin/ar /opt/rh/devtoolset-9/root/usr/bin/ar && +( wget -nc https://github.com/llvm/llvm-project/releases/download/llvmorg-13.0.1/lld-13.0.1.src.tar.xz; echo "" ) && +( wget -nc https://github.com/llvm/llvm-project/releases/download/llvmorg-13.0.1/libunwind-13.0.1.src.tar.xz; echo "" ) && +tar -xf lld-13.0.1.src.tar.xz && +tar -xf libunwind-13.0.1.src.tar.xz && +cp -r libunwind-13.0.1.src/include libunwind-13.0.1.src/src lld-13.0.1.src/ && +cd lld-13.0.1.src && +rm -rf build CMakeCache.txt && +mkdir build && +cd build && +cmake .. -DLLVM_LIBRARY_DIR=/usr/lib64/llvm13/lib/ -DCMAKE_INSTALL_PREFIX=/usr/lib64/llvm13/ -DCMAKE_BUILD_TYPE=Release && +make -j8 && +make install && +ln -s /usr/lib64/llvm13/lib/include/lld /usr/include/lld && +cp /usr/lib64/llvm13/lib/liblld*.a /usr/local/lib/ && +cd ../../../ && +echo "-- Build Rippled --" && +pwd && +cp Builds/CMake/deps/Rocksdb.cmake Builds/CMake/deps/Rocksdb.cmake.old && +perl -i -pe "s/^(\\s*)-DBUILD_SHARED_LIBS=OFF/\\1-DBUILD_SHARED_LIBS=OFF\\n\\1-DROCKSDB_BUILD_SHARED=OFF/g" Builds/CMake/deps/Rocksdb.cmake && +cd release-build && +export BOOST_ROOT="/usr/local/src/boost_1_75_0" && +export Boost_LIBRARY_DIRS="/usr/local/lib" && +export BOOST_INCLUDEDIR="/usr/local/src/boost_1_75_0" && +cmake .. -DBoost_NO_BOOST_CMAKE=ON -DLLVM_DIR=/usr/lib64/llvm13/lib/cmake/llvm/ -DLLVM_LIBRARY_DIR=/usr/lib64/llvm13/lib/ && +make -j8 VERBOSE=1 && +strip -s rippled && +mv rippled xahaud && +echo "Build host: `hostname`" > release.info && +echo "Build date: `date`" >> release.info && +echo "Build md5: `md5sum xahaud`" >> release.info && +echo "Git remotes:" >> release.info && +git remote -v >> release.info +echo "Git status:" >> release.info && +git status -v >> release.info && +echo "Git log [last 20]:" >> release.info && +git log -n 20 >> release.info; +cd ..; +mv src/ripple/net/impl/RegisterSSLCerts.cpp.old src/ripple/net/impl/RegisterSSLCerts.cpp; +mv Builds/CMake/deps/Rocksdb.cmake.old Builds/CMake/deps/Rocksdb.cmake'