From 16bce9ac4cd02b2c8308f370bf39d70f9421e69b Mon Sep 17 00:00:00 2001 From: Sjors Provoost Date: Thu, 17 Apr 2025 14:40:29 +0200 Subject: [PATCH] build: depends makes libmultiprocess by default This causes IPC binaries (bitcoin-node, bitcoin-gui) to be included in releases. The effect on CI is that this causes more depends builds to build IPC binaries, but still the only build running functional tests with them is the i686_multiprocess one. Except for Windows. --- ci/test/00_setup_env_i686_multiprocess.sh | 2 +- cmake/module/Maintenance.cmake | 2 +- depends/Makefile | 11 ++++++----- depends/README.md | 2 +- depends/packages/packages.mk | 2 +- depends/toolchain.cmake.in | 7 ++++--- doc/multiprocess.md | 6 +++--- 7 files changed, 17 insertions(+), 15 deletions(-) diff --git a/ci/test/00_setup_env_i686_multiprocess.sh b/ci/test/00_setup_env_i686_multiprocess.sh index e19a45d169c..c3caefc560f 100755 --- a/ci/test/00_setup_env_i686_multiprocess.sh +++ b/ci/test/00_setup_env_i686_multiprocess.sh @@ -11,7 +11,7 @@ export CONTAINER_NAME=ci_i686_multiprocess export CI_IMAGE_NAME_TAG="mirror.gcr.io/ubuntu:24.04" export CI_IMAGE_PLATFORM="linux/amd64" export PACKAGES="llvm clang g++-multilib" -export DEP_OPTS="DEBUG=1 MULTIPROCESS=1" +export DEP_OPTS="DEBUG=1" export GOAL="install" export TEST_RUNNER_EXTRA="--v2transport --usecli" export BITCOIN_CONFIG="\ diff --git a/cmake/module/Maintenance.cmake b/cmake/module/Maintenance.cmake index 52fc7faba9f..5f4b1d8aa8e 100644 --- a/cmake/module/Maintenance.cmake +++ b/cmake/module/Maintenance.cmake @@ -23,7 +23,7 @@ function(add_maintenance_targets) return() endif() - foreach(target IN ITEMS bitcoin bitcoind bitcoin-qt bitcoin-cli bitcoin-tx bitcoin-util bitcoin-wallet test_bitcoin bench_bitcoin) + foreach(target IN ITEMS bitcoin bitcoind bitcoin-node bitcoin-qt bitcoin-gui bitcoin-cli bitcoin-tx bitcoin-util bitcoin-wallet test_bitcoin bench_bitcoin) if(TARGET ${target}) list(APPEND executables $) endif() diff --git a/depends/Makefile b/depends/Makefile index 9767b8eb297..ed54eac40a9 100644 --- a/depends/Makefile +++ b/depends/Makefile @@ -39,7 +39,8 @@ NO_QR ?= NO_WALLET ?= NO_ZMQ ?= NO_USDT ?= -MULTIPROCESS ?= +# Default NO_IPC value is 1 on Windows +NO_IPC ?= $(if $(findstring mingw32,$(HOST)),1,) LTO ?= FALLBACK_DOWNLOAD_PATH ?= https://bitcoincore.org/depends-sources @@ -161,7 +162,7 @@ qt_native_packages_$(NO_QT) = $(qt_native_packages) wallet_packages_$(NO_WALLET) = $(sqlite_packages) zmq_packages_$(NO_ZMQ) = $(zmq_packages) -multiprocess_packages_$(MULTIPROCESS) = $(multiprocess_packages) +ipc_packages_$(NO_IPC) = $(ipc_packages) usdt_packages_$(NO_USDT) = $(usdt_$(host_os)_packages) packages += $($(host_arch)_$(host_os)_packages) $($(host_os)_packages) $(boost_packages_) $(libevent_packages_) $(qt_packages_) $(wallet_packages_) $(usdt_packages_) @@ -171,8 +172,8 @@ ifneq ($(zmq_packages_),) packages += $(zmq_packages) endif -ifeq ($(multiprocess_packages_),) -packages += $(multiprocess_packages) +ifneq ($(ipc_packages_),) +packages += $(ipc_packages) native_packages += $(multiprocess_native_packages) endif @@ -231,7 +232,7 @@ $(host_prefix)/toolchain.cmake : toolchain.cmake.in $(host_prefix)/.stamp_$(fina -e 's|@zmq_packages@|$(zmq_packages_)|' \ -e 's|@wallet_packages@|$(wallet_packages_)|' \ -e 's|@usdt_packages@|$(usdt_packages_)|' \ - -e 's|@multiprocess@|$(MULTIPROCESS)|' \ + -e 's|@ipc_packages@|$(ipc_packages_)|' \ $< > $@ touch $@ diff --git a/depends/README.md b/depends/README.md index db3098921e0..94579109bab 100644 --- a/depends/README.md +++ b/depends/README.md @@ -96,7 +96,7 @@ The following can be set when running make: `make FOO=bar` - `NO_ZMQ`: Don't download/build/cache packages needed for enabling ZeroMQ - `NO_WALLET`: Don't download/build/cache libs needed to enable the wallet (SQLite) - `NO_USDT`: Don't download/build/cache packages needed for enabling USDT tracepoints -- `MULTIPROCESS`: Build libmultiprocess (experimental) +- `NO_IPC`: Don't build Cap’n Proto and libmultiprocess packages. Default on Windows. - `DEBUG`: Disable some optimizations and enable more runtime checking - `HOST_ID_SALT`: Optional salt to use when generating host package ids - `BUILD_ID_SALT`: Optional salt to use when generating build package ids diff --git a/depends/packages/packages.mk b/depends/packages/packages.mk index b6f100f28cd..4fee4e18a39 100644 --- a/depends/packages/packages.mk +++ b/depends/packages/packages.mk @@ -20,7 +20,7 @@ sqlite_packages=sqlite zmq_packages=zeromq -multiprocess_packages = capnp +ipc_packages = capnp multiprocess_native_packages = native_libmultiprocess native_capnp usdt_linux_packages=systemtap diff --git a/depends/toolchain.cmake.in b/depends/toolchain.cmake.in index 34984b85b1d..e31d9eefeef 100644 --- a/depends/toolchain.cmake.in +++ b/depends/toolchain.cmake.in @@ -165,11 +165,12 @@ else() set(WITH_USDT ON CACHE BOOL "") endif() -if("@multiprocess@" STREQUAL "1") +set(ipc_packages @ipc_packages@) +if("${ipc_packages}" STREQUAL "") + set(ENABLE_IPC OFF CACHE BOOL "") +else() set(ENABLE_IPC ON CACHE BOOL "") set(MPGEN_EXECUTABLE "${CMAKE_CURRENT_LIST_DIR}/native/bin/mpgen" CACHE FILEPATH "") set(CAPNP_EXECUTABLE "${CMAKE_CURRENT_LIST_DIR}/native/bin/capnp" CACHE FILEPATH "") set(CAPNPC_CXX_EXECUTABLE "${CMAKE_CURRENT_LIST_DIR}/native/bin/capnpc-c++" CACHE FILEPATH "") -else() - set(ENABLE_IPC OFF CACHE BOOL "") endif() diff --git a/doc/multiprocess.md b/doc/multiprocess.md index 5a91b513de5..853f077fcd0 100644 --- a/doc/multiprocess.md +++ b/doc/multiprocess.md @@ -16,11 +16,11 @@ Specifying `-DENABLE_IPC=ON` requires [Cap'n Proto](https://capnproto.org/) to b ### Depends installation -Alternately the [depends system](../depends) can be used to avoid need to install local dependencies. A simple way to get started is to pass the `MULTIPROCESS=1` [dependency option](../depends#dependency-options) to make: +Alternatively the [depends system](../depends) can be used to avoid needing to install local dependencies: ``` cd -make -C depends NO_QT=1 MULTIPROCESS=1 +make -C depends NO_QT=1 # Set host platform to output of gcc -dumpmachine or clang -dumpmachine or check the depends/ directory for the generated subdirectory name HOST_PLATFORM="x86_64-pc-linux-gnu" cmake -B build --toolchain=depends/$HOST_PLATFORM/toolchain.cmake @@ -29,7 +29,7 @@ build/bin/bitcoin -m node -regtest -printtoconsole -debug=ipc BITCOIN_CMD="bitcoin -m" build/test/functional/test_runner.py ``` -The `cmake` build will pick up settings and library locations from the depends directory, so there is no need to pass `-DENABLE_IPC=ON` as a separate flag when using the depends system (it's controlled by the `MULTIPROCESS=1` option). +The `cmake` build will pick up settings and library locations from the depends directory, so there is no need to pass `-DENABLE_IPC=ON` as a separate flag when using the depends system (it's controlled by the `NO_IPC=1` option). ### Cross-compiling