#!/bin/bash -u # We use set -e and bash with -u to bail on first non zero exit code of any # processes launched or upon any unbound variable. # We use set -x to print commands before running them to help with # debugging. set -ex echo "START INSIDE CONTAINER - CORE" echo "-- BUILD CORES: $3" echo "-- GITHUB_REPOSITORY: $1" echo "-- GITHUB_SHA: $2" echo "-- GITHUB_RUN_NUMBER: $4" # Use mounted filesystem for temp files to avoid container space limits export TMPDIR=/io/tmp export TEMP=/io/tmp export TMP=/io/tmp mkdir -p /io/tmp echo "=== Using temp directory: /io/tmp ===" umask 0000; cd /io/ && echo "Importing env... Lines:" && cat .env|wc -l && source .env echo $? if [[ "$?" -ne "0" ]]; then echo "ERR no .env found/sourced" exit 127 fi BUILD_TYPE=Release mv Builds/CMake/deps/WasmEdge.cmake Builds/CMake/deps/WasmEdge.old && echo "find_package(LLVM REQUIRED CONFIG) message(STATUS \"Found LLVM \${LLVM_PACKAGE_VERSION}\") message(STATUS \"Using LLVMConfig.cmake in: \${LLVM_DIR}\") add_library (wasmedge STATIC IMPORTED GLOBAL) set_target_properties(wasmedge PROPERTIES IMPORTED_LOCATION \${WasmEdge_LIB}) target_link_libraries (ripple_libs INTERFACE wasmedge) add_library (wasmedge::wasmedge ALIAS wasmedge) message(\"WasmEdge DONE\") " > Builds/CMake/deps/WasmEdge.cmake && export LDFLAGS="-static-libstdc++" git config --global --add safe.directory /io && git checkout src/ripple/protocol/impl/BuildInfo.cpp && sed -i s/\"0.0.0\"/\"$(date +%Y).$(date +%-m).$(date +%-d)-$(git rev-parse --abbrev-ref HEAD)$(if [ -n "$4" ]; then echo "+$4"; fi)\"/g src/ripple/protocol/impl/BuildInfo.cpp && conan export external/snappy --version 1.1.10 --user xahaud --channel stable && conan export external/soci --version 4.0.3 --user xahaud --channel stable && conan export external/wasmedge --version 0.11.2 --user xahaud --channel stable && cd release-build && # Install dependencies - tool_requires in conanfile.py handles glibc 2.28 compatibility # for build tools (protoc, grpc plugins, b2) in HBB environment # The tool_requires('b2/5.3.2') in conanfile.py should force b2 to build from source # with the correct toolchain, avoiding the GLIBCXX_3.4.29 issue echo "=== Installing dependencies ===" && conan install .. --output-folder . --build missing --settings build_type=$BUILD_TYPE \ -o with_wasmedge=False -o tool_requires_b2=True && cmake .. -G Ninja \ -DCMAKE_BUILD_TYPE=$BUILD_TYPE \ -DCMAKE_TOOLCHAIN_FILE:FILEPATH=build/generators/conan_toolchain.cmake \ -DCMAKE_EXE_LINKER_FLAGS="-static-libstdc++" \ -DLLVM_DIR=$LLVM_DIR \ -DWasmEdge_LIB=$WasmEdge_LIB \ -Dxrpld=TRUE \ -Dtests=TRUE && ccache -z && ninja -j $3 && echo "=== Re-running final link with verbose output ===" && rm -f rippled && ninja -v rippled && ccache -s && strip -s rippled && mv rippled xahaud && echo "=== Full ldd output ===" && ldd xahaud && echo "=== Running libcheck ===" && libcheck 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; if [[ "$4" == "" ]]; then # Non GH, local building echo "Non GH, local building, no Action runner magic" else # GH Action, runner cp /io/release-build/xahaud /data/builds/$(date +%Y).$(date +%-m).$(date +%-d)-$(git rev-parse --abbrev-ref HEAD)+$4 cp /io/release-build/release.info /data/builds/$(date +%Y).$(date +%-m).$(date +%-d)-$(git rev-parse --abbrev-ref HEAD)+$4.releaseinfo echo "Published build to: http://build.xahau.tech/" echo $(date +%Y).$(date +%-m).$(date +%-d)-$(git rev-parse --abbrev-ref HEAD)+$4 fi cd ..; mv src/ripple/net/impl/RegisterSSLCerts.cpp.old src/ripple/net/impl/RegisterSSLCerts.cpp; mv Builds/CMake/deps/WasmEdge.old Builds/CMake/deps/WasmEdge.cmake; rm src/certs/certbundle.h; git checkout src/ripple/protocol/impl/BuildInfo.cpp; echo "END INSIDE CONTAINER - CORE"