8d25926643cb84805bf3a9fbb289b269198898a8 guix: parallelize LIEF build (fanquake) Pull request description: Even though it's (re)built infrequently, the LIEF build currently runs with a single job, and thus takes much longer to build than it should. This change modifies our packge so that the cmake invocation is done with multiple jobs, using [`parallel-job-count`](https://git.savannah.gnu.org/cgit/guix.git/tree/build-aux/compile-all.scm#n49). On a 6 core arm64 machine, this results in a ~80% speed up, and reduces the time taken to build the LIEF packge from ~19m to ~4m. Guix Build (x86_64): ```bash ba12c164915ec3f5bd916c99f75e074b935028acc7b65914d109b19caf8f86e7 guix-build-8d25926643cb/output/aarch64-linux-gnu/SHA256SUMS.part 09d062446d8e8edd1c312da83d8fb1a4998880b028afe0bef40336bc0971358f guix-build-8d25926643cb/output/aarch64-linux-gnu/bitcoin-8d25926643cb-aarch64-linux-gnu-debug.tar.gz 74f1dad26cca571ee4eafba70537067be610059f770408460ae0216fd2fa4f7f guix-build-8d25926643cb/output/aarch64-linux-gnu/bitcoin-8d25926643cb-aarch64-linux-gnu.tar.gz 900e37dd5216f06b6e32af065336a6d1aff2fead13b3394fa521401eefa5b388 guix-build-8d25926643cb/output/arm-linux-gnueabihf/SHA256SUMS.part 4c8361225f9408cd44e08421ba39a13758bbba2159a4c3f1a5562e83175904af guix-build-8d25926643cb/output/arm-linux-gnueabihf/bitcoin-8d25926643cb-arm-linux-gnueabihf-debug.tar.gz 4780381b4e51ed99f6967975291703584e71dd2a22ea6bc77716d597f09bdbdd guix-build-8d25926643cb/output/arm-linux-gnueabihf/bitcoin-8d25926643cb-arm-linux-gnueabihf.tar.gz 46e178b38ca9a47ebcd4dd3d037f08c49bf79faf09c032e3a0ec99974bc47bcd guix-build-8d25926643cb/output/arm64-apple-darwin/SHA256SUMS.part e44a9fa027b912a13ceb12708eaf864f5fed896887de8ec157c9c3bba24f9d64 guix-build-8d25926643cb/output/arm64-apple-darwin/bitcoin-8d25926643cb-arm64-apple-darwin-unsigned.dmg 82bd6c2995f1c707b0204c618f7f16a90a80b5378a856cb287bad4cdf2191467 guix-build-8d25926643cb/output/arm64-apple-darwin/bitcoin-8d25926643cb-arm64-apple-darwin-unsigned.tar.gz 9b28de51d7adea26ffae22f9a4db517643297aeab24467efe4916088fda496d0 guix-build-8d25926643cb/output/arm64-apple-darwin/bitcoin-8d25926643cb-arm64-apple-darwin.tar.gz 71d86ffaf1b54b1dfb0ee6a978c2d3c800742d82a7845967becdd88b1ba4cbf4 guix-build-8d25926643cb/output/dist-archive/bitcoin-8d25926643cb.tar.gz 9c19a5dd32586fa1a3e82a1d7882ac248dc4bd7fe525c0282b245f04d9618e4b guix-build-8d25926643cb/output/powerpc64-linux-gnu/SHA256SUMS.part a091e4dce267164a757067c279d7df609b112867944a3689fbd9b6fefa9dcd40 guix-build-8d25926643cb/output/powerpc64-linux-gnu/bitcoin-8d25926643cb-powerpc64-linux-gnu-debug.tar.gz 195c8d6596acfe78f1f250b4ec8598c9b8c1e3420b96b8dd16529f194f4f5602 guix-build-8d25926643cb/output/powerpc64-linux-gnu/bitcoin-8d25926643cb-powerpc64-linux-gnu.tar.gz 78fe3b028498818532ce2120d7262ddddd2533ee58d3d04fc7908d2a3384eac9 guix-build-8d25926643cb/output/powerpc64le-linux-gnu/SHA256SUMS.part 52fba781d6637751500febb1470dd653933da2cf8f7ae052416438a80a925d7a guix-build-8d25926643cb/output/powerpc64le-linux-gnu/bitcoin-8d25926643cb-powerpc64le-linux-gnu-debug.tar.gz 4cb12dce174a58ccb46381efcfc27f9d49ea275cfbda68f334a73c2fa92fe18e guix-build-8d25926643cb/output/powerpc64le-linux-gnu/bitcoin-8d25926643cb-powerpc64le-linux-gnu.tar.gz c8f5eb94bbf9577f59ae2a679e6807ba65380356656cc335d1e13390e17878bc guix-build-8d25926643cb/output/riscv64-linux-gnu/SHA256SUMS.part 97e28f9033341f08ab16a4116d593fb4b63da8838da62af49f64f9d6f26b8276 guix-build-8d25926643cb/output/riscv64-linux-gnu/bitcoin-8d25926643cb-riscv64-linux-gnu-debug.tar.gz 1fb6c289347fbc6c13a7eb189b2a1bdf84c94b16f38dd786bdcc2a8ee0b6d136 guix-build-8d25926643cb/output/riscv64-linux-gnu/bitcoin-8d25926643cb-riscv64-linux-gnu.tar.gz 1080f0e8e6ee9aff33b47fe90f3f55df368cd3b464bc60eebc1e0092a37bc957 guix-build-8d25926643cb/output/x86_64-apple-darwin/SHA256SUMS.part 7cd7d4b68e2ec47bcec035b77c956a832453ac1589c7f552285623f5ea84a354 guix-build-8d25926643cb/output/x86_64-apple-darwin/bitcoin-8d25926643cb-x86_64-apple-darwin-unsigned.dmg 9283cfe406694d7f1edc78acaddd817aebb7f2c7397b21687e4410ab71078773 guix-build-8d25926643cb/output/x86_64-apple-darwin/bitcoin-8d25926643cb-x86_64-apple-darwin-unsigned.tar.gz e96b0ad265db5f990c087bc857272c7d6ede32cd89dc8fd201c4fd25b9bdf072 guix-build-8d25926643cb/output/x86_64-apple-darwin/bitcoin-8d25926643cb-x86_64-apple-darwin.tar.gz a3ff233ea536e9e6c19eecca54a7703dad901b4aab9b9606a2203af844be7f57 guix-build-8d25926643cb/output/x86_64-linux-gnu/SHA256SUMS.part b48d92a330f20cc9cfb8d9574c2e0190e5ee497120f7dbd0bb00e5001605ef3a guix-build-8d25926643cb/output/x86_64-linux-gnu/bitcoin-8d25926643cb-x86_64-linux-gnu-debug.tar.gz d06d54c2bdd66e7031e1ed2da411343c665763e43312eee87a7f575db799a450 guix-build-8d25926643cb/output/x86_64-linux-gnu/bitcoin-8d25926643cb-x86_64-linux-gnu.tar.gz 7164b2b3caa3ca56dc10098474325f92c328355fee7f1464069b99b72853bab1 guix-build-8d25926643cb/output/x86_64-w64-mingw32/SHA256SUMS.part f01a344bd8715479955911a465097bb196daffa04c8c334cab41e22529ad2f5c guix-build-8d25926643cb/output/x86_64-w64-mingw32/bitcoin-8d25926643cb-win64-debug.zip 5ae8999fdc66ef75ce87e1824b3fcbbb2278104f3e2a7b50a90d10e92c974673 guix-build-8d25926643cb/output/x86_64-w64-mingw32/bitcoin-8d25926643cb-win64-setup-unsigned.exe 6beb94dbf0c843d80480901880074e7d1bdf9b9dce2153ac8980c27b484d1fe5 guix-build-8d25926643cb/output/x86_64-w64-mingw32/bitcoin-8d25926643cb-win64-unsigned.tar.gz de36858355e4053cd2870782072a073d1d2e39627b4ff7c3d48699f419966d20 guix-build-8d25926643cb/output/x86_64-w64-mingw32/bitcoin-8d25926643cb-win64.zip ``` Guix Build (arm64): ```bash 51703356187e978d0b6a2cafd7533554b9860f1bf934547ea2fa6e673d8c2009 guix-build-8d25926643cb/output/arm-linux-gnueabihf/SHA256SUMS.part e66aad4e90f7c88e839fe9c8c322b204d9c480812e5890d6b385aeb67893e3a0 guix-build-8d25926643cb/output/arm-linux-gnueabihf/bitcoin-8d25926643cb-arm-linux-gnueabihf-debug.tar.gz 382c99aa79a92d9e6854490ee184ac8e7bf1ac1b9ddcab98421d959ba4c4797c guix-build-8d25926643cb/output/arm-linux-gnueabihf/bitcoin-8d25926643cb-arm-linux-gnueabihf.tar.gz 82f81c109a11a16cf56a5d4029cf7636c34a351f39902ec99d9b2da40e5b3073 guix-build-8d25926643cb/output/arm64-apple-darwin/SHA256SUMS.part e62438b4cb68a5123f2e91c8711b5cd24e1567693b142174321a79c5c9c3e040 guix-build-8d25926643cb/output/arm64-apple-darwin/bitcoin-8d25926643cb-arm64-apple-darwin-unsigned.dmg 3bd0bc61c2f1d8b30db8dc0fb25a6f73d95416115ccd101922e962852d2f2fd4 guix-build-8d25926643cb/output/arm64-apple-darwin/bitcoin-8d25926643cb-arm64-apple-darwin-unsigned.tar.gz 3b987efd79203b0257b1590926106b890d08a0e3d3b0c9ea6e3194c3f4d9cab5 guix-build-8d25926643cb/output/arm64-apple-darwin/bitcoin-8d25926643cb-arm64-apple-darwin.tar.gz 71d86ffaf1b54b1dfb0ee6a978c2d3c800742d82a7845967becdd88b1ba4cbf4 guix-build-8d25926643cb/output/dist-archive/bitcoin-8d25926643cb.tar.gz bcfbdf2389275b7982a0f0f02ce6a0032b6c4688a56dee882f0b4da5985bffa5 guix-build-8d25926643cb/output/powerpc64-linux-gnu/SHA256SUMS.part 61ec34aa20de6281c4749961e09cbdd133e46397bee882fd2c211554b311bc9b guix-build-8d25926643cb/output/powerpc64-linux-gnu/bitcoin-8d25926643cb-powerpc64-linux-gnu-debug.tar.gz 8b96152ec8dfde4f2b2046f2c54bd13ea066170a4eaa6b63054fe6e9eabf0427 guix-build-8d25926643cb/output/powerpc64-linux-gnu/bitcoin-8d25926643cb-powerpc64-linux-gnu.tar.gz 78ae0da590b2c174e3875aceccbd8b3195578408770f4c1c29c2d135aa19d638 guix-build-8d25926643cb/output/powerpc64le-linux-gnu/SHA256SUMS.part e755b3cf2a3c2a1671d3d312ab8b45abc0e544e978b01c7645939bb2d5d16a63 guix-build-8d25926643cb/output/powerpc64le-linux-gnu/bitcoin-8d25926643cb-powerpc64le-linux-gnu-debug.tar.gz 4bdafdc83c7a81cfa152036a5366c09862559002257e1727ff7f930e7f6e6c91 guix-build-8d25926643cb/output/powerpc64le-linux-gnu/bitcoin-8d25926643cb-powerpc64le-linux-gnu.tar.gz 64bfcba320ebcc81bdaecf932807a6f487b32a52b7ddccb6c794c4f2e0c3e1c3 guix-build-8d25926643cb/output/riscv64-linux-gnu/SHA256SUMS.part c0eebeb9e1fb441db397c33b833138facdde0e984c5a3d48b3957487867c98c7 guix-build-8d25926643cb/output/riscv64-linux-gnu/bitcoin-8d25926643cb-riscv64-linux-gnu-debug.tar.gz 97b2b432cf7c628c9960768057f9c46754c01860c3e77a8baca29465f18ad120 guix-build-8d25926643cb/output/riscv64-linux-gnu/bitcoin-8d25926643cb-riscv64-linux-gnu.tar.gz 1080f0e8e6ee9aff33b47fe90f3f55df368cd3b464bc60eebc1e0092a37bc957 guix-build-8d25926643cb/output/x86_64-apple-darwin/SHA256SUMS.part 7cd7d4b68e2ec47bcec035b77c956a832453ac1589c7f552285623f5ea84a354 guix-build-8d25926643cb/output/x86_64-apple-darwin/bitcoin-8d25926643cb-x86_64-apple-darwin-unsigned.dmg 9283cfe406694d7f1edc78acaddd817aebb7f2c7397b21687e4410ab71078773 guix-build-8d25926643cb/output/x86_64-apple-darwin/bitcoin-8d25926643cb-x86_64-apple-darwin-unsigned.tar.gz e96b0ad265db5f990c087bc857272c7d6ede32cd89dc8fd201c4fd25b9bdf072 guix-build-8d25926643cb/output/x86_64-apple-darwin/bitcoin-8d25926643cb-x86_64-apple-darwin.tar.gz 74ee4531452feffa90874cfd8c96d3b941627bd5cbb4a6977d393a2b08a13e47 guix-build-8d25926643cb/output/x86_64-linux-gnu/SHA256SUMS.part 15815a3269a2a71047afe635765f79d9b31ba08b62cad09bad17ca865f522afb guix-build-8d25926643cb/output/x86_64-linux-gnu/bitcoin-8d25926643cb-x86_64-linux-gnu-debug.tar.gz 6146bf0ffba945d4a21e36fa0857c5bedc091e953a79ad5782008d759b579c94 guix-build-8d25926643cb/output/x86_64-linux-gnu/bitcoin-8d25926643cb-x86_64-linux-gnu.tar.gz 4c0fbf62b7b76ec14b41eb10cd2f0ae4ef27028044e029a02abad3aa290a6123 guix-build-8d25926643cb/output/x86_64-w64-mingw32/SHA256SUMS.part 241955fd1c457ba4206814bfdd7652cd4975d68ec905ec9d80a45d3ddd69e0bf guix-build-8d25926643cb/output/x86_64-w64-mingw32/bitcoin-8d25926643cb-win64-debug.zip 5ae8999fdc66ef75ce87e1824b3fcbbb2278104f3e2a7b50a90d10e92c974673 guix-build-8d25926643cb/output/x86_64-w64-mingw32/bitcoin-8d25926643cb-win64-setup-unsigned.exe 6beb94dbf0c843d80480901880074e7d1bdf9b9dce2153ac8980c27b484d1fe5 guix-build-8d25926643cb/output/x86_64-w64-mingw32/bitcoin-8d25926643cb-win64-unsigned.tar.gz 0eeacc664ad0fb89f177fa6271f8aa573e177804121a7ef2391f06cd56cdc74a guix-build-8d25926643cb/output/x86_64-w64-mingw32/bitcoin-8d25926643cb-win64.zip ``` ACKs for top commit: laanwj: Code review ACK 8d25926643cb84805bf3a9fbb289b269198898a8 Tree-SHA512: 2da8037cc60b28ff210c392785e750f33893d9e0b223ac8c5a66cc3eec8f0558c2af7c31494b6075974180fd0fcf34675b5071fe19ad112f379a7489ef1a1a9a
Bitcoin Core integration/staging tree
For an immediately usable, binary version of the Bitcoin Core software, see https://bitcoincore.org/en/download/.
What is Bitcoin Core?
Bitcoin Core connects to the Bitcoin peer-to-peer network to download and fully validate blocks and transactions. It also includes a wallet and graphical user interface, which can be optionally built.
Further information about Bitcoin Core is available in the doc folder.
License
Bitcoin Core is released under the terms of the MIT license. See COPYING for more information or see https://opensource.org/licenses/MIT.
Development Process
The master
branch is regularly built (see doc/build-*.md
for instructions) and tested, but it is not guaranteed to be
completely stable. Tags are created
regularly from release branches to indicate new official, stable release versions of Bitcoin Core.
The https://github.com/bitcoin-core/gui repository is used exclusively for the development of the GUI. Its master branch is identical in all monotree repositories. Release branches and tags do not exist, so please do not fork that repository unless it is for development reasons.
The contribution workflow is described in CONTRIBUTING.md and useful hints for developers can be found in doc/developer-notes.md.
Testing
Testing and code review is the bottleneck for development; we get more pull requests than we can review and test on short notice. Please be patient and help out by testing other people's pull requests, and remember this is a security-critical project where any mistake might cost people lots of money.
Automated Testing
Developers are strongly encouraged to write unit tests for new code, and to
submit new unit tests for old code. Unit tests can be compiled and run
(assuming they weren't disabled in configure) with: make check
. Further details on running
and extending unit tests can be found in /src/test/README.md.
There are also regression and integration tests, written
in Python.
These tests can be run (if the test dependencies are installed) with: test/functional/test_runner.py
The CI (Continuous Integration) systems make sure that every pull request is built for Windows, Linux, and macOS, and that unit/sanity tests are run automatically.
Manual Quality Assurance (QA) Testing
Changes should be tested by somebody other than the developer who wrote the code. This is especially important for large or high-risk changes. It is useful to add a test plan to the pull request description if testing the changes is not straightforward.
Translations
Changes to translations as well as new translations can be submitted to Bitcoin Core's Transifex page.
Translations are periodically pulled from Transifex and merged into the git repository. See the translation process for details on how this works.
Important: We do not accept translation changes as GitHub pull requests because the next pull from Transifex would automatically overwrite them again.