Skip to content

build: Add CMake-based build system #25797

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 67 commits into from
Closed

Conversation

hebasto
Copy link
Member

@hebasto hebasto commented Aug 7, 2022

Here are some benefits of using CMake in the Bitcoin Core project:

More Qt-specific details see below.

Also there is a non-technical/social benefit. Over time, the Autotools community shrinks, but CMake community grows. New contributors, who join this project in the future, will readily support a CMake-based system rather an Autotools-based one.


Native building has been tested on the following OSes:

  • Ubuntu 22.04 (x86_64, aarch64, backward compatible with Ubuntu Bionic 18.04 using adjusted invocation)
  • macOS Monterey (x86_64, arm64)
  • FreeBSD 12.3
  • OpenBSD 7.1
cmake -S . -B build
cd build
make
make check
make install  # optional

Native building on Windows (MSVC + vcpkg)

Dependency packages are provided by the vcpkg package manager ("Mandatory ASLR" in Windows Security must be disabled to install qt5-* packages):

vcpkg --triplet=x64-windows-static install pkgconf boost-multi-index boost-process boost-signals2 boost-test libevent berkeleydb sqlite3 miniupnpc zeromq qt5-base qt5-tools

To build on Windows with Visual Studio, a proper generator must be specified for a new build tree.
The following example assumes using of "Developer Command Prompt for VS 2022" and CMake v3.21+.

cmake -G "Visual Studio 17 2022" -A x64 -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows-static -S . -B build
cmake --build build --config Release

HINT. To leverage Multi-ToolTask and use <N> CPU cores, run

cmake --build build --config Release -j <N> -- /p:CL_MPcount=<N>

Cross building for Windows on Ubuntu 22.04

make -C depends HOST=x86_64-w64-mingw32
cmake --toolchain depends/x86_64-w64-mingw32/share/toolchain.cmake -S . -B build
cmake --build build

Cross building for Windows on Ubuntu 22.04 with DEBUG=1, see #19772

make -C depends HOST=x86_64-w64-mingw32 DEBUG=1
cmake --toolchain depends/x86_64-w64-mingw32/share/toolchain.cmake -S . -B build
cmake --build build

Cross building for macOS (Intel) on Ubuntu 22.04

make -C depends HOST=x86_64-apple-darwin
cmake --toolchain depends/x86_64-apple-darwin/share/toolchain.cmake -S . -B build
cmake --build build

Cross building for macOS (Apple Silicon) on Ubuntu 22.04

make -C depends HOST=arm64-apple-darwin
cmake --toolchain depends/arm64-apple-darwin/share/toolchain.cmake -S . -B build
cmake --build build

Cross building for Android using NDK r23 LTS on Ubuntu 22.04

export ANDROID_SDK=/home/hebasto/Android/Sdk
export ANDROID_NDK=${ANDROID_SDK}/ndk/23.2.8568313
export ANDROID_API_LEVEL=28
make -C depends ANDROID_TOOLCHAIN_BIN=${ANDROID_NDK}/toolchains/llvm/prebuilt/linux-x86_64/bin/ HOST=aarch64-linux-android
cmake --toolchain depends/aarch64-linux-android/share/toolchain.cmake -S . -B build
cmake --build build

NOTE: Building in the source tree is not supported.


Functional Tests

Functional tests can be run in exactly the same way as when building with Autotools out of the source tree, i.e.:

./build/test/functional/test_runner.py

Guix builds

Cirrus CI -- 16 of 16

  • lint [jammy]
  • tidy [jammy]
  • Win64 native [vs2022]
  • ARM [unit tests, no functional tests] [bullseye]
  • Win64 [unit tests, no gui tests, no boost::process, no functional tests] [jammy]
  • 32-bit + dash [gui] [CentOS 8]
  • [previous releases, uses qt5 dev package and some depends packages, DEBUG] [unsigned char] [buster]
  • [TSan, depends, gui] [jammy]
  • [MSan, depends] [focal]
  • [ASan + LSan + UBSan + integer, no depends, USDT] [jammy]
  • [fuzzer,address,undefined,integer, no depends] [jammy]
  • [multiprocess, i686, DEBUG] [focal]
  • [no wallet, libbitcoinkernel] [buster]
  • macOS 10.15 [gui, no tests] [focal]
  • macOS 13 native arm64 [gui, sqlite only] [no depends]
  • ARM64 Android APK [jammy]

Additional notes.

  1. There is a branch/PR in my repo which includes Qt 6 integration and CMake-specific CI tasks.
  2. A similar PR has been open in https://github.com/bitcoin-core/secp256k1.

The plan is to have it in the repo shortly after branching 24.x off, and make CMake-based build system a drop-in replacement of Autotools-based one during the next 2 or 3 release cycles.


Qt-specific details

What happened before?

CMake is the build system for Qt 6

We made a big decision to start using CMake to build Qt 6 one and a half years ago.

The Qt 5 build system was built on top of qmake. In Qt 6, we ported the build system to CMake.

It is important to note that CMake has extensive support for Qt, including Qt-specific tools such as MOC, RCC, UIC.

Why Qt 6 build system does matter if the Bitcoin Core GUI uses Qt 5?

For release builds we use Qt 5.15.5 LTS, the latest Qt 5 version available under a free-software license.

For dynamic linking users can use Qt 5.11.3+, which allows them to use packages provided in Debian Buster and Ubuntu Focal.

On the other hand, Qt 6 packages are available in the following systems/package managers:

As long as Qt GUI is a part of Bitcoin Core, it is inevitable to embrace Qt 6 support, sooner or later.

Can we just adjust our current build system to handle Qt 6?

The main problem with integration of Qt 6 into the current build system is lacking of pkg-config *.pc files for static builds (please note that a patch from QTBUG-86080 works for non-static builds only).

To handle Qt 6 with our current build system we need to:

  • patch Qt, which looks like a non-trivial task, or
  • apply some nasty hacks to our own build system
  • keep in our repo the required *.pc files

All approaches imply maintaining burden for a long time. And last two are pretty ugly :)


Autotools -- CMake Feature Parity Table

Autotool-based build system (AT) features being listed according to the ./configure --help output.

AT feature CM feature
--prefix -DCMAKE_INSTALL_PREFIX
--enable-c++20 -DCXX20
--enable-shared -DBUILD_SHARED
--enable-static -DBUILD_STATIC
--disable-wallet -DENABLE_WALLET
--enable-usdt -DWITH_USDT
--enable-upnp-default -DENABLE_UPNP_DEFAULT
--enable-natpmp-default -DENABLE_NATPMP_DEFAULT
--disable-tests -DBUILD_TESTS
--disable-gui-tests TBD
--disable-bench -DBUILD_BENCH
--enable-extended-functional-tests TBD
--enable-fuzz -DFUZZ
--enable-fuzz-binary -DBUILD_FUZZ_BINARY
--disable-hardening -DHARDENING
--enable-reduce-exports -DREDUCE_EXPORTS
--disable-ccache -DCCACHE
--enable-suppress-external-warnings N/A
--enable-lcov TBD
--enable-lcov-branch-coverage TBD
--enable-threadlocal TBD
--disable-asm -DASM
--disable-zmq -DWITH_ZMQ
--enable-multiprocess -DMULTIPROCESS
--disable-man -DINSTALL_MAN
--enable-debug -DCMAKE_BUILD_TYPE=Debug
--enable-gprof TBD
--enable-werror -DWERROR
--enable-external-signer -DWITH_EXTERNAL_SIGNER
--enable-lto TBD
--enable-util-cli -DBUILD_CLI
--enable-util-tx -DBUILD_TX
--enable-util-wallet -DBUILD_WALLET_TOOL
--enable-util-util -DBUILD_UTIL
--enable-experimental-util-chainstate -DBUILD_UTIL_CHAINSTATE
--with-seccomp -DWITH_SECCOMP
--with-sqlite -DWITH_SQLITE
--without-bdb -DWITH_BDB
--with-miniupnpc -DWITH_MINIUPNPC
--with-natpmp -DWITH_NATPMP
--with-qrencode -DWITH_QRENCODE
--with-libmultiprocess N/A
--with-mpgen -DMPGEN_PREFIX
--with-sanitizers -DSANITIZERS
--with-utils individual options
--with-libs individual options
--with-experimental-kernel-lib -DBUILD_BITCOINKERNEL_LIB
--with-daemon -DBUILD_DAEMON
--with-gui -DWITH_GUI

IRC meeting discussions:

Copy link
Contributor

@theStack theStack left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great to see that this PR is in the main repo now! 🚀

I retested on OpenBSD 7.1 with the instructions from the PR description and unfortunately still have a BDB issue (similar to hebasto#3 (comment)). The detection in the beginning detects that the installed BerkeleyDB version is too old (which is true) and disables legacy wallet support:

-- Found BerkeleyDB: /usr/include (Required is at least version "4.8")
CMake Warning at cmake/optional.cmake:69 (message):
  Found Berkeley DB (BDB) older than 4.8, disabling.

  Passing "-DWITH_BDB=no" will suppress this warning.

...

Configure summary
=================
Build type ......................... RelHardened
Preprocessor defined macros:
CXX: /usr/local/bin/ccache /usr/bin/c++
Compile options:
Utility binaries:
  bitcoin-cli ...................... ON
  bitcoin-tx ....................... ON
  bitcoin-util ..................... ON
Wallet functionality ............... yes
  SQLite, descriptor wallets ....... yes
  Berkeley DB, legacy wallets ...... no
  wallet tool ...................... ON
Optional packages:
  GUI .............................. Qt5
  QR code (GUI) .................... yes
  external signer .................. no
  NAT-PMP .......................... no
  UPNP ............................. no
  ZeroMQ ........................... yes
  USDT tracing ..................... no
  experimental syscall sandbox ..... no

Still in the course of compiling the wallet <db_cxx.h> is getting included (which is in turn included by src/wallet/bdb.h):

[ 28%] Building CXX object src/wallet/CMakeFiles/bitcoin_wallet.dir/walletdb.cpp.o
In file included from /home/honey/bitcoin_prrev/src/wallet/walletdb.cpp:18:
/home/honey/bitcoin_prrev/src/wallet/bdb.h:27:10: fatal error: 'db_cxx.h' file not found
#include <db_cxx.h>
         ^~~~~~~~~~
1 error generated.

It seems that USE_BDB is sill set for some reason, though the detection should have disabled it?

@jarolrod
Copy link
Member

jarolrod commented Aug 8, 2022

concept ack

@hebasto
Copy link
Member Author

hebasto commented Aug 8, 2022

Updated 485bd54 -> 1d09ef5 (pr25797.01 -> pr25797.02):

  • fixed Berkeley DB detection on OpenBSD.
  • improved all cmake/modules/Find<Package>.cmake modules.

@theStack

I retested on OpenBSD 7.1 with the instructions from the PR description and unfortunately still have a BDB issue

Thank you for sorrow testing. The issue should be fixed now.

Copy link
Contributor

@theStack theStack left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@theStack

I retested on OpenBSD 7.1 with the instructions from the PR description and unfortunately still have a BDB issue

Thank you for sorrow testing. The issue should be fixed now.

Retested again (commit 1d09ef5) on OpenBSD 7.1 with the configuration as shown in #25797 (review), now the build was successful ✅ 🍻 . The following binaries were emitted: bitcoind, bitcoin-cli, bitcoin-tx, bitcoin-util, bitcoin-wallet, bitcoin-qt and leveldbutil (is this last one needed? IIRC I never saw it in the course of building with autotools).

Also ran the functional tests via ./build/test/functional/test_runner.py, everything passed as expected. Couldn't find the test_bitcoin binary though, I'm assuming that unit-test build support with CMake is still under construction?

@hebasto
Copy link
Member Author

hebasto commented Aug 9, 2022

Updated 1d09ef5 -> 66c4ce4 (pr25797.02 -> pr25797.03):

  • the leveldbutil target removed from "all targets" being built by default; thanks to @theStack for pointing it out

@theStack

I'm assuming that unit-test build support with CMake is still under construction?

It is, but not as a part of this PR. My intention is to keep the latter more or less digestible for reviewers.

@luke-jr
Copy link
Member

luke-jr commented Aug 10, 2022

Concept NACK. Our autotools build system is a mess, but this doesn't appear to significantly improve it. I don't think the benefits are worth the costs.

(I realise this PR doesn't remove autotools, but AIUI that's the eventual intention.)

an opportunity to drop the build_msvc subdirectory from the repo altogether

I don't see why CMake changes the situation around build_msvc. We could drop it today and tell Windows builders to use autotools just as well.

Also there is a non-technical/social benefit. Over time, the Autotools community shrinks, but CMake community grows. New contributors, who join this project in the future, will readily support a CMake-based system rather an Autotools-based one.

Do you have evidence of this? Autotools is fairly standard, and mostly just standard sh and make stuff (and m4, but that's admittedly more of a downside). CMake breaks from the norm, and requires a domain-specific language.

@hebasto
Copy link
Member Author

hebasto commented Aug 10, 2022

Updated 66c4ce4 -> e098ba8 (pr25797.03 -> pr25797.04):

  • in-subtree bugfix been replaced with out-subtree workaround
  • fixed white spaces

All changes above made the linter CI task happy now 🐅

@hebasto
Copy link
Member Author

hebasto commented Aug 10, 2022

an opportunity to drop the build_msvc subdirectory from the repo altogether

I don't see why CMake changes the situation around build_msvc. We could drop it today and tell Windows builders to use autotools just as well.

You are talking about "to build on Windows". But the idea is "to build with MSVC". Being a cross-platform tool, CMake is able to create input files for a wide range of build systems, including Unix Makefiles and Visual Studio project files.

@sipsorcery What do you think about this stuff?

@hebasto
Copy link
Member Author

hebasto commented Aug 10, 2022

Also there is a non-technical/social benefit. Over time, the Autotools community shrinks, but CMake community grows. New contributors, who join this project in the future, will readily support a CMake-based system rather an Autotools-based one.

Do you have evidence of this?

I do. There are open-source projects which have dropped Autotools, and there are no ones which do the opposite. Also we could ask people who graduated CS recently whether their curriculums encompassed Autotools and/or CMake (not an evidence, rather a hint).

Autotools is fairly standard, and mostly just standard sh and make stuff (and m4, but that's admittedly more of a downside).

Moving "Autotools --> CMake" is very similar to "shell --> Python" which we have done recently.

CMake breaks from the norm

Which "the norm"?

and requires a domain-specific language.

Using a domain-specific language which serves its purpose much better than a general macro language is a benefit for reviewing and maintaining.

@sipsorcery
Copy link
Contributor

You are talking about "to build on Windows". But the idea is "to build with MSVC". Being a cross-platform tool, CMake is able to create input files for a wide range of build systems, including Unix Makefiles and Visual Studio project files.

@sipsorcery What do you think about this stuff?

The Visual Studio project files produced by CMake aren't as clean as the hand rolled ones but in my experience they still build well (note the vcpkg dependecies generally use cmake).

IMHO it's worth having less clean VS project files if the eventual goal is to have a single build system.

Concept ACK.

@hebasto
Copy link
Member Author

hebasto commented Aug 10, 2022

@luke-jr

Concept NACK. Our autotools build system is a mess, but this doesn't appear to significantly improve it. I don't think the benefits are worth the costs.

And this mess is going to get bigger:

  • we are about introducing the 4th hack to the Libtool
  • more hacks are required to bring Qt 6 support

As you are a developer who is involved into the GUI development, could you share your vision of Qt 6 integration without migration to CMake?

@hebasto
Copy link
Member Author

hebasto commented Aug 10, 2022

@dongcarl @fanquake @ryanofsky @theuni

Your conceptual assessments of this PR will be much appreciated.

@achow101
Copy link
Member

Also we could ask people who graduated CS recently whether their curriculums encompassed Autotools and/or CMake (not an evidence, rather a hint).

We handmade our Makefiles...

@DrahtBot
Copy link
Contributor

DrahtBot commented Aug 10, 2022

The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.

Reviews

See the guideline for information on the review process.

Type Reviewers
Concept NACK luke-jr, theuni
Concept ACK sipsorcery, ryanofsky, vasild, RandyMcMillan, TheCharlatan
Approach ACK adam2k
Stale ACK fanquake

If your review is incorrectly listed, please react with 👎 to this comment and the bot will ignore it on the next update.

Conflicts

Reviewers, this pull request conflicts with the following ones:

  • #27771 (ci: Use docker image cache for "Win64 native [vs2022]" task by hebasto)
  • #27759 (Fix #includes in src/wallet by hebasto)
  • #27737 (ci: compile Clang and compiler-rt in msan jobs by fanquake)
  • #27724 (build: disable boost multi index safe mode in debug mode by willcl-ark)
  • #27710 (ci, iwyu: Update mappings by hebasto)
  • #27676 (macOS: Bump minimum required runtime version and prepare for building with upstream LLVM by theuni)
  • #27099 (build: produce a .zip for macOS distribution by fanquake)
  • #25972 (build: no-longer disable WARN_CXXFLAGS when CXXFLAGS is set by fanquake)
  • #21778 (build: LLVM 15 & LLD based macOS toolchain by fanquake)

If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first.

@luke-jr
Copy link
Member

luke-jr commented Aug 10, 2022

You are talking about "to build on Windows". But the idea is "to build with MSVC". Being a cross-platform tool, CMake is able to create input files for a wide range of build systems, including Unix Makefiles and Visual Studio project files.

autotools can be used with the MSVC compiler

There are open-source projects which have dropped Autotools, and there are no ones which do the opposite.

"No ones"? There are lots which adopt autotools. Otherwise it wouldn't even exist...

Also we could ask people who graduated CS recently whether their curriculums encompassed Autotools and/or CMake

People to ask would be experienced open source developers, not novices who got scammed by colleges.

Which "the norm"?

Most open source software uses autotools.

As you are a developer who is involved into the GUI development, could you share your vision of Qt 6 integration without migration to CMake?

Seems easy enough to just do it the same as Qt 5 already is? pkg-config support was fixed in Qt 6.2.5.

@hebasto
Copy link
Member Author

hebasto commented Aug 10, 2022

There are open-source projects which have dropped Autotools, and there are no ones which do the opposite.

"No ones"? There are lots which adopt autotools. Otherwise it wouldn't even exist...

I mean, there are no projects which moved from non-Autotools to Autotools recent decade.

@hebasto
Copy link
Member Author

hebasto commented Aug 10, 2022

pkg-config support was fixed in Qt 6.2.5.

Not for static builds:

Although it has some limitations, with qt_internal_add_qml_module if it specifies non-public deps these won't be listed and with non-Qt requirements, notably in static builds, not being appended to the PkgConfig file.

@luke-jr
Copy link
Member

luke-jr commented Aug 10, 2022

Static builds are abnormal and only need to be supported for depends-based builds, where we can trivially patch it.

@hebasto
Copy link
Member Author

hebasto commented Aug 10, 2022

Static builds are abnormal and only need to be supported for depends-based builds...

"abnormal"? We deliver users static builds.

we can trivially patch it

I doubt about "trivially". Anyway, your patch for Qt code will be much appreciated.

@DrahtBot DrahtBot mentioned this pull request Aug 11, 2022
5 tasks
@fanquake
Copy link
Member

dongcarlvfanquake ryanofsky theuni
Your conceptual assessments of this PR will be much appreciated.

I am a Concept ~0/ACK for CMake.

However I think if we are going to break every existing piece of Bitcoin Core related build infrastracture (build scripts, docker files, downstream projects, package managers etc), as well as obselete (external) build guides & documentation, we should be able to enumerate some more benefits to doing so.

Here are some benefits of using CMake in the Bitcoin Core project:

Looking at this list, there's nothing interesting here for anyone that doesn't care about the GUI, or Windows DEBUG depends builds; and given that this is the group which will more-than-likely be most impacted by this change, i.e compiling bitcoind + utils on Linux, we should be able to better justify a migration. Even starting with some rationale from something like "Why CMake?".

The plan is to have it in the repo shortly after branching 24.x off, and make CMake-based build system a drop-in replacement of Autotools-based one during the next 2 or 3 release cycles.

Concept NACK on any approach that has as maintaining multiple build systems over multiple, or even a single release. That will be a maintainability / developer nightmare. If we are going to switch, we should just switch. CMake in, Autotools out, over a short period, ideally just after a branch off, so there is plenty of time for changes to settle and issues to be fixed before the next release.

@hebasto
Copy link
Member Author

hebasto commented May 26, 2023

Rebased using the recent hebasto#15.

The CI build is 🟢

Guix builds:

0e55d1f6049ff973dc7a0d1a94f898cac5c107867e5b56ad1765add2cf5e9bad  guix-build-6da2447ba472/output/aarch64-linux-gnu/SHA256SUMS.part
92edb276a7daef893edc1ad07a062666866b33d1e57c9475571ce7446d947d72  guix-build-6da2447ba472/output/aarch64-linux-gnu/bitcoin-6da2447ba472-aarch64-linux-gnu-debug.tar.gz
b505174b13a9e15c99bb866238f6e8d06cecc9b7099f209fa556581927a61b32  guix-build-6da2447ba472/output/aarch64-linux-gnu/bitcoin-6da2447ba472-aarch64-linux-gnu.tar.gz
808666e38700552b4ec8cfc726b56302426f8096193aaf57e3fa5a596966acbd  guix-build-6da2447ba472/output/arm-linux-gnueabihf/SHA256SUMS.part
f73804869f6943c5eb3dfc2db61e3a49c4830ce4a44df80ead7783c5082daf1e  guix-build-6da2447ba472/output/arm-linux-gnueabihf/bitcoin-6da2447ba472-arm-linux-gnueabihf-debug.tar.gz
067e98f534023be038ff70ae5cc84b9c1a0866f13cfaad3fcdb1b7f530010229  guix-build-6da2447ba472/output/arm-linux-gnueabihf/bitcoin-6da2447ba472-arm-linux-gnueabihf.tar.gz
a8a14c4b5c85f99043c4ad619dbc53ec7b2905d640dda5f0b7e076b07006f8ed  guix-build-6da2447ba472/output/arm64-apple-darwin/SHA256SUMS.part
803176a10aa6ffd057921e8a480dcbf7b2cdabfc351b77e270dce37effc739cb  guix-build-6da2447ba472/output/arm64-apple-darwin/bitcoin-6da2447ba472-arm64-apple-darwin-unsigned.dmg
4baf135cfcae2583aa1a2b03be2a7a091ff4c364c101b1385a6873c5f5f4cf3d  guix-build-6da2447ba472/output/arm64-apple-darwin/bitcoin-6da2447ba472-arm64-apple-darwin-unsigned.tar.gz
3644b950cd926ef7d0afd8efd4553dfbd5003c962e7411b952d77410903cf526  guix-build-6da2447ba472/output/arm64-apple-darwin/bitcoin-6da2447ba472-arm64-apple-darwin.tar.gz
4f158342a1dc953daafed2d4668b7b3e16861dc80486d13794ad63c4f94307ed  guix-build-6da2447ba472/output/dist-archive/bitcoin-6da2447ba472.tar.gz
eb60adece4c83d1cb7d86fdbc5a832f3c4212edb4f64c5ed57b0e363d939735a  guix-build-6da2447ba472/output/powerpc64-linux-gnu/SHA256SUMS.part
e88896b253268f51472ff8a1719e368d5d780e5a81e4a1b3534749f7a169728a  guix-build-6da2447ba472/output/powerpc64-linux-gnu/bitcoin-6da2447ba472-powerpc64-linux-gnu-debug.tar.gz
11062cfc02c2f02819133ed6bbb6858029c093f02977a6426ccedc3a0d61056d  guix-build-6da2447ba472/output/powerpc64-linux-gnu/bitcoin-6da2447ba472-powerpc64-linux-gnu.tar.gz
f632db6ae6ca4d131929a55d7cc04f1535b8e14d53bf89c82022e53eb56521b1  guix-build-6da2447ba472/output/powerpc64le-linux-gnu/SHA256SUMS.part
da3d0c0aa8e8cb32bc5f339e548dc06b5e73ca5904d8a51e13191e7172c2b1dc  guix-build-6da2447ba472/output/powerpc64le-linux-gnu/bitcoin-6da2447ba472-powerpc64le-linux-gnu-debug.tar.gz
b608ee27dad6cee342961eacb0d36c3163868d846ce1e74275e22ac2270eaa7a  guix-build-6da2447ba472/output/powerpc64le-linux-gnu/bitcoin-6da2447ba472-powerpc64le-linux-gnu.tar.gz
442c091932dcd37ba81e8a24fc396c8b6d327fcdc064ff440e4f3f63c1525b72  guix-build-6da2447ba472/output/riscv64-linux-gnu/SHA256SUMS.part
f82a30c7f8aa710f7bda84fe83ced3445547656f2035615e5b8318b5a73764b4  guix-build-6da2447ba472/output/riscv64-linux-gnu/bitcoin-6da2447ba472-riscv64-linux-gnu-debug.tar.gz
981ae422e09d6a03f9575808b42e772d3fb02c1afe1c2706054579662e88dc88  guix-build-6da2447ba472/output/riscv64-linux-gnu/bitcoin-6da2447ba472-riscv64-linux-gnu.tar.gz
e7b0b2bc85c3e8d0c515de7b4b6140fb48bf6a4d448d3855b76f637f72af9a06  guix-build-6da2447ba472/output/x86_64-apple-darwin/SHA256SUMS.part
9efd7787d8882c3e35c3a54b6d10f5a40aedad0178bfccdc1770426a766c15cb  guix-build-6da2447ba472/output/x86_64-apple-darwin/bitcoin-6da2447ba472-x86_64-apple-darwin-unsigned.dmg
6ee52ec5fa097970cf1fa606dc7fc1a308ecc1a388570242683f5b7bb43146fb  guix-build-6da2447ba472/output/x86_64-apple-darwin/bitcoin-6da2447ba472-x86_64-apple-darwin-unsigned.tar.gz
2ee3b5ddf39a6be1bce59f86c2694804d2e43e9f6cc32371d22b8bc1b946f3d4  guix-build-6da2447ba472/output/x86_64-apple-darwin/bitcoin-6da2447ba472-x86_64-apple-darwin.tar.gz
2a19ce56e38c0ae93104cd7e594ad4a6fadc8aa3bb7ddc1c45eb35c9e4837cf7  guix-build-6da2447ba472/output/x86_64-linux-gnu/SHA256SUMS.part
a6876c0ad3a7ecdc0c7040d88bc81b0a3d30854a51cb7edb87cf407c3971bad7  guix-build-6da2447ba472/output/x86_64-linux-gnu/bitcoin-6da2447ba472-x86_64-linux-gnu-debug.tar.gz
663eb0817cc7f8da784ba66db8b068d68d47a8b06d8713be2dff7d80ab63326f  guix-build-6da2447ba472/output/x86_64-linux-gnu/bitcoin-6da2447ba472-x86_64-linux-gnu.tar.gz
dfb0fedf875558a1f4e5dc7b6e3c9c0c42400ac0cb63f15d97135c629ff646ae  guix-build-6da2447ba472/output/x86_64-w64-mingw32/SHA256SUMS.part
b0413410ff106c55672ac0533c7497cc2eda5a7a50202df016e59039adfa10e8  guix-build-6da2447ba472/output/x86_64-w64-mingw32/bitcoin-6da2447ba472-win64-debug.zip
ebe471369c36358e687974fad18454be4f2b92a8986ff234e2018034994b1e0b  guix-build-6da2447ba472/output/x86_64-w64-mingw32/bitcoin-6da2447ba472-win64-setup-unsigned.exe
c463081d2092f19de0c52f5b83f5f37d4373e80ca95842c161e8f23afbabc522  guix-build-6da2447ba472/output/x86_64-w64-mingw32/bitcoin-6da2447ba472-win64-unsigned.tar.gz
e4f170a8cee8c410569c53b7029cea0298479c9b3999646fea0922876897ab00  guix-build-6da2447ba472/output/x86_64-w64-mingw32/bitcoin-6da2447ba472-win64.zip

@DrahtBot
Copy link
Contributor

🐙 This pull request conflicts with the target branch and needs rebase.

hebasto added a commit to hebasto/bitcoin that referenced this pull request Jul 7, 2023
43123cf FIXUP: Same as PR27458 (Hennadii Stepanov)
2d8930e FIXUP: Same as PR27656 (Hennadii Stepanov)
a112470 cmake: Include CTest (Hennadii Stepanov)
cb19814 cmake: Build `test_bitcoin` executable (Hennadii Stepanov)
751453f cmake: Build `bench_bitcoin` executable (Hennadii Stepanov)
a2c3493 cmake: Add test config and runners (Hennadii Stepanov)
cb7dc94 test: Explicitly specify directory where to search tests for (Hennadii Stepanov)
2fd303f test: Make `util/test_runner.py` honor `BITCOINUTIL` and `BITCOINTX` (Hennadii Stepanov)
2e3721e cmake: Add wallet functionality (Hennadii Stepanov)
f944ccd cmake: Build `bitcoin-util` executable (Hennadii Stepanov)
d1c319d cmake: Build `bitcoin-tx` executable (Hennadii Stepanov)
1934755 cmake: Build `bitcoin-cli` executable (Hennadii Stepanov)
5fc2cee [FIXUP] cmake: Add workaround for https://gitlab.kitware.com/cmake/cmake/-/issues/20652 (Hennadii Stepanov)
b2bea9f [FIXUP] cmake: Consider `ASM` option when checking for `HAVE_64BIT_ASM` (Hennadii Stepanov)

Pull request description:

  The parent PR: bitcoin#25797.
  The previous PRs in the staging branch: #5, #6, #7, #10, #13.

  ---

  What is NEW:
  - `bitcoin-cli`
  - `bitcoin-tx`
  - `bitcoin-util`
  - wallet functionality and `bitcoin-wallet`
  - `bench_bitcoin`
  - `test_bitcoin`

  EXAMPLES:
  ```
  cmake -S . -B build
  cd build
  cmake --build . -j $(nproc)
  ctest -j $(nproc)
  ./test/functional/test_runner.py -j $(nproc)
  ```

  Using a multi-configuration generator (CMake 3.17+ is required):
  ```
  cmake -S . -B build -G "Ninja Multi-Config"
  cd build
  cmake --build . -j $(nproc)
  ctest -j $(nproc) -C Debug
  ```
  ---

  What to test:
  - old CMake versions, for example v3.13
  - multi-config generators, for example `-G "Ninja Multi-Config"`

  ---

  What to consider additionally:
  - is it worth to pull the "[test: Make util/test_runner.py honor BITCOINUTIL and BITCOINTX](268aca3)" commit to the main repo now?

  FWIW, we use the same approach for functional tests providing the `BITCOIND` environment variable when needed.

ACKs for top commit:
  TheCharlatan:
    ACK 43123cf

Tree-SHA512: a04cfca266bcde780528c915cb01f69189f36a0e1beb521fe75e4816ca4f9ab9440646529bbf2cbdfe76275debc5107ee2433e1027405094d3e8a74ec0d1d077
@hebasto
Copy link
Member Author

hebasto commented Jul 7, 2023

Closing this PR as its usefulness seems marginal.

Although, I'll keep maintaining this branch.

Reminding that the active reviewing process still happening in https://github.com/hebasto/bitcoin/tree/cmake-staging and related PRs.

@hebasto hebasto closed this Jul 7, 2023
@luke-jr
Copy link
Member

luke-jr commented Jul 7, 2023

we should be able to enumerate some more benefits to doing so.

One more for the list:

  • Real out-of-tree builds. Autotools requires autogen to be run in the tree, which can be complicated when you don't want the build to have write access to the source dir.

hebasto added a commit to hebasto/bitcoin that referenced this pull request Jul 20, 2023
a933ddf [FIXUP] Better document a workaround (Hennadii Stepanov)
769633e [FIXUP] for "cmake: Add wallet functionality" (Hennadii Stepanov)
31e4e62 [FIXUP] for "cmake: Build `test_bitcoin` executable" (Hennadii Stepanov)
f2dbb17 [FIXUP] for "cmake: Build `test_bitcoin` executable" (Hennadii Stepanov)
91d7327 [FIXUP] Boost (Hennadii Stepanov)

Pull request description:

  The parent PR: bitcoin#25797.
  The previous PRs in the staging branch: #5, #6, #7, #10, #13, #15.

  This PR consists of fixups only to make reviewing easier :)

ACKs for top commit:
  theuni:
    ACK a933ddf

Tree-SHA512: 270869a3bf9b9f2d56b75d169f25032385fa2d1297951a23c0d1900d9668a40b153c7a5d9b51fa87596eec681107c40da8e55f405d28a7ecd2ec0f72f3550bbf
hebasto added a commit to hebasto/bitcoin that referenced this pull request Jul 20, 2023
ac7bc5b [FIXUP] Rename CCACHE_EXECUTABLE --> CCACHE_COMMAND for consistency (Hennadii Stepanov)
0476509 [FIXUP] Learn to work with recent ccache in MSVC builds (Hennadii Stepanov)
2fd67c7 [FIXUP] Do not disable `TrackFileAccess` in MSVC builds (Hennadii Stepanov)
a53ae12 [FIXUP] Use Multi-ToolTask in MSVC builds by default (Hennadii Stepanov)

Pull request description:

  The parent PR: bitcoin#25797.
  The previous PRs in the staging branch: #5, #6, #7, #10, #13, #15, #17, #18.

  This PR consists of fixups related to using [Ccache](https://ccache.dev/) in MSVC builds.

Top commit has no ACKs.

Tree-SHA512: dc01202b054aaeb5b46607bc93126bee0df523df3b4f2df54b566b2e2d6306d784a723fd4a999d0d84fdf31e926a72304790f94b9d57034db0c112ee9f52070e
hebasto added a commit to hebasto/bitcoin that referenced this pull request Sep 13, 2023
a65da0d cmake: Redefine configuration flags (Hennadii Stepanov)
1a1dda5 [FIXUP] Evaluate flags set in depends _after_ config-specific flags (Hennadii Stepanov)
482e844 cmake: Warn about not encapsulated build properties (Hennadii Stepanov)
3736470 cmake: Add platform-specific flags (Hennadii Stepanov)
e0621e9 cmake: Add `TryAppendLinkerFlag` module (Hennadii Stepanov)
ae430cf cmake: Add `TryAppendCXXFlags` module (Hennadii Stepanov)
7903bd5 [FIXUP] Encapsulate common build flags into `core` interface library (Hennadii Stepanov)

Pull request description:

  The parent PR: bitcoin#25797.
  The previous PRs in the staging branch: #5, #6, #7, #10, #13, #15, #17, #19.

  ---

  What is NEW:
  - functions for checking compiler and linker flags
  - managing flags for different build types (configurations)

  EXAMPLES of configuration output on Ubuntu 22.04:

  -  for a single-config generator:
  ```
  $ cmake .. -G "Unix Makefiles"
  ...
  Cross compiling ....................... FALSE
  Preprocessor defined macros ...........
  C compiler ............................ /usr/bin/cc
  CFLAGS ................................
  C++ compiler .......................... /usr/bin/c++
  CXXFLAGS ..............................
  Common compile options ................
  Common link options ...................
  Linker flags for executables ..........
  Linker flags for shared libraries .....
  Build type (configuration):
   - CMAKE_BUILD_TYPE ................... RelWithDebInfo
   - Preprocessor defined macros ........
   - CFLAGS ............................. -O2 -g
   - CXXFLAGS ........................... -O2 -g
   - LDFLAGS for executables ............
   - LDFLAGS for shared libraries .......
  Use assembly routines ................. ON
  Use ccache for compiling .............. ON
  ...
  ```

  - for a multi-config generator:
  ```
  $ cmake .. -G "Ninja Multi-Config"
  ...
  Cross compiling ....................... FALSE
  Preprocessor defined macros ...........
  C compiler ............................ /usr/bin/cc
  CFLAGS ................................
  C++ compiler .......................... /usr/bin/c++
  CXXFLAGS ..............................
  Common compile options ................
  Common link options ...................
  Linker flags for executables ..........
  Linker flags for shared libraries .....
  Available build types (configurations)  RelWithDebInfo Debug Release
  'RelWithDebInfo' build type (configuration):
   - Preprocessor defined macros ........
   - CFLAGS ............................. -O2 -g
   - CXXFLAGS ........................... -O2 -g
   - LDFLAGS for executables ............
   - LDFLAGS for shared libraries .......
  'Debug' build type (configuration):
   - Preprocessor defined macros ........ DEBUG DEBUG_LOCKORDER DEBUG_LOCKCONTENTION RPC_DOC_CHECK ABORT_ON_FAILED_ASSUME
   - CFLAGS ............................. -O0 -g3
   - CXXFLAGS ........................... -O0 -g3 -ftrapv
   - LDFLAGS for executables ............
   - LDFLAGS for shared libraries .......
  'Release' build type (configuration):
   - Preprocessor defined macros ........
   - CFLAGS ............................. -O2
   - CXXFLAGS ........................... -O2
   - LDFLAGS for executables ............
   - LDFLAGS for shared libraries .......
  Use assembly routines ................. ON
  Use ccache for compiling .............. ON
  ...
  ```

  - cross-compiling for Windows:
  ```
  $ make -C depends HOST=x86_64-w64-mingw32 DEBUG=1 NO_QT=1
  $ cmake -B build --toolchain depends/x86_64-w64-mingw32/share/toolchain.cmake -DCMAKE_BUILD_TYPE=Debug
  ...
  Cross compiling ....................... TRUE, for Windows, x86_64
  Preprocessor defined macros ........... _WIN32_WINNT=0x0601 _WIN32_IE=0x0501 WIN32_LEAN_AND_MEAN NOMINMAX WIN32 _WINDOWS _MT _GLIBCXX_DEBUG _GLIBCXX_DEBUG_PEDANTIC
  C compiler ............................ /usr/bin/x86_64-w64-mingw32-gcc
  CFLAGS ................................ -pipe -std=c11 -O1
  C++ compiler .......................... /usr/bin/x86_64-w64-mingw32-g++-posix
  CXXFLAGS .............................. -pipe -std=c++17 -O1
  Common compile options ................
  Common link options ................... -Wl,--major-subsystem-version,6 -Wl,--minor-subsystem-version,1
  Linker flags for executables .......... -static
  Linker flags for shared libraries .....
  Build type (configuration):
   - CMAKE_BUILD_TYPE ................... Debug
   - Preprocessor defined macros ........ DEBUG DEBUG_LOCKORDER DEBUG_LOCKCONTENTION RPC_DOC_CHECK ABORT_ON_FAILED_ASSUME
   - CFLAGS ............................. -O0 -g3
   - CXXFLAGS ........................... -O0 -g3 -ftrapv
   - LDFLAGS for executables ............
   - LDFLAGS for shared libraries .......
  Use assembly routines ................. ON
  Use ccache for compiling .............. ON
  ...
  ```

  **A cross-project note.** The `ProcessConfigurations.cmake` is based on the same module that was suggested in bitcoin-core/secp256k1#1291. So, cross-reviewing is welcome :)

ACKs for top commit:
  theuni:
    ACK a65da0d to keep this moving. This has been sitting for too long :(

Tree-SHA512: 57c5e91ddf9675c6a2b56c0cb70fd3f045af8076bee74c49390de38b8d514e130d2086fde6d83d2d1278b437d0a10cc721f0aa44934698110aeadb3a1aef9e64
PastaPastaPasta pushed a commit to PastaPastaPasta/dash that referenced this pull request Feb 28, 2024
08269e5 Squashed 'src/crc32c/' changes from 0d624261ef..0bac72c455 (fanquake)

Pull request description:

  Update the crc32c subtree. Includes:
  * bitcoin-core/crc32c-subtree#5

  Which is useful for bitcoin#25797.

  Guix Build (x86_64):
  ```bash
  10677afb5b43e75f9c44ca2a854df88c2d2443392d3930d8c63d3c17e8d5959f  guix-build-9546b3a2a3a4/output/aarch64-linux-gnu/SHA256SUMS.part
  a05ea337e8dbbf234419908e1c95467f24f9ad83f3371718d4d4e3c1ae64dc7b  guix-build-9546b3a2a3a4/output/aarch64-linux-gnu/bitcoin-9546b3a2a3a4-aarch64-linux-gnu-debug.tar.gz
  9e3bcaecc55e8100c17cd6049f99a5dcdd485153091a9ddc1bb014cd74da719b  guix-build-9546b3a2a3a4/output/aarch64-linux-gnu/bitcoin-9546b3a2a3a4-aarch64-linux-gnu.tar.gz
  1306478fadf15b11636625747029de78a9121d179bc63cad77478a5a4b70e012  guix-build-9546b3a2a3a4/output/arm-linux-gnueabihf/SHA256SUMS.part
  55e82fc26fb57b4a58d63985b4b746c939c949abc670c976e270d5ec9c678623  guix-build-9546b3a2a3a4/output/arm-linux-gnueabihf/bitcoin-9546b3a2a3a4-arm-linux-gnueabihf-debug.tar.gz
  4ef06487c7df0b5ffdbcd5b8e4d32ffc8016f071fda7566f824e713581e7b043  guix-build-9546b3a2a3a4/output/arm-linux-gnueabihf/bitcoin-9546b3a2a3a4-arm-linux-gnueabihf.tar.gz
  fff63a55498bc592296fa3514bc99b39e83c4ab808ce3b04c9499b7a6adf3fd6  guix-build-9546b3a2a3a4/output/arm64-apple-darwin/SHA256SUMS.part
  965a96698bf7e49e2cc710ea567f69fbd4bedef64308f574e96c66e15c78d84d  guix-build-9546b3a2a3a4/output/arm64-apple-darwin/bitcoin-9546b3a2a3a4-arm64-apple-darwin-unsigned.dmg
  6738a0692430d4e59b45a8a9a247b6765970fb17c4047b66a332999425caafd9  guix-build-9546b3a2a3a4/output/arm64-apple-darwin/bitcoin-9546b3a2a3a4-arm64-apple-darwin-unsigned.tar.gz
  d2dc890f9d4e7f147b29e3e186504fc1af7f68b516d770d7700d4982429ad7e3  guix-build-9546b3a2a3a4/output/arm64-apple-darwin/bitcoin-9546b3a2a3a4-arm64-apple-darwin.tar.gz
  c74196e38f26f0aa8b345d81389a69c2324017c08b32fe5d97823a6bdaebd63b  guix-build-9546b3a2a3a4/output/dist-archive/bitcoin-9546b3a2a3a4.tar.gz
  fdcebf2b6518f3a538429aba53795f45a6c07e0b3a73e58242a46b0e1a1de429  guix-build-9546b3a2a3a4/output/powerpc64-linux-gnu/SHA256SUMS.part
  d4180196535c6a13f158e6f1b013bac6e1f32291d2940f830898aff55bd215ad  guix-build-9546b3a2a3a4/output/powerpc64-linux-gnu/bitcoin-9546b3a2a3a4-powerpc64-linux-gnu-debug.tar.gz
  ffbaea4130f460a93afd89618b68be5918d9fad053427390350daa1f512f628c  guix-build-9546b3a2a3a4/output/powerpc64-linux-gnu/bitcoin-9546b3a2a3a4-powerpc64-linux-gnu.tar.gz
  09071b159126c89bdbc3f19b51b89c34d9709658e77f0f5da55b41218453b652  guix-build-9546b3a2a3a4/output/powerpc64le-linux-gnu/SHA256SUMS.part
  4b75a22ac557a0fea88f8df0beaff9b19fb032587710edcca3d942847445fbc3  guix-build-9546b3a2a3a4/output/powerpc64le-linux-gnu/bitcoin-9546b3a2a3a4-powerpc64le-linux-gnu-debug.tar.gz
  1bbb30880fe9ec5151377b0ee1952316b63d3d4bfaaa383f72660591e46e1965  guix-build-9546b3a2a3a4/output/powerpc64le-linux-gnu/bitcoin-9546b3a2a3a4-powerpc64le-linux-gnu.tar.gz
  06e6140b0b23f974a1c49e551fc4f8effba8afcc3fef3adf4fc3a5cd72d55007  guix-build-9546b3a2a3a4/output/riscv64-linux-gnu/SHA256SUMS.part
  948219a7eb070e48d613bef5c96e47880414d738ecc0c334e1d46291af315cc9  guix-build-9546b3a2a3a4/output/riscv64-linux-gnu/bitcoin-9546b3a2a3a4-riscv64-linux-gnu-debug.tar.gz
  9dcdb87bf947a23eb8e108a15b7b224f03f01dfac1879be85114f67ecc1cd425  guix-build-9546b3a2a3a4/output/riscv64-linux-gnu/bitcoin-9546b3a2a3a4-riscv64-linux-gnu.tar.gz
  c02b6fcc9f1333a83571eff16c6d7789febd8f693c6945b751b0665bdc025f20  guix-build-9546b3a2a3a4/output/x86_64-apple-darwin/SHA256SUMS.part
  3a092d1c08cb85f4ac502424b3c5932ff6970a191ce43d622d36ad17f9b36243  guix-build-9546b3a2a3a4/output/x86_64-apple-darwin/bitcoin-9546b3a2a3a4-x86_64-apple-darwin-unsigned.dmg
  1a1bbefb93131d62f88d9eb51bddc2bd3e247533f8000555af20ea582fe65daa  guix-build-9546b3a2a3a4/output/x86_64-apple-darwin/bitcoin-9546b3a2a3a4-x86_64-apple-darwin-unsigned.tar.gz
  684180389af6cba525439b8c8142bbdc3391c125583743275b6876e69adbd733  guix-build-9546b3a2a3a4/output/x86_64-apple-darwin/bitcoin-9546b3a2a3a4-x86_64-apple-darwin.tar.gz
  f81bc831e3d933b387940c8bd3cc10402e00116c713cd2ac9e7531082a354187  guix-build-9546b3a2a3a4/output/x86_64-linux-gnu/SHA256SUMS.part
  05faf45bc567742d41addafc5d8e85b5b586173f2efdd2ae501d6ebdf69379bb  guix-build-9546b3a2a3a4/output/x86_64-linux-gnu/bitcoin-9546b3a2a3a4-x86_64-linux-gnu-debug.tar.gz
  dfe1b0c22c706a918cbc8952bebba0b471c849276725dd5e0b2eee265c281386  guix-build-9546b3a2a3a4/output/x86_64-linux-gnu/bitcoin-9546b3a2a3a4-x86_64-linux-gnu.tar.gz
  64186c495eb9b6e8c6a2be89530c928e7b161e5ca7a1b56b7786dd28d310e7e8  guix-build-9546b3a2a3a4/output/x86_64-w64-mingw32/SHA256SUMS.part
  c099d0dfeb4556539b52c8bc08ef2c15c636526dccc0a73900c68fa45b052189  guix-build-9546b3a2a3a4/output/x86_64-w64-mingw32/bitcoin-9546b3a2a3a4-win64-debug.zip
  7751e50110ed1a9a46a2fdadb7d71c6e30910685a3074dea563ec64997cbb134  guix-build-9546b3a2a3a4/output/x86_64-w64-mingw32/bitcoin-9546b3a2a3a4-win64-setup-unsigned.exe
  d8ec6a7d24c9b514c342fe3ee2281482a104100230650523d3303484036507a3  guix-build-9546b3a2a3a4/output/x86_64-w64-mingw32/bitcoin-9546b3a2a3a4-win64-unsigned.tar.gz
  ee3123a60a732596347e58351c38cc5c0a8bf9b24f3cc9041f12ec11572e0659  guix-build-9546b3a2a3a4/output/x86_64-w64-mingw32/bitcoin-9546b3a2a3a4-win64.zip
  ```

  Guix Build (arm64):
  ```bash
  1306478fadf15b11636625747029de78a9121d179bc63cad77478a5a4b70e012  guix-build-9546b3a2a3a4/output/arm-linux-gnueabihf/SHA256SUMS.part
  55e82fc26fb57b4a58d63985b4b746c939c949abc670c976e270d5ec9c678623  guix-build-9546b3a2a3a4/output/arm-linux-gnueabihf/bitcoin-9546b3a2a3a4-arm-linux-gnueabihf-debug.tar.gz
  4ef06487c7df0b5ffdbcd5b8e4d32ffc8016f071fda7566f824e713581e7b043  guix-build-9546b3a2a3a4/output/arm-linux-gnueabihf/bitcoin-9546b3a2a3a4-arm-linux-gnueabihf.tar.gz
  fff63a55498bc592296fa3514bc99b39e83c4ab808ce3b04c9499b7a6adf3fd6  guix-build-9546b3a2a3a4/output/arm64-apple-darwin/SHA256SUMS.part
  965a96698bf7e49e2cc710ea567f69fbd4bedef64308f574e96c66e15c78d84d  guix-build-9546b3a2a3a4/output/arm64-apple-darwin/bitcoin-9546b3a2a3a4-arm64-apple-darwin-unsigned.dmg
  6738a0692430d4e59b45a8a9a247b6765970fb17c4047b66a332999425caafd9  guix-build-9546b3a2a3a4/output/arm64-apple-darwin/bitcoin-9546b3a2a3a4-arm64-apple-darwin-unsigned.tar.gz
  d2dc890f9d4e7f147b29e3e186504fc1af7f68b516d770d7700d4982429ad7e3  guix-build-9546b3a2a3a4/output/arm64-apple-darwin/bitcoin-9546b3a2a3a4-arm64-apple-darwin.tar.gz
  c74196e38f26f0aa8b345d81389a69c2324017c08b32fe5d97823a6bdaebd63b  guix-build-9546b3a2a3a4/output/dist-archive/bitcoin-9546b3a2a3a4.tar.gz
  fdcebf2b6518f3a538429aba53795f45a6c07e0b3a73e58242a46b0e1a1de429  guix-build-9546b3a2a3a4/output/powerpc64-linux-gnu/SHA256SUMS.part
  d4180196535c6a13f158e6f1b013bac6e1f32291d2940f830898aff55bd215ad  guix-build-9546b3a2a3a4/output/powerpc64-linux-gnu/bitcoin-9546b3a2a3a4-powerpc64-linux-gnu-debug.tar.gz
  ffbaea4130f460a93afd89618b68be5918d9fad053427390350daa1f512f628c  guix-build-9546b3a2a3a4/output/powerpc64-linux-gnu/bitcoin-9546b3a2a3a4-powerpc64-linux-gnu.tar.gz
  09071b159126c89bdbc3f19b51b89c34d9709658e77f0f5da55b41218453b652  guix-build-9546b3a2a3a4/output/powerpc64le-linux-gnu/SHA256SUMS.part
  4b75a22ac557a0fea88f8df0beaff9b19fb032587710edcca3d942847445fbc3  guix-build-9546b3a2a3a4/output/powerpc64le-linux-gnu/bitcoin-9546b3a2a3a4-powerpc64le-linux-gnu-debug.tar.gz
  1bbb30880fe9ec5151377b0ee1952316b63d3d4bfaaa383f72660591e46e1965  guix-build-9546b3a2a3a4/output/powerpc64le-linux-gnu/bitcoin-9546b3a2a3a4-powerpc64le-linux-gnu.tar.gz
  06e6140b0b23f974a1c49e551fc4f8effba8afcc3fef3adf4fc3a5cd72d55007  guix-build-9546b3a2a3a4/output/riscv64-linux-gnu/SHA256SUMS.part
  948219a7eb070e48d613bef5c96e47880414d738ecc0c334e1d46291af315cc9  guix-build-9546b3a2a3a4/output/riscv64-linux-gnu/bitcoin-9546b3a2a3a4-riscv64-linux-gnu-debug.tar.gz
  9dcdb87bf947a23eb8e108a15b7b224f03f01dfac1879be85114f67ecc1cd425  guix-build-9546b3a2a3a4/output/riscv64-linux-gnu/bitcoin-9546b3a2a3a4-riscv64-linux-gnu.tar.gz
  c02b6fcc9f1333a83571eff16c6d7789febd8f693c6945b751b0665bdc025f20  guix-build-9546b3a2a3a4/output/x86_64-apple-darwin/SHA256SUMS.part
  3a092d1c08cb85f4ac502424b3c5932ff6970a191ce43d622d36ad17f9b36243  guix-build-9546b3a2a3a4/output/x86_64-apple-darwin/bitcoin-9546b3a2a3a4-x86_64-apple-darwin-unsigned.dmg
  1a1bbefb93131d62f88d9eb51bddc2bd3e247533f8000555af20ea582fe65daa  guix-build-9546b3a2a3a4/output/x86_64-apple-darwin/bitcoin-9546b3a2a3a4-x86_64-apple-darwin-unsigned.tar.gz
  684180389af6cba525439b8c8142bbdc3391c125583743275b6876e69adbd733  guix-build-9546b3a2a3a4/output/x86_64-apple-darwin/bitcoin-9546b3a2a3a4-x86_64-apple-darwin.tar.gz
  f81bc831e3d933b387940c8bd3cc10402e00116c713cd2ac9e7531082a354187  guix-build-9546b3a2a3a4/output/x86_64-linux-gnu/SHA256SUMS.part
  05faf45bc567742d41addafc5d8e85b5b586173f2efdd2ae501d6ebdf69379bb  guix-build-9546b3a2a3a4/output/x86_64-linux-gnu/bitcoin-9546b3a2a3a4-x86_64-linux-gnu-debug.tar.gz
  dfe1b0c22c706a918cbc8952bebba0b471c849276725dd5e0b2eee265c281386  guix-build-9546b3a2a3a4/output/x86_64-linux-gnu/bitcoin-9546b3a2a3a4-x86_64-linux-gnu.tar.gz
  64186c495eb9b6e8c6a2be89530c928e7b161e5ca7a1b56b7786dd28d310e7e8  guix-build-9546b3a2a3a4/output/x86_64-w64-mingw32/SHA256SUMS.part
  c099d0dfeb4556539b52c8bc08ef2c15c636526dccc0a73900c68fa45b052189  guix-build-9546b3a2a3a4/output/x86_64-w64-mingw32/bitcoin-9546b3a2a3a4-win64-debug.zip
  7751e50110ed1a9a46a2fdadb7d71c6e30910685a3074dea563ec64997cbb134  guix-build-9546b3a2a3a4/output/x86_64-w64-mingw32/bitcoin-9546b3a2a3a4-win64-setup-unsigned.exe
  d8ec6a7d24c9b514c342fe3ee2281482a104100230650523d3303484036507a3  guix-build-9546b3a2a3a4/output/x86_64-w64-mingw32/bitcoin-9546b3a2a3a4-win64-unsigned.tar.gz
  ee3123a60a732596347e58351c38cc5c0a8bf9b24f3cc9041f12ec11572e0659  guix-build-9546b3a2a3a4/output/x86_64-w64-mingw32/bitcoin-9546b3a2a3a4-win64.zip
  ```

ACKs for top commit:
  hebasto:
    ACK 9546b3a, I have reviewed the code and it looks OK, I agree it can be merged.
  jarolrod:
    ACK 9546b3a

Tree-SHA512: e5f98fd3bdb90516d24ed6cc26da9ed4a83374888d322a4e3a26d8df4a2352711d842787b07ba94e2dbd142391bb8f39eb6f040cbb3c2f217f7980b69aaae31f
PastaPastaPasta pushed a commit to PastaPastaPasta/dash that referenced this pull request Feb 29, 2024
08269e5 Squashed 'src/crc32c/' changes from 0d624261ef..0bac72c455 (fanquake)

Pull request description:

  Update the crc32c subtree. Includes:
  * bitcoin-core/crc32c-subtree#5

  Which is useful for bitcoin#25797.

  Guix Build (x86_64):
  ```bash
  10677afb5b43e75f9c44ca2a854df88c2d2443392d3930d8c63d3c17e8d5959f  guix-build-9546b3a2a3a4/output/aarch64-linux-gnu/SHA256SUMS.part
  a05ea337e8dbbf234419908e1c95467f24f9ad83f3371718d4d4e3c1ae64dc7b  guix-build-9546b3a2a3a4/output/aarch64-linux-gnu/bitcoin-9546b3a2a3a4-aarch64-linux-gnu-debug.tar.gz
  9e3bcaecc55e8100c17cd6049f99a5dcdd485153091a9ddc1bb014cd74da719b  guix-build-9546b3a2a3a4/output/aarch64-linux-gnu/bitcoin-9546b3a2a3a4-aarch64-linux-gnu.tar.gz
  1306478fadf15b11636625747029de78a9121d179bc63cad77478a5a4b70e012  guix-build-9546b3a2a3a4/output/arm-linux-gnueabihf/SHA256SUMS.part
  55e82fc26fb57b4a58d63985b4b746c939c949abc670c976e270d5ec9c678623  guix-build-9546b3a2a3a4/output/arm-linux-gnueabihf/bitcoin-9546b3a2a3a4-arm-linux-gnueabihf-debug.tar.gz
  4ef06487c7df0b5ffdbcd5b8e4d32ffc8016f071fda7566f824e713581e7b043  guix-build-9546b3a2a3a4/output/arm-linux-gnueabihf/bitcoin-9546b3a2a3a4-arm-linux-gnueabihf.tar.gz
  fff63a55498bc592296fa3514bc99b39e83c4ab808ce3b04c9499b7a6adf3fd6  guix-build-9546b3a2a3a4/output/arm64-apple-darwin/SHA256SUMS.part
  965a96698bf7e49e2cc710ea567f69fbd4bedef64308f574e96c66e15c78d84d  guix-build-9546b3a2a3a4/output/arm64-apple-darwin/bitcoin-9546b3a2a3a4-arm64-apple-darwin-unsigned.dmg
  6738a0692430d4e59b45a8a9a247b6765970fb17c4047b66a332999425caafd9  guix-build-9546b3a2a3a4/output/arm64-apple-darwin/bitcoin-9546b3a2a3a4-arm64-apple-darwin-unsigned.tar.gz
  d2dc890f9d4e7f147b29e3e186504fc1af7f68b516d770d7700d4982429ad7e3  guix-build-9546b3a2a3a4/output/arm64-apple-darwin/bitcoin-9546b3a2a3a4-arm64-apple-darwin.tar.gz
  c74196e38f26f0aa8b345d81389a69c2324017c08b32fe5d97823a6bdaebd63b  guix-build-9546b3a2a3a4/output/dist-archive/bitcoin-9546b3a2a3a4.tar.gz
  fdcebf2b6518f3a538429aba53795f45a6c07e0b3a73e58242a46b0e1a1de429  guix-build-9546b3a2a3a4/output/powerpc64-linux-gnu/SHA256SUMS.part
  d4180196535c6a13f158e6f1b013bac6e1f32291d2940f830898aff55bd215ad  guix-build-9546b3a2a3a4/output/powerpc64-linux-gnu/bitcoin-9546b3a2a3a4-powerpc64-linux-gnu-debug.tar.gz
  ffbaea4130f460a93afd89618b68be5918d9fad053427390350daa1f512f628c  guix-build-9546b3a2a3a4/output/powerpc64-linux-gnu/bitcoin-9546b3a2a3a4-powerpc64-linux-gnu.tar.gz
  09071b159126c89bdbc3f19b51b89c34d9709658e77f0f5da55b41218453b652  guix-build-9546b3a2a3a4/output/powerpc64le-linux-gnu/SHA256SUMS.part
  4b75a22ac557a0fea88f8df0beaff9b19fb032587710edcca3d942847445fbc3  guix-build-9546b3a2a3a4/output/powerpc64le-linux-gnu/bitcoin-9546b3a2a3a4-powerpc64le-linux-gnu-debug.tar.gz
  1bbb30880fe9ec5151377b0ee1952316b63d3d4bfaaa383f72660591e46e1965  guix-build-9546b3a2a3a4/output/powerpc64le-linux-gnu/bitcoin-9546b3a2a3a4-powerpc64le-linux-gnu.tar.gz
  06e6140b0b23f974a1c49e551fc4f8effba8afcc3fef3adf4fc3a5cd72d55007  guix-build-9546b3a2a3a4/output/riscv64-linux-gnu/SHA256SUMS.part
  948219a7eb070e48d613bef5c96e47880414d738ecc0c334e1d46291af315cc9  guix-build-9546b3a2a3a4/output/riscv64-linux-gnu/bitcoin-9546b3a2a3a4-riscv64-linux-gnu-debug.tar.gz
  9dcdb87bf947a23eb8e108a15b7b224f03f01dfac1879be85114f67ecc1cd425  guix-build-9546b3a2a3a4/output/riscv64-linux-gnu/bitcoin-9546b3a2a3a4-riscv64-linux-gnu.tar.gz
  c02b6fcc9f1333a83571eff16c6d7789febd8f693c6945b751b0665bdc025f20  guix-build-9546b3a2a3a4/output/x86_64-apple-darwin/SHA256SUMS.part
  3a092d1c08cb85f4ac502424b3c5932ff6970a191ce43d622d36ad17f9b36243  guix-build-9546b3a2a3a4/output/x86_64-apple-darwin/bitcoin-9546b3a2a3a4-x86_64-apple-darwin-unsigned.dmg
  1a1bbefb93131d62f88d9eb51bddc2bd3e247533f8000555af20ea582fe65daa  guix-build-9546b3a2a3a4/output/x86_64-apple-darwin/bitcoin-9546b3a2a3a4-x86_64-apple-darwin-unsigned.tar.gz
  684180389af6cba525439b8c8142bbdc3391c125583743275b6876e69adbd733  guix-build-9546b3a2a3a4/output/x86_64-apple-darwin/bitcoin-9546b3a2a3a4-x86_64-apple-darwin.tar.gz
  f81bc831e3d933b387940c8bd3cc10402e00116c713cd2ac9e7531082a354187  guix-build-9546b3a2a3a4/output/x86_64-linux-gnu/SHA256SUMS.part
  05faf45bc567742d41addafc5d8e85b5b586173f2efdd2ae501d6ebdf69379bb  guix-build-9546b3a2a3a4/output/x86_64-linux-gnu/bitcoin-9546b3a2a3a4-x86_64-linux-gnu-debug.tar.gz
  dfe1b0c22c706a918cbc8952bebba0b471c849276725dd5e0b2eee265c281386  guix-build-9546b3a2a3a4/output/x86_64-linux-gnu/bitcoin-9546b3a2a3a4-x86_64-linux-gnu.tar.gz
  64186c495eb9b6e8c6a2be89530c928e7b161e5ca7a1b56b7786dd28d310e7e8  guix-build-9546b3a2a3a4/output/x86_64-w64-mingw32/SHA256SUMS.part
  c099d0dfeb4556539b52c8bc08ef2c15c636526dccc0a73900c68fa45b052189  guix-build-9546b3a2a3a4/output/x86_64-w64-mingw32/bitcoin-9546b3a2a3a4-win64-debug.zip
  7751e50110ed1a9a46a2fdadb7d71c6e30910685a3074dea563ec64997cbb134  guix-build-9546b3a2a3a4/output/x86_64-w64-mingw32/bitcoin-9546b3a2a3a4-win64-setup-unsigned.exe
  d8ec6a7d24c9b514c342fe3ee2281482a104100230650523d3303484036507a3  guix-build-9546b3a2a3a4/output/x86_64-w64-mingw32/bitcoin-9546b3a2a3a4-win64-unsigned.tar.gz
  ee3123a60a732596347e58351c38cc5c0a8bf9b24f3cc9041f12ec11572e0659  guix-build-9546b3a2a3a4/output/x86_64-w64-mingw32/bitcoin-9546b3a2a3a4-win64.zip
  ```

  Guix Build (arm64):
  ```bash
  1306478fadf15b11636625747029de78a9121d179bc63cad77478a5a4b70e012  guix-build-9546b3a2a3a4/output/arm-linux-gnueabihf/SHA256SUMS.part
  55e82fc26fb57b4a58d63985b4b746c939c949abc670c976e270d5ec9c678623  guix-build-9546b3a2a3a4/output/arm-linux-gnueabihf/bitcoin-9546b3a2a3a4-arm-linux-gnueabihf-debug.tar.gz
  4ef06487c7df0b5ffdbcd5b8e4d32ffc8016f071fda7566f824e713581e7b043  guix-build-9546b3a2a3a4/output/arm-linux-gnueabihf/bitcoin-9546b3a2a3a4-arm-linux-gnueabihf.tar.gz
  fff63a55498bc592296fa3514bc99b39e83c4ab808ce3b04c9499b7a6adf3fd6  guix-build-9546b3a2a3a4/output/arm64-apple-darwin/SHA256SUMS.part
  965a96698bf7e49e2cc710ea567f69fbd4bedef64308f574e96c66e15c78d84d  guix-build-9546b3a2a3a4/output/arm64-apple-darwin/bitcoin-9546b3a2a3a4-arm64-apple-darwin-unsigned.dmg
  6738a0692430d4e59b45a8a9a247b6765970fb17c4047b66a332999425caafd9  guix-build-9546b3a2a3a4/output/arm64-apple-darwin/bitcoin-9546b3a2a3a4-arm64-apple-darwin-unsigned.tar.gz
  d2dc890f9d4e7f147b29e3e186504fc1af7f68b516d770d7700d4982429ad7e3  guix-build-9546b3a2a3a4/output/arm64-apple-darwin/bitcoin-9546b3a2a3a4-arm64-apple-darwin.tar.gz
  c74196e38f26f0aa8b345d81389a69c2324017c08b32fe5d97823a6bdaebd63b  guix-build-9546b3a2a3a4/output/dist-archive/bitcoin-9546b3a2a3a4.tar.gz
  fdcebf2b6518f3a538429aba53795f45a6c07e0b3a73e58242a46b0e1a1de429  guix-build-9546b3a2a3a4/output/powerpc64-linux-gnu/SHA256SUMS.part
  d4180196535c6a13f158e6f1b013bac6e1f32291d2940f830898aff55bd215ad  guix-build-9546b3a2a3a4/output/powerpc64-linux-gnu/bitcoin-9546b3a2a3a4-powerpc64-linux-gnu-debug.tar.gz
  ffbaea4130f460a93afd89618b68be5918d9fad053427390350daa1f512f628c  guix-build-9546b3a2a3a4/output/powerpc64-linux-gnu/bitcoin-9546b3a2a3a4-powerpc64-linux-gnu.tar.gz
  09071b159126c89bdbc3f19b51b89c34d9709658e77f0f5da55b41218453b652  guix-build-9546b3a2a3a4/output/powerpc64le-linux-gnu/SHA256SUMS.part
  4b75a22ac557a0fea88f8df0beaff9b19fb032587710edcca3d942847445fbc3  guix-build-9546b3a2a3a4/output/powerpc64le-linux-gnu/bitcoin-9546b3a2a3a4-powerpc64le-linux-gnu-debug.tar.gz
  1bbb30880fe9ec5151377b0ee1952316b63d3d4bfaaa383f72660591e46e1965  guix-build-9546b3a2a3a4/output/powerpc64le-linux-gnu/bitcoin-9546b3a2a3a4-powerpc64le-linux-gnu.tar.gz
  06e6140b0b23f974a1c49e551fc4f8effba8afcc3fef3adf4fc3a5cd72d55007  guix-build-9546b3a2a3a4/output/riscv64-linux-gnu/SHA256SUMS.part
  948219a7eb070e48d613bef5c96e47880414d738ecc0c334e1d46291af315cc9  guix-build-9546b3a2a3a4/output/riscv64-linux-gnu/bitcoin-9546b3a2a3a4-riscv64-linux-gnu-debug.tar.gz
  9dcdb87bf947a23eb8e108a15b7b224f03f01dfac1879be85114f67ecc1cd425  guix-build-9546b3a2a3a4/output/riscv64-linux-gnu/bitcoin-9546b3a2a3a4-riscv64-linux-gnu.tar.gz
  c02b6fcc9f1333a83571eff16c6d7789febd8f693c6945b751b0665bdc025f20  guix-build-9546b3a2a3a4/output/x86_64-apple-darwin/SHA256SUMS.part
  3a092d1c08cb85f4ac502424b3c5932ff6970a191ce43d622d36ad17f9b36243  guix-build-9546b3a2a3a4/output/x86_64-apple-darwin/bitcoin-9546b3a2a3a4-x86_64-apple-darwin-unsigned.dmg
  1a1bbefb93131d62f88d9eb51bddc2bd3e247533f8000555af20ea582fe65daa  guix-build-9546b3a2a3a4/output/x86_64-apple-darwin/bitcoin-9546b3a2a3a4-x86_64-apple-darwin-unsigned.tar.gz
  684180389af6cba525439b8c8142bbdc3391c125583743275b6876e69adbd733  guix-build-9546b3a2a3a4/output/x86_64-apple-darwin/bitcoin-9546b3a2a3a4-x86_64-apple-darwin.tar.gz
  f81bc831e3d933b387940c8bd3cc10402e00116c713cd2ac9e7531082a354187  guix-build-9546b3a2a3a4/output/x86_64-linux-gnu/SHA256SUMS.part
  05faf45bc567742d41addafc5d8e85b5b586173f2efdd2ae501d6ebdf69379bb  guix-build-9546b3a2a3a4/output/x86_64-linux-gnu/bitcoin-9546b3a2a3a4-x86_64-linux-gnu-debug.tar.gz
  dfe1b0c22c706a918cbc8952bebba0b471c849276725dd5e0b2eee265c281386  guix-build-9546b3a2a3a4/output/x86_64-linux-gnu/bitcoin-9546b3a2a3a4-x86_64-linux-gnu.tar.gz
  64186c495eb9b6e8c6a2be89530c928e7b161e5ca7a1b56b7786dd28d310e7e8  guix-build-9546b3a2a3a4/output/x86_64-w64-mingw32/SHA256SUMS.part
  c099d0dfeb4556539b52c8bc08ef2c15c636526dccc0a73900c68fa45b052189  guix-build-9546b3a2a3a4/output/x86_64-w64-mingw32/bitcoin-9546b3a2a3a4-win64-debug.zip
  7751e50110ed1a9a46a2fdadb7d71c6e30910685a3074dea563ec64997cbb134  guix-build-9546b3a2a3a4/output/x86_64-w64-mingw32/bitcoin-9546b3a2a3a4-win64-setup-unsigned.exe
  d8ec6a7d24c9b514c342fe3ee2281482a104100230650523d3303484036507a3  guix-build-9546b3a2a3a4/output/x86_64-w64-mingw32/bitcoin-9546b3a2a3a4-win64-unsigned.tar.gz
  ee3123a60a732596347e58351c38cc5c0a8bf9b24f3cc9041f12ec11572e0659  guix-build-9546b3a2a3a4/output/x86_64-w64-mingw32/bitcoin-9546b3a2a3a4-win64.zip
  ```

ACKs for top commit:
  hebasto:
    ACK 9546b3a, I have reviewed the code and it looks OK, I agree it can be merged.
  jarolrod:
    ACK 9546b3a

Tree-SHA512: e5f98fd3bdb90516d24ed6cc26da9ed4a83374888d322a4e3a26d8df4a2352711d842787b07ba94e2dbd142391bb8f39eb6f040cbb3c2f217f7980b69aaae31f
@bitcoin bitcoin locked and limited conversation to collaborators Jul 6, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.