Skip to content

Commit 63fc2f5

Browse files
committed
Merge bitcoin/bitcoin#24065: build: explicitly disable support for external signing on Windows
e2ab9f8 build: disable external signer on Windows (fanquake) Pull request description: This change explicitly disables support for external signing when targeting Windows and OpenBSD. The driver for this is that Boost Process uses boost::filesystem internally, when targeting Windows, which gets in the way of removing our usage of it (#20744). While we could adjust #20744 to still link against the Boost libs when building for Windows, that would be disappointing, as we wouldn't have cleanly removed the Boost usage we're trying too (including the build infrastructure), and, we'd be in a position where we would be building releases differently depending on the platform, which is something I want to avoid. After discussion with Sjors, Achow and Hebasto, this seemed like a reasonable step to move #20744 forward (as-is). Note that support for external signing ([while already being experimental](https://github.com/bitcoin/bitcoin/blob/master/doc/external-signer.md#example-usage)), could be considered even more experimental on Windows. Also, oddly, we have external-signing [explicitly disabled in our Windows (cross-compile) CI](https://github.com/bitcoin/bitcoin/blob/807169e10b4a18324356ed6ee4d69587b96a7c70/ci/test/00_setup_env_win64.sh#L16), it's not clear why this is the case, as, if it's a feature being built into releases, it should be being built and tested in the CI which is most-like the release process. There is an [issue open upstream](boostorg/process#207), in regards to migrating Boost Process to std::filesystem, or having an option to use it. However there hasn't been much discussion since it was opened ~9 months ago. There is another related issue here: klemens-morgenstern/boost-process#164. Resolves #24036. ACKs for top commit: Sjors: utACK e2ab9f8 achow101: ACK e2ab9f8 kallewoof: utACK e2ab9f8 hebasto: ACK e2ab9f8, tested on Linux Mint 20.2 (x86_64). Tree-SHA512: 36fcfc0e1a008a8271dc76b8e12e93d3e1d1e528bf668e95a559e9f6fd7d5f031bd7a6a6bc8b9fa9d057b2cd56f9ec8838c7f74e87899bf9a6aeb787afbd112c
2 parents a541e5d + e2ab9f8 commit 63fc2f5

File tree

3 files changed

+17
-8
lines changed

3 files changed

+17
-8
lines changed

ci/test/00_setup_env_win64.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,4 @@ export DPKG_ADD_ARCH="i386"
1313
export PACKAGES="python3 nsis g++-mingw-w64-x86-64 wine-binfmt wine64 wine32 file"
1414
export RUN_FUNCTIONAL_TESTS=false
1515
export GOAL="deploy"
16-
export BITCOIN_CONFIG="--enable-reduce-exports --disable-gui-tests --disable-external-signer"
16+
export BITCOIN_CONFIG="--enable-reduce-exports --disable-gui-tests"

configure.ac

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -321,7 +321,7 @@ AC_ARG_ENABLE([werror],
321321
AC_ARG_ENABLE([external-signer],
322322
[AS_HELP_STRING([--enable-external-signer],[compile external signer support (default is yes, requires Boost::Process)])],
323323
[use_external_signer=$enableval],
324-
[use_external_signer=yes])
324+
[use_external_signer=auto])
325325

326326
AC_ARG_ENABLE([lto],
327327
[AS_HELP_STRING([--enable-lto],[build using LTO (default is no)])],
@@ -1415,7 +1415,21 @@ if test "$use_boost" = "yes"; then
14151415
fi
14161416

14171417
if test "$use_external_signer" != "no"; then
1418-
AC_DEFINE([ENABLE_EXTERNAL_SIGNER], [], [Define if external signer support is enabled])
1418+
case $host in
1419+
*mingw*)
1420+
dnl Boost Process uses Boost Filesystem when targeting Windows. Also,
1421+
dnl since Boost 1.71.0, Process does not work with mingw-w64 without
1422+
dnl workarounds. See 67669ab425b52a2b6be3d2f3b3b7e3939b676a2c.
1423+
if test "$use_external_signer" = "yes"; then
1424+
AC_MSG_ERROR([External signing is not supported on Windows])
1425+
fi
1426+
use_external_signer="no";
1427+
;;
1428+
*)
1429+
use_external_signer="yes"
1430+
AC_DEFINE([ENABLE_EXTERNAL_SIGNER], [1], [Define if external signer support is enabled])
1431+
;;
1432+
esac
14191433
fi
14201434
AM_CONDITIONAL([ENABLE_EXTERNAL_SIGNER], [test "$use_external_signer" = "yes"])
14211435

src/util/system.cpp

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,6 @@
66
#include <util/system.h>
77

88
#ifdef ENABLE_EXTERNAL_SIGNER
9-
#if defined(WIN32) && !defined(__kernel_entry)
10-
// A workaround for boost 1.71 incompatibility with mingw-w64 compiler.
11-
// For details see https://github.com/bitcoin/bitcoin/pull/22348.
12-
#define __kernel_entry
13-
#endif
149
#include <boost/process.hpp>
1510
#endif // ENABLE_EXTERNAL_SIGNER
1611

0 commit comments

Comments
 (0)