Changeset View
Changeset View
Standalone View
Standalone View
contrib/guix/libexec/build.sh
Show First 20 Lines • Show All 56 Lines • ▼ Show 20 Lines | grep --extended-regexp "/[^-]{32}-${1}-[^-]+${2:+-${2}}" "${GUIX_ENVIRONMENT}/manifest" \ | ||||
--expression='s|"[[:space:]]*$||' | --expression='s|"[[:space:]]*$||' | ||||
} | } | ||||
# Set environment variables to point the NATIVE toolchain to the right | # Set environment variables to point the NATIVE toolchain to the right | ||||
# includes/libs | # includes/libs | ||||
NATIVE_GCC="$(store_path gcc-toolchain)" | NATIVE_GCC="$(store_path gcc-toolchain)" | ||||
NATIVE_GCC_STATIC="$(store_path gcc-toolchain static)" | NATIVE_GCC_STATIC="$(store_path gcc-toolchain static)" | ||||
NATIVE_GCC_LIBS="$(store_path gcc lib)" | |||||
unset LIBRARY_PATH | unset LIBRARY_PATH | ||||
unset CPATH | unset CPATH | ||||
unset C_INCLUDE_PATH | unset C_INCLUDE_PATH | ||||
unset CPLUS_INCLUDE_PATH | unset CPLUS_INCLUDE_PATH | ||||
unset OBJC_INCLUDE_PATH | unset OBJC_INCLUDE_PATH | ||||
unset OBJCPLUS_INCLUDE_PATH | unset OBJCPLUS_INCLUDE_PATH | ||||
export LIBRARY_PATH="${NATIVE_GCC}/lib:${NATIVE_GCC_STATIC}/lib" | export LIBRARY_PATH="${NATIVE_GCC}/lib:${NATIVE_GCC_STATIC}/lib:${NATIVE_GCC_LIBS}/lib" | ||||
export C_INCLUDE_PATH="${NATIVE_GCC}/include" | export C_INCLUDE_PATH="${NATIVE_GCC}/include" | ||||
export CPLUS_INCLUDE_PATH="${NATIVE_GCC}/include/c++:${NATIVE_GCC}/include" | export CPLUS_INCLUDE_PATH="${NATIVE_GCC}/include/c++:${NATIVE_GCC}/include" | ||||
export OBJC_INCLUDE_PATH="${NATIVE_GCC}/include" | export OBJC_INCLUDE_PATH="${NATIVE_GCC}/include" | ||||
export OBJCPLUS_INCLUDE_PATH="${NATIVE_GCC}/include/c++:${NATIVE_GCC}/include" | export OBJCPLUS_INCLUDE_PATH="${NATIVE_GCC}/include/c++:${NATIVE_GCC}/include" | ||||
# Set environment variables to point the CROSS toolchain to the right | # Set environment variables to point the CROSS toolchain to the right | ||||
# includes/libs for $HOST | # includes/libs for $HOST | ||||
case "$HOST" in | case "$HOST" in | ||||
▲ Show 20 Lines • Show All 124 Lines • ▼ Show 20 Lines | |||||
########################### | ########################### | ||||
# Source Tarball Building # | # Source Tarball Building # | ||||
########################### | ########################### | ||||
# Toolchain | # Toolchain | ||||
case "$HOST" in | case "$HOST" in | ||||
*mingw*) | *mingw*) | ||||
CMAKE_TOOLCHAIN_FILE="/bitcoin/cmake/platforms/Win64.cmake" | CMAKE_TOOLCHAIN_FILE="/bitcoin/cmake/platforms/Win64.cmake" | ||||
RUST_TARGET="x86_64-pc-windows-gnu" | |||||
;; | ;; | ||||
aarch64-linux-gnu) | aarch64-linux-gnu) | ||||
CMAKE_TOOLCHAIN_FILE="/bitcoin/cmake/platforms/LinuxAArch64.cmake" | CMAKE_TOOLCHAIN_FILE="/bitcoin/cmake/platforms/LinuxAArch64.cmake" | ||||
RUST_TARGET="aarch64-unknown-linux-gnu" | |||||
;; | ;; | ||||
arm-linux-gnueabihf) | arm-linux-gnueabihf) | ||||
CMAKE_TOOLCHAIN_FILE="/bitcoin/cmake/platforms/LinuxARM.cmake" | CMAKE_TOOLCHAIN_FILE="/bitcoin/cmake/platforms/LinuxARM.cmake" | ||||
RUST_TARGET="arm-unknown-linux-gnueabihf" | |||||
;; | ;; | ||||
x86_64-linux-gnu) | x86_64-linux-gnu) | ||||
CMAKE_TOOLCHAIN_FILE="/bitcoin/cmake/platforms/Linux64.cmake" | CMAKE_TOOLCHAIN_FILE="/bitcoin/cmake/platforms/Linux64.cmake" | ||||
RUST_TARGET="x86_64-unknown-linux-gnu" | |||||
;; | ;; | ||||
*darwin*) | *darwin*) | ||||
CMAKE_TOOLCHAIN_FILE="/bitcoin/cmake/platforms/OSX.cmake" | CMAKE_TOOLCHAIN_FILE="/bitcoin/cmake/platforms/OSX.cmake" | ||||
RUST_TARGET="x86_64-apple-darwin" | |||||
;; | ;; | ||||
esac | esac | ||||
curl -sSf https://static.rust-lang.org/rustup/archive/1.26.0/x86_64-unknown-linux-gnu/rustup-init -o rustup-init | |||||
echo "0b2f6c8f85a3d02fde2efc0ced4657869d73fccfce59defb4e8d29233116e6db rustup-init" | sha256sum -c | |||||
chmod +x rustup-init | |||||
./rustup-init -y --default-toolchain=1.76.0 | |||||
# shellcheck disable=SC1091 | |||||
source "$HOME/.cargo/env" | |||||
rustup target add "${RUST_TARGET}" | |||||
mkdir -p source_package | mkdir -p source_package | ||||
pushd source_package | pushd source_package | ||||
rm -f CMakeCache.txt | rm -f CMakeCache.txt | ||||
cmake -GNinja .. \ | cmake -GNinja .. \ | ||||
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} \ | -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} \ | ||||
-DBUILD_BITCOIN_WALLET=OFF \ | -DBUILD_BITCOIN_WALLET=OFF \ | ||||
-DBUILD_BITCOIN_CHRONIK=OFF \ | -DBUILD_BITCOIN_CHRONIK=OFF \ | ||||
-DBUILD_BITCOIN_QT=OFF \ | -DBUILD_BITCOIN_QT=OFF \ | ||||
▲ Show 20 Lines • Show All 41 Lines • ▼ Show 20 Lines | |||||
esac | esac | ||||
# CMake flags | # CMake flags | ||||
case "$HOST" in | case "$HOST" in | ||||
*mingw*) | *mingw*) | ||||
CMAKE_EXTRA_OPTIONS=(-DBUILD_BITCOIN_SEEDER=OFF -DCPACK_PACKAGE_FILE_NAME="${DISTNAME}-win64-setup-unsigned") | CMAKE_EXTRA_OPTIONS=(-DBUILD_BITCOIN_SEEDER=OFF -DCPACK_PACKAGE_FILE_NAME="${DISTNAME}-win64-setup-unsigned") | ||||
;; | ;; | ||||
*linux*) | *linux*) | ||||
CMAKE_EXTRA_OPTIONS=(-DENABLE_STATIC_LIBSTDCXX=ON -DENABLE_GLIBC_BACK_COMPAT=ON -DUSE_LINKER=) | CMAKE_EXTRA_OPTIONS=(-DENABLE_STATIC_LIBSTDCXX=ON -DENABLE_GLIBC_BACK_COMPAT=ON -DBUILD_BITCOIN_CHRONIK=ON -DUSE_LINKER=) | ||||
;; | ;; | ||||
*darwin*) | *darwin*) | ||||
CMAKE_EXTRA_OPTIONS=(-DGENISOIMAGE_EXECUTABLE="${WRAP_DIR}/genisoimage") | CMAKE_EXTRA_OPTIONS=(-DGENISOIMAGE_EXECUTABLE="${WRAP_DIR}/genisoimage") | ||||
;; | ;; | ||||
esac | esac | ||||
# Make $HOST-specific native binaries from depends available in $PATH | # Make $HOST-specific native binaries from depends available in $PATH | ||||
export PATH="${BASEPREFIX}/${HOST}/native/bin:${PATH}" | export PATH="${BASEPREFIX}/${HOST}/native/bin:${PATH}" | ||||
mkdir -p "$DISTSRC" | mkdir -p "$DISTSRC" | ||||
( | ( | ||||
cd "$DISTSRC" | cd "$DISTSRC" | ||||
# Setup the directory where our Bitcoin ABC build for HOST will be | # Setup the directory where our Bitcoin ABC build for HOST will be | ||||
# installed. This directory will also later serve as the input for our | # installed. This directory will also later serve as the input for our | ||||
# binary tarballs. | # binary tarballs. | ||||
INSTALLPATH=$(pwd)/installed/${DISTNAME} | INSTALLPATH=$(pwd)/installed/${DISTNAME} | ||||
mkdir -p "${INSTALLPATH}" | mkdir -p "${INSTALLPATH}" | ||||
# Needed for rustup, cargo and rustc | |||||
export LD_LIBRARY_PATH="${LIBRARY_PATH}" | |||||
# rocksdb-sys uses libclang to parse the headers but it doesn't know what | |||||
# the host arch is. As a consequence it fails to parse gnu/stubs.h if the | |||||
# multilib headers are not installed because it falls back to the 32 bits | |||||
# variant gnu/stubs-32.h that guix don't provide. | |||||
# Instead we can instruct clang to use the correct arch. | |||||
export BINDGEN_EXTRA_CLANG_ARGS="-D__x86_64__ -D__LP64__ -U__ILP32__" | |||||
cmake -GNinja .. \ | cmake -GNinja .. \ | ||||
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} \ | -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} \ | ||||
-DCLIENT_VERSION_IS_RELEASE=ON \ | -DCLIENT_VERSION_IS_RELEASE=ON \ | ||||
-DENABLE_CLANG_TIDY=OFF \ | -DENABLE_CLANG_TIDY=OFF \ | ||||
-DENABLE_REDUCE_EXPORTS=ON \ | -DENABLE_REDUCE_EXPORTS=ON \ | ||||
-DCMAKE_INSTALL_PREFIX="${INSTALLPATH}" \ | -DCMAKE_INSTALL_PREFIX="${INSTALLPATH}" \ | ||||
-DCCACHE=OFF \ | -DCCACHE=OFF \ | ||||
-DCMAKE_C_FLAGS="${HOST_CFLAGS}" \ | -DCMAKE_C_FLAGS="${HOST_CFLAGS}" \ | ||||
Show All 30 Lines |