Skip to content

Conversation

@2001herne
Copy link
Contributor

In Boost = 1.89, the Boost::System library was made header only. While this is currently only an issue with Arch and other rolling distros, it will become a problem at some point in the future. As such, I've modified configure.ac to only try and link against Boost::System if Boost < 1.89

This issue does not seem to occur on Linux when using Cmake.

Copy link
Member

@jamescowens jamescowens left a comment

Choose a reason for hiding this comment

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

utACK

@jamescowens jamescowens merged commit 994343a into gridcoin-community:development Nov 14, 2025
18 of 36 checks passed
@jamescowens
Copy link
Member

jamescowens commented Nov 14, 2025

After I merged this, I realize it doesn't work. The second call to AX_BOOST_BASE doesn't do what the author thinks. It actually resets the minimum library version requirements to 1.89 and cause a failure with BOOST < 1.89.

copying packages: native_ccache boost openssl curl zlib libzip qrencode qt miniupnpc
to: /jco-monster-ng_data1/home/jco/builds/Gridcoin-Research-win64/depends/x86_64-w64-mingw32
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, 'build-aux'.
libtoolize: copying file 'build-aux/ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'build-aux/m4'.
libtoolize: copying file 'build-aux/m4/libtool.m4'
libtoolize: copying file 'build-aux/m4/ltoptions.m4'
libtoolize: copying file 'build-aux/m4/ltsugar.m4'
libtoolize: copying file 'build-aux/m4/ltversion.m4'
libtoolize: copying file 'build-aux/m4/ltobsolete.m4'
configure.ac:45: installing 'build-aux/compile'
configure.ac:28: installing 'build-aux/missing'
Makefile.am: installing 'build-aux/depcomp'
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, 'build-aux'.
libtoolize: copying file 'build-aux/ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'build-aux/m4'.
libtoolize: copying file 'build-aux/m4/libtool.m4'
libtoolize: copying file 'build-aux/m4/ltoptions.m4'
libtoolize: copying file 'build-aux/m4/ltsugar.m4'
libtoolize: copying file 'build-aux/m4/ltversion.m4'
libtoolize: copying file 'build-aux/m4/lt
obsolete.m4'
configure.ac:37: installing 'build-aux/compile'
configure.ac:27: installing 'build-aux/missing'
Makefile.am: installing 'build-aux/depcomp'
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, 'build-aux'.
libtoolize: copying file 'build-aux/ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'build-aux/m4'.
libtoolize: copying file 'build-aux/m4/libtool.m4'
libtoolize: copying file 'build-aux/m4/ltoptions.m4'
libtoolize: copying file 'build-aux/m4/ltsugar.m4'
libtoolize: copying file 'build-aux/m4/ltversion.m4'
libtoolize: copying file 'build-aux/m4/lt~obsolete.m4'
configure.ac:52: installing 'build-aux/compile'
configure.ac:36: installing 'build-aux/missing'
src/Makefile.am: installing 'build-aux/depcomp'
configure: loading site script /home/jco/builds/Gridcoin-Research-win64/depends/x86_64-w64-mingw32/share/config.site
checking for x86_64-w64-mingw32-pkg-config... /usr/bin/pkg-config --static
checking pkg-config is at least version 0.9.0... yes
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-w64-mingw32
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for x86_64-w64-mingw32-strip... x86_64-w64-mingw32-strip
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether to enable maintainer-specific portions of Makefiles... yes
checking whether make supports nested variables... (cached) yes
checking whether the C++ compiler works... yes
checking for C++ compiler default output file name... a.exe
checking for suffix of executables... .exe
checking whether we are cross compiling... yes
checking for suffix of object files... o
checking whether we are using the GNU C++ compiler... yes
checking whether x86_64-w64-mingw32-g++ accepts -g... yes
checking for style of include used by make... GNU
checking dependency style of x86_64-w64-mingw32-g++... gcc3
checking for x86_64-w64-mingw32-gcc... x86_64-w64-mingw32-gcc
checking whether we are using the GNU C compiler... yes
checking whether x86_64-w64-mingw32-gcc accepts -g... yes
checking for x86_64-w64-mingw32-gcc option to accept ISO C89... none needed
checking whether x86_64-w64-mingw32-gcc understands -c and -o together... yes
checking dependency style of x86_64-w64-mingw32-gcc... gcc3
checking dependency style of x86_64-w64-mingw32-gcc... gcc3
checking whether x86_64-w64-mingw32-g++ supports C++17 features with -std=c++17... yes
checking whether std::atomic can be used without link library... yes
checking for x86_64-w64-mingw32-g++... x86_64-w64-mingw32-g++ -std=c++17
checking whether we are using the GNU Objective C++ compiler... yes
checking whether x86_64-w64-mingw32-g++ -std=c++17 accepts -g... yes
checking dependency style of x86_64-w64-mingw32-g++ -std=c++17... gcc3
checking how to print strings... printf
checking for a sed that does not truncate output... /usr/bin/sed
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for fgrep... /usr/bin/grep -F
checking for ld used by x86_64-w64-mingw32-gcc... /usr/x86_64-w64-mingw32/bin/ld
checking if the linker (/usr/x86_64-w64-mingw32/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... x86_64-w64-mingw32-nm
checking the name lister (x86_64-w64-mingw32-nm) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking how to convert x86_64-pc-linux-gnu file names to x86_64-w64-mingw32 format... func_convert_file_nix_to_w32
checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/x86_64-w64-mingw32/bin/ld option to reload object files... -r
checking for x86_64-w64-mingw32-objdump... x86_64-w64-mingw32-objdump
checking how to recognize dependent libraries... (cached) pass_all
checking for x86_64-w64-mingw32-dlltool... x86_64-w64-mingw32-dlltool
checking how to associate runtime and link libraries... func_cygming_dll_for_implib
checking for x86_64-w64-mingw32-ar... x86_64-w64-mingw32-ar
checking for archiver @file support... @
checking for x86_64-w64-mingw32-strip... (cached) x86_64-w64-mingw32-strip
checking for x86_64-w64-mingw32-ranlib... x86_64-w64-mingw32-ranlib
checking command to parse x86_64-w64-mingw32-nm output from x86_64-w64-mingw32-gcc object... ok
checking for sysroot... no
checking for a working dd... /usr/bin/dd
checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1
checking for x86_64-w64-mingw32-mt... no
checking for mt... mt
configure: WARNING: using cross tools not prefixed with host triplet
checking if mt is a manifest tool... no
checking how to run the C preprocessor... x86_64-w64-mingw32-gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... no
checking for x86_64-w64-mingw32-as... x86_64-w64-mingw32-as
checking for x86_64-w64-mingw32-dlltool... (cached) x86_64-w64-mingw32-dlltool
checking for x86_64-w64-mingw32-objdump... (cached) x86_64-w64-mingw32-objdump
checking for objdir... .libs
checking if x86_64-w64-mingw32-gcc supports -fno-rtti -fno-exceptions... no
checking for x86_64-w64-mingw32-gcc option to produce PIC... -DDLL_EXPORT -DPIC
checking if x86_64-w64-mingw32-gcc PIC flag -DDLL_EXPORT -DPIC works... yes
checking if x86_64-w64-mingw32-gcc static flag -static works... yes
checking if x86_64-w64-mingw32-gcc supports -c -o file.o... yes
checking if x86_64-w64-mingw32-gcc supports -c -o file.o... (cached) yes
checking whether the x86_64-w64-mingw32-gcc linker (/usr/x86_64-w64-mingw32/bin/ld) supports shared libraries... yes
checking whether -lc should be explicitly linked in... yes
checking dynamic linker characteristics... Win32 ld.exe
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking how to run the C++ preprocessor... x86_64-w64-mingw32-g++ -std=c++17 -E
checking for ld used by x86_64-w64-mingw32-g++ -std=c++17... /usr/x86_64-w64-mingw32/bin/ld
checking if the linker (/usr/x86_64-w64-mingw32/bin/ld) is GNU ld... yes
checking whether the x86_64-w64-mingw32-g++ -std=c++17 linker (/usr/x86_64-w64-mingw32/bin/ld) supports shared libraries... yes
checking for x86_64-w64-mingw32-g++ -std=c++17 option to produce PIC... -DDLL_EXPORT -DPIC
checking if x86_64-w64-mingw32-g++ -std=c++17 PIC flag -DDLL_EXPORT -DPIC works... yes
checking if x86_64-w64-mingw32-g++ -std=c++17 static flag -static works... yes
checking if x86_64-w64-mingw32-g++ -std=c++17 supports -c -o file.o... yes
checking if x86_64-w64-mingw32-g++ -std=c++17 supports -c -o file.o... (cached) yes
checking whether the x86_64-w64-mingw32-g++ -std=c++17 linker (/usr/x86_64-w64-mingw32/bin/ld) supports shared libraries... yes
checking dynamic linker characteristics... Win32 ld.exe
checking how to hardcode library paths into programs... immediate
checking for x86_64-w64-mingw32-ar... /usr/bin/x86_64-w64-mingw32-ar
checking for x86_64-w64-mingw32-ranlib... /usr/bin/x86_64-w64-mingw32-ranlib
checking for x86_64-w64-mingw32-strip... /usr/bin/x86_64-w64-mingw32-strip
checking for x86_64-w64-mingw32-gcov... /usr/bin/x86_64-w64-mingw32-gcov
checking for lcov... /usr/bin/lcov
checking for python3.6... /usr/bin/python3.6
checking for genhtml... /usr/bin/genhtml
checking for git... /usr/bin/git
checking for ccache... /home/jco/builds/Gridcoin-Research-win64/depends/x86_64-w64-mingw32/share/../native/bin/ccache
checking for xgettext... /usr/bin/xgettext
checking for hexdump... /usr/bin/hexdump
checking for x86_64-w64-mingw32-objdump... /usr/bin/x86_64-w64-mingw32-objdump
checking for x86_64-w64-mingw32-readelf... /usr/bin/x86_64-w64-mingw32-readelf
checking for x86_64-w64-mingw32-c++filt... /usr/bin/x86_64-w64-mingw32-c++filt
checking for x86_64-w64-mingw32-objcopy... /usr/bin/x86_64-w64-mingw32-objcopy
checking for doxygen... /usr/bin/doxygen
checking whether C++ compiler accepts -Werror... yes
checking whether C++ compiler accepts -msse2... yes
checking whether C++ compiler accepts -msse4.2... yes
checking whether C++ compiler accepts -msse4.1... yes
checking whether C++ compiler accepts -mavx -mavx2... yes
checking whether C++ compiler accepts -msse4 -msha... yes
checking for SSE4.2 intrinsics... yes
checking for SSE4.1 intrinsics... yes
checking for AVX2 intrinsics... yes
checking for x86 SHA-NI intrinsics... yes
checking whether C++ compiler accepts -march=armv8-a+crc+crypto... no
checking whether C++ compiler accepts -march=armv8-a+crc+crypto... (cached) no
checking for ARMv8 CRC32 intrinsics... no
checking for ARMv8 SHA-NI intrinsics... no
checking for main in -lmingwthrd... yes
checking for main in -lkernel32... yes
checking for main in -luser32... yes
checking for main in -lgdi32... yes
checking for main in -lcomdlg32... yes
checking for main in -lwinspool... yes
checking for main in -lwinmm... yes
checking for main in -lshell32... yes
checking for main in -lcomctl32... yes
checking for main in -lole32... yes
checking for main in -loleaut32... yes
checking for main in -luuid... yes
checking for main in -lrpcrt4... yes
checking for main in -ladvapi32... yes
checking for main in -lws2_32... yes
checking for main in -lmswsock... yes
checking for main in -lshlwapi... yes
checking for main in -liphlpapi... yes
checking for main in -lcrypt32... yes
checking whether the linker accepts -static... yes
checking for makensis... /usr/bin/makensis
checking for x86_64-w64-mingw32-windres... /usr/bin/x86_64-w64-mingw32-windres
checking whether the linker accepts -Wl,--major-subsystem-version -Wl,6 -Wl,--minor-subsystem-version -Wl,1... yes
checking whether byte ordering is bigendian... no
checking whether x86_64-w64-mingw32-gcc is Clang... no
checking whether pthreads work with "-pthread" and "-lpthread"... yes
checking for joinable pthread attribute... PTHREAD_CREATE_JOINABLE
checking whether more special flags are required for pthreads... no
checking for PTHREAD_PRIO_INHERIT... yes
checking for special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... 64
checking whether strerror_r is declared... no
checking for strerror_r... no
checking whether strerror_r returns char *... no
checking whether the linker accepts -Wl,--large-address-aware... no
checking for attribute((visibility))... yes
checking for attribute((dllexport))... yes
checking for attribute((dllimport))... yes
checking for library containing clock_gettime... none required
checking whether C++ compiler accepts -fstack-reuse=none... yes
checking whether C++ compiler accepts -Wstack-protector... yes
checking whether C++ compiler accepts -fstack-protector-all... yes
checking whether C++ compiler accepts -fcf-protection=full... yes
checking whether C++ preprocessor accepts -D_FORTIFY_SOURCE=2... yes
checking whether C++ preprocessor accepts -U_FORTIFY_SOURCE... yes
checking whether the linker accepts -Wl,--dynamicbase... yes
checking whether the linker accepts -Wl,--nxcompat... yes
checking whether the linker accepts -Wl,--high-entropy-va... yes
checking whether the linker accepts -Wl,-z,relro... no
checking whether the linker accepts -Wl,-z,now... no
checking whether the linker accepts -fPIE -pie... yes
checking for main in -lssp... yes
checking endian.h usability... no
checking endian.h presence... no
checking for endian.h... no
checking sys/endian.h usability... no
checking sys/endian.h presence... no
checking for sys/endian.h... no
checking byteswap.h usability... no
checking byteswap.h presence... no
checking for byteswap.h... no
checking stdio.h usability... yes
checking stdio.h presence... yes
checking for stdio.h... yes
checking for stdlib.h... (cached) yes
checking for unistd.h... (cached) yes
checking for strings.h... (cached) yes
checking for sys/types.h... (cached) yes
checking for sys/stat.h... (cached) yes
checking sys/select.h usability... no
checking sys/select.h presence... no
checking for sys/select.h... no
checking sys/prctl.h usability... no
checking sys/prctl.h presence... no
checking for sys/prctl.h... no
checking whether strnlen is declared... yes
checking whether fork is declared... no
checking whether setsid is declared... no
checking whether pipe2 is declared... no
checking whether le16toh is declared... no
checking whether le32toh is declared... no
checking whether le64toh is declared... no
checking whether htole16 is declared... no
checking whether htole32 is declared... no
checking whether htole64 is declared... no
checking whether be16toh is declared... no
checking whether be32toh is declared... no
checking whether be64toh is declared... no
checking whether htobe16 is declared... no
checking whether htobe32 is declared... no
checking whether htobe64 is declared... no
checking whether bswap_16 is declared... no
checking whether bswap_32 is declared... no
checking whether bswap_64 is declared... no
checking for __builtin_clzl... yes
checking for __builtin_clzll... yes
checking for MSG_NOSIGNAL... no
checking for MSG_DONTWAIT... no
checking for getmemoryinfo... no
checking for mallopt M_ARENA_MAX... no
checking for visibility attribute... yes
checking for std::system... yes
checking for ::_wsystem... no
checking for thread_local support... no
checking for gmtime_r... no
checking for gmtime_s... yes
checking for Linux getrandom function... no
checking for getentropy via sys/random.h... no
checking for sysctl... no
checking for sysctl KERN_ARND... no
checking for fdatasync... no
checking for F_FULLFSYNC... no
checking for O_CLOEXEC... no
checking for __builtin_prefetch... yes
checking for _mm_prefetch... yes
checking for strong getauxval support in the system headers... no
checking for weak getauxval support in the compiler... yes
checking miniupnpc/miniwget.h usability... yes
checking miniupnpc/miniwget.h presence... yes
checking for miniupnpc/miniwget.h... yes
checking for main in -lminiupnpc... yes
checking miniupnpc/miniupnpc.h usability... yes
checking miniupnpc/miniupnpc.h presence... yes
checking for miniupnpc/miniupnpc.h... yes
checking for main in -lminiupnpc... (cached) yes
checking miniupnpc/upnpcommands.h usability... yes
checking miniupnpc/upnpcommands.h presence... yes
checking for miniupnpc/upnpcommands.h... yes
checking for main in -lminiupnpc... (cached) yes
checking miniupnpc/upnperrors.h usability... yes
checking miniupnpc/upnperrors.h presence... yes
checking for miniupnpc/upnperrors.h... yes
checking for main in -lminiupnpc... (cached) yes
checking whether miniUPnPc API version is supported... yes
checking for Qt5Core >= 5.9.5... yes
checking for Qt5Gui >= 5.9.5... yes
checking for Qt5Widgets >= 5.9.5... yes
checking for Qt5Network >= 5.9.5... yes
checking for Qt5Concurrent >= 5.9.5... yes
checking for Qt5Test >= 5.9.5... yes
checking for Qt5DBus >= 5.9.5... no
checking for static Qt... yes
checking for Qt5AccessibilitySupport... yes
checking for Qt5DeviceDiscoverySupport... yes
checking for Qt5EdidSupport... yes
checking for Qt5EventDispatcherSupport... yes
checking for Qt5FbSupport... yes
checking for Qt5FontDatabaseSupport... yes
checking for Qt5ThemeSupport... yes
checking for Qt5Concurrent... yes
checking for Qt5Svg... yes
checking for Qt5WindowsUIAutomationSupport... yes
checking for QMinimalIntegrationPlugin (-lqminimal)... yes
checking whether the linker accepts -lwtsapi32... yes
checking for QWindowsIntegrationPlugin (-lqwindows)... yes
checking for QSvgPlugin (-lqsvg)... yes
checking for QSvgIconPlugin (-lqsvgicon)... yes
checking whether -fPIE can be used with this Qt config... yes
checking for moc-qt5... no
checking for moc5... no
checking for moc... /home/jco/builds/Gridcoin-Research-win64/depends/x86_64-w64-mingw32/share/../native/bin/moc
checking for uic-qt5... no
checking for uic5... no
checking for uic... /home/jco/builds/Gridcoin-Research-win64/depends/x86_64-w64-mingw32/share/../native/bin/uic
checking for rcc-qt5... no
checking for rcc5... no
checking for rcc... /home/jco/builds/Gridcoin-Research-win64/depends/x86_64-w64-mingw32/share/../native/bin/rcc
checking for lrelease-qt5... no
checking for lrelease5... no
checking for lrelease... /home/jco/builds/Gridcoin-Research-win64/depends/x86_64-w64-mingw32/share/../native/bin/lrelease
checking for lupdate-qt5... no
checking for lupdate5... no
checking for lupdate... /home/jco/builds/Gridcoin-Research-win64/depends/x86_64-w64-mingw32/share/../native/bin/lupdate
checking for lconvert-qt5... no
checking for lconvert5... no
checking for lconvert... /home/jco/builds/Gridcoin-Research-win64/depends/x86_64-w64-mingw32/share/../native/bin/lconvert
checking whether the linker accepts -mwindows... yes
checking whether to build Gridcoin GUI... yes (Qt5)
checking for boostlib >= 1.60.0 (106000) includes in "/home/jco/builds/Gridcoin-Research-win64/depends/x86_64-w64-mingw32/share/../include"... yes
checking for boostlib >= 1.60.0 (106000) lib path in "/home/jco/builds/Gridcoin-Research-win64/depends/x86_64-w64-mingw32/share/../lib/x86_64-mingw32"... no
checking for boostlib >= 1.60.0 (106000) lib path in "/home/jco/builds/Gridcoin-Research-win64/depends/x86_64-w64-mingw32/share/../lib64"... no
checking for boostlib >= 1.60.0 (106000) lib path in "/home/jco/builds/Gridcoin-Research-win64/depends/x86_64-w64-mingw32/share/../libx32"... no
checking for boostlib >= 1.60.0 (106000) lib path in "/home/jco/builds/Gridcoin-Research-win64/depends/x86_64-w64-mingw32/share/../lib"... yes
checking for boostlib >= 1.60.0 (106000)... yes
checking for boostlib >= 1.89.0 (108900) includes in "/home/jco/builds/Gridcoin-Research-win64/depends/x86_64-w64-mingw32/share/../include"... yes
checking for boostlib >= 1.89.0 (108900) lib path in "/home/jco/builds/Gridcoin-Research-win64/depends/x86_64-w64-mingw32/share/../lib/x86_64-mingw32"... no
checking for boostlib >= 1.89.0 (108900) lib path in "/home/jco/builds/Gridcoin-Research-win64/depends/x86_64-w64-mingw32/share/../lib64"... no
checking for boostlib >= 1.89.0 (108900) lib path in "/home/jco/builds/Gridcoin-Research-win64/depends/x86_64-w64-mingw32/share/../libx32"... no
checking for boostlib >= 1.89.0 (108900) lib path in "/home/jco/builds/Gridcoin-Research-win64/depends/x86_64-w64-mingw32/share/../lib"... yes
checking for boostlib >= 1.89.0 (108900)... configure: We could not detect the boost libraries (version MINIMUM_BOOST_SYSTEM_HEADER or higher). If you have a staged boost library (still not installed) please specify $BOOST_ROOT in your environment and do not give a PATH to --with-boost option. If you are sure you have boost installed, then check your version number looking in <boost/version.hpp>. See http://randspringer.de/boost for more documentation.
checking whether the Boost::System library is available... yes
configure: error: Could not find a version of the Boost::System library!

@2001herne
Copy link
Contributor Author

That's odd, I could have sworn it worked on my end... I'll take another look, my bad

@2001herne
Copy link
Contributor Author

I can confirm, that running locally this configures correctly, with both Boost 1.69 and 1.89. The only thing I can think of is that Ubuntu Jammy includes autoconf 2.71 and m4 1.4.18, while I'm running 2.72 and 1.4.20 respectively. Something might have changed there.

@jamescowens
Copy link
Member

I fixed it. Slightly different than your original approach. I also added a fallback data source from my AWS S3 source bucket, since we are still dependent on some things that Bitcoin no longer provides backup sources for (such as Qt 5.15, which we need to move off of).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants