ElementsProject / ElementsProject/elements

"checking whether Boost.Process can be used" fails with Boost 1.88.0

Open
#1,496 3 comments 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
1.2k
Forks
416
Avg merge
1d 23h
Merged PRs (30d)
15

Description

```
checking for boostlib >= 1.64.0 (106400)... yes
checking whether Boost.Process can be used... no
configure: error: External signing is not supported for this Boost version
```

`config.log` contains:
```
configure:35973: checking whether Boost.Process can be used
configure:35992: x86_64-pc-linux-gnu-g++-16 -std=c++17 -o conftest -pipe -march=native -Os -fno-extended-identifiers -Wno-error=narrowing -DHAVE_BUILD_INFO -DPROVIDE_FUZZ_MAIN_FUNCTION -I/usr/include -Wl,-O2 -Wl,--as-needed -Wl,--sort-common -Wl,-z,pack-relative-relocs -pthread conftest.cpp >&5
/usr/lib/gcc/x86_64-pc-linux-gnu/16/../../../../x86_64-pc-linux-gnu/bin/ld: /var/tmp/portage/net-p2p/elements-23.3.1_rc2/temp/cc704VyW.o: in function `_GLOBAL__sub_I_main':
conftest.cpp:(.text.startup+0x5): undefined reference to `boost::process::v2::error::get_utf8_category()'
/usr/lib/gcc/x86_64-pc-linux-gnu/16/../../../../x86_64-pc-linux-gnu/bin/ld: conftest.cpp:(.text.startup+0xa): undefined reference to `boost::process::v2::error::get_exit_code_category()'
/usr/lib/gcc/x86_64-pc-linux-gnu/16/../../../../x86_64-pc-linux-gnu/bin/ld: conftest.cpp:(.text.startup+0xf): undefined reference to `boost::process::v2::get_shell_category()'
collect2: error: ld returned 1 exit status
configure:35992: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME "Elements Core"
| #define PACKAGE_TARNAME "elements"
| #define PACKAGE_VERSION "23.3.1rc2"
| #define PACKAGE_STRING "Elements Core 23.3.1rc2"
| #define PACKAGE_BUGREPORT "https://github.com/ElementsProject/elements/issues"
| #define PACKAGE_URL "https://elementsproject.org/"
| #define HAVE_CXX17 1
| #define HAVE_STDIO_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_UNISTD_H 1
| #define STDC_HEADERS 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define USE_ASM 1
| #define HAVE_CLMUL 1
| #define ENABLE_SSE41 1
| #define ENABLE_AVX2 1
| #define ENABLE_X86_SHANI 1
| #define HAVE_PTHREAD_PRIO_INHERIT 1
| #define HAVE_PTHREAD 1
| #define HAVE_DECL_STRERROR_R 1
| #define HAVE_STRERROR_R 1
| #define STRERROR_R_CHAR_P 1
| #define HAVE_ENDIAN_H 1
| #define HAVE_BYTESWAP_H 1
| #define HAVE_STDIO_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_SYS_SELECT_H 1
| #define HAVE_SYS_PRCTL_H 1
| #define HAVE_DECL_GETIFADDRS 1
| #define HAVE_DECL_FREEIFADDRS 1
| #define HAVE_DECL_STRNLEN 1
| #define HAVE_DECL_FORK 1
| #define HAVE_DECL_SETSID 1
| #define HAVE_DECL_PIPE2 1
| #define HAVE_DECL_LE16TOH 1
| #define HAVE_DECL_LE32TOH 1
| #define HAVE_DECL_LE64TOH 1
| #define HAVE_DECL_HTOLE16 1
| #define HAVE_DECL_HTOLE32 1
| #define HAVE_DECL_HTOLE64 1
| #define HAVE_DECL_BE16TOH 1
| #define HAVE_DECL_BE32TOH 1
| #define HAVE_DECL_BE64TOH 1
| #define HAVE_DECL_HTOBE16 1
| #define HAVE_DECL_HTOBE32 1
| #define HAVE_DECL_HTOBE64 1
| #define HAVE_DECL_BSWAP_16 1
| #define HAVE_DECL_BSWAP_32 1
| #define HAVE_DECL_BSWAP_64 1
| #define HAVE_MALLOC_INFO 1
| #define HAVE_MALLOPT_ARENA_MAX 1
| #define HAVE_POSIX_FALLOCATE 1
| #define HAVE_DEFAULT_VISIBILITY_ATTRIBUTE 1
| #define HAVE_THREAD_LOCAL 1
| #define HAVE_GMTIME_R 1
| #define HAVE_SYS_GETRANDOM 1
| #define HAVE_GETENTROPY_RAND 1
| #define HAVE_FDATASYNC 1
| #define HAVE_O_CLOEXEC 1
| #define HAVE_STRONG_GETAUXVAL 1
| #define HAVE_SYSTEM 1
| #define HAVE_SECP256K1_ECDH 1
| #define HAVE_SECP256K1_XONLY_PUBKEY_PARSE 1
| #define HAVE_SECP256K1_GENERATOR_PARSE 1
| #define HAVE_SECP256K1_RANGEPROOF_VERIFY 1
| #define HAVE_SECP256K1_ECDSA_RECOVER 1
| #define HAVE_SECP256K1_SCHNORRSIG_VERIFY 1
| #define HAVE_SECP256K1_SURJECTIONPROOF_INITIALIZE 1
| #define HAVE_SECP256K1_WHITELIST_VERIFY 1
| #define USE_SQLITE 1
| #define HAVE_BOOST /**/
| /* end confdefs.h. */
| #include
| int
| main (void)
| {
|
| ;
| return 0;
| }
configure:36004: result: no
configure:36013: error: External signing is not supported for this Boost version
```

**Expected behavior**

Boost 1.88.0 should be accepted as a usable version of Boost when enabling external-signer.

**Actual behavior**

Configure rejects Boost 1.88.0 due to a missing link library.

**To reproduce**

Upgrade to Boost 1.88.0. Try to configure Elements with `--enable-external-signer`.

**System information**

Elements 23.3.1rc2

Linux 6.12.41-gentoo x86_64

Note that there is an `AX_BOOST_PROCESS` macro that theoretically could be used here, but it also fails to detect Boost::Process, as it appears to be attempting to use a class declared in the deprecated Process v1 headers without actually including those headers.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.