de9b436ba3depends: Switch from multilib to platform-specific toolchains (Hennadii Stepanov) Pull request description: Using the multilib GCC toolchain, as currently documented in [`depends/README.md`](4c1906a500/depends/README.md), has several issues, such as: 1. The [`g++-multilib`](https://packages.ubuntu.com/noble/g++-multilib) package conflicts with platform-specific cross-compiler packages. This means it is not possible to cross compile for `i686` and other platforms using the same set of installed packages. 2. The [`g++-multilib`](https://packages.ubuntu.com/noble/g++-multilib) package is not available for `arm64`: ```sh $ sudo apt install g++-multilib Reading package lists... Done Building dependency tree... Done Reading state information... Done E: Unable to locate package g++-multilib ``` 3. Managing the multilib GCC toolchain requires additional code in both depends and Guix scripts. This PR addresses all the issues mentioned above by switching from multilib to platform-specific toolchains. Also see https://github.com/bitcoin/bitcoin/pull/22456. --- Here are examples of building for different scenarions: - Linux, `x86_64` or `arm64`, building with depends natively: ```sh $ gmake -C depends -j $(nproc) $ cmake -B build --toolchain depends/$(./depends/config.sub $(./depends/config.guess))/toolchain.cmake $ cmake --build build -j $(nproc) ``` - Linux, `x86_64` or `arm64`, cross compiling for `i686-pc-linux-gnu`: ```sh $ sudo apt install g++-i686-linux-gnu binutils-i686-linux-gnu $ export HOST=i686-linux-gnu $ gmake -C depends -j $(nproc) $ cmake -B build-${HOST} --toolchain depends/${HOST}/toolchain.cmake $ cmake --build build-${HOST} -j $(nproc) ``` - Linux, `x86_64`, cross compiling for `arm64`: ```sh $ sudo apt install g++-aarch64-linux-gnu binutils-aarch64-linux-gnu $ export HOST=aarch64-linux-gnu $ gmake -C depends -j $(nproc) $ cmake -B build-${HOST} --toolchain depends/${HOST}/toolchain.cmake $ cmake --build build-${HOST} -j $(nproc) ``` - Linux, `arm64`, cross compiling for `x86_64`: ```sh $ sudo apt install g++-x86-64-linux-gnu binutils-x86-64-linux-gnu $ export HOST=x86_64-linux-gnu $ gmake -C depends -j $(nproc) $ cmake -B build-${HOST} --toolchain depends/${HOST}/toolchain.cmake $ cmake --build build-${HOST} -j $(nproc) ``` ACKs for top commit: fanquake: ACKde9b436ba3BrandonOdiwuor: ACKde9b436ba3Tree-SHA512: 453b4744974cdf56d6edfdbe93bb11e3bae3f9bc9cd99b9c57aee74e65fcdd3ac011a1dcc19f485ea3be427f4e9c6c6b0d704881369f719620f0cb299123e561
Repository Tools
Developer tools
Specific tools for developers working on this repository.
Additional tools, including the github-merge.py script, are available in the maintainer-tools repository.
Verify-Commits
Tool to verify that every merge commit was signed by a developer using the github-merge.py script.
Linearize
Construct a linear, no-fork, best version of the blockchain.
Qos
A Linux bash script that will set up traffic control (tc) to limit the outgoing bandwidth for connections to the Bitcoin network. This means one can have an always-on bitcoind instance running, and another local bitcoind/bitcoin-qt instance which connects to this node and receives blocks from it.
Seeds
Utility to generate the pnSeed[] array that is compiled into the client.
ASMap
Utilities to analyze and process asmap files.
Build Tools and Keys
Packaging
The Debian subfolder contains the copyright file.
All other packaging related files can be found in the bitcoin-core/packaging repository.
MacDeploy
Scripts and notes for Mac builds.
Test and Verify Tools
TestGen
Utilities to generate test vectors for the data-driven Bitcoin tests.
Verify-Binaries
This script attempts to download and verify the signature file SHA256SUMS.asc from bitcoin.org.
Command Line Tools
Completions
Shell completions for bash and fish.
UTXO Set Tools
UTXO-to-SQLite
This script converts a compact-serialized UTXO set (as generated by Bitcoin Core with dumptxoutset)
to a SQLite3 database. For more details like e.g. the created table name and schema, refer to the
module docstring on top of the script, which is also contained in the command's --help output.