[Buildroot] [PATCH 23/29 v2] package/boost: bump to version 1.87.0

Yann E. MORIN yann.morin.1998 at free.fr
Wed Apr 9 20:03:38 UTC 2025


Add a slew of new libraries as reported by ./bootstrap --show-libraries.
Add a comment about how to maintain the list, and that they may not all
need to be exposed in the menuconfig.

There has been a few dependency changes. Those have been identified by
removing all selects, building Boost with exactly one option enabled,
identifying those that built without issue (thus were leaf options),
then adding dependencies to failing options, and so on iteratively,
until all options would build when selected on their own, and without a
select that was not already satisfied transitively (that's a limitation,
but hey...)

Some dependencies were dropped, and that has been confirned by
inspecting the corresponding upstream component. For example, contract
no longer needs system since upstream commit eedf51b2c675 (removed
linking to boost.system [...]) and available since boost 1.72.0 (so yes,
we've had superfluous dependencies for a while now, but it is extra
diffficult to detect).

In some cases, this implies a change in what symbol has to be ignored or
not:
  - contract now selects nothing, so appears orphaned, so must be
    ignored;
  - exception is now selected by coroutine, so no longer appears
    orphaned, so must not be ignored;
  - timer now selects nothing, so appears orphaned, so must be ignored;
  - url now select system, so it no longer appears orphaned, so must not
    be ignored.

Drop the backported patch, it's been applied upstream since 1.84.0.

Signed-off-by: Yann E. MORIN <yann.morin.1998 at free.fr>
Cc: Michael Nosthoff <buildroot at heine.tech>
Cc: Yegor Yefremov <yegorslists at googlemail.com>

---
Changes v1 -> v2:
  - rewrite the comment explaining how to maintain the list of Boost
    libs
  - fix URL ref for hash
---
 .../0001-unordered-fix-copy-assign.patch      | 22 -------
 package/boost/Config.in                       | 34 +++++------
 package/boost/boost.hash                      |  4 +-
 package/boost/boost.mk                        | 61 ++++++++++++++++++-
 4 files changed, 75 insertions(+), 46 deletions(-)
 delete mode 100644 package/boost/0001-unordered-fix-copy-assign.patch

diff --git a/package/boost/0001-unordered-fix-copy-assign.patch b/package/boost/0001-unordered-fix-copy-assign.patch
deleted file mode 100644
index 670552535a..0000000000
--- a/package/boost/0001-unordered-fix-copy-assign.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-Upstream Patch for Unordered
-
-Prevent erroneous copying of groups data, update max load to properly propagate
-
-Signed-off-by: Michael Nosthoff <buildroot at heine.tech>
-Upstream: https://github.com/boostorg/unordered/commit/067884a4e213352e7c81c441f1453c54735c39f3
-diff --git a/include/boost/unordered/detail/foa/core.hpp b/include/boost/unordered/detail/foa/core.hpp
-index 239d05d3..7ae9f2c8 100644
---- a/boost/unordered/detail/foa/core.hpp
-+++ b/boost/unordered/detail/foa/core.hpp
-@@ -1870,9 +1870,10 @@ private:
- 
-   void fast_copy_elements_from(const table_core& x)
-   {
--    if(arrays.elements){
-+    if(arrays.elements&&x.arrays.elements){
-       copy_elements_array_from(x);
-       copy_groups_array_from(x);
-+      size_ctrl.ml=std::size_t(x.size_ctrl.ml);
-       size_ctrl.size=std::size_t(x.size_ctrl.size);
-     }
-   }
diff --git a/package/boost/Config.in b/package/boost/Config.in
index 784c40278b..d1d1dc2423 100644
--- a/package/boost/Config.in
+++ b/package/boost/Config.in
@@ -65,11 +65,11 @@ config BR2_PACKAGE_BOOST_CONTEXT
 comment "boost-context needs a toolchain w/ C++11, gcc>=4.8"
 	depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
 
+# check-symbol ignore
 config BR2_PACKAGE_BOOST_CONTRACT
 	bool "boost-contract"
 	# pthread_condattr_setclock
 	depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL
-	select BR2_PACKAGE_BOOST_SYSTEM
 	help
 	  Contract programming for C++.
 
@@ -82,10 +82,9 @@ config BR2_PACKAGE_BOOST_COROUTINE
 	depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-thread
 	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # boost-context
 	depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # boost-context, boost-thread
-	select BR2_PACKAGE_BOOST_CHRONO
 	select BR2_PACKAGE_BOOST_CONTEXT
+	select BR2_PACKAGE_BOOST_EXCEPTION
 	select BR2_PACKAGE_BOOST_SYSTEM
-	select BR2_PACKAGE_BOOST_THREAD
 	help
 	  deprecated coroutine library, the non-deprecated coroutine2
 	  library is a header-only library and does not need to be
@@ -105,7 +104,6 @@ config BR2_PACKAGE_BOOST_DATE_TIME
 	  A set of date-time libraries based on generic programming
 	  concepts.
 
-# check-symbol ignore
 config BR2_PACKAGE_BOOST_EXCEPTION
 	bool "boost-exception"
 	help
@@ -125,7 +123,6 @@ config BR2_PACKAGE_BOOST_FIBER
 	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
 	select BR2_PACKAGE_BOOST_CONTEXT
 	select BR2_PACKAGE_BOOST_FILESYSTEM
-	select BR2_PACKAGE_BOOST_SYSTEM
 	help
 	  C++11 userland threads library.
 
@@ -149,7 +146,6 @@ config BR2_PACKAGE_BOOST_FILESYSTEM
 
 config BR2_PACKAGE_BOOST_GRAPH
 	bool "boost-graph"
-	select BR2_PACKAGE_BOOST_REGEX
 	help
 	  The BGL graph interface and graph components are generic, in
 	  the same sense as the the Standard Template Library (STL).
@@ -165,6 +161,8 @@ config BR2_PACKAGE_BOOST_IOSTREAMS
 	bool "boost-iostreams"
 	select BR2_PACKAGE_BZIP2
 	select BR2_PACKAGE_ZLIB
+	select BR2_PACKAGE_BOOST_RANDOM
+	select BR2_PACKAGE_BOOST_REGEX
 	help
 	  Boost.IOStreams provides a framework for defining streams,
 	  stream buffers and i/o filters.
@@ -172,6 +170,7 @@ config BR2_PACKAGE_BOOST_IOSTREAMS
 config BR2_PACKAGE_BOOST_JSON
 	bool "boost-json"
 	select BR2_PACKAGE_BOOST_CONTAINER
+	select BR2_PACKAGE_BOOST_SYSTEM
 	help
 	  Boost.JSON is a portable C++ library which provides containers
 	  and algorithms that implement JavaScript Object Notation, or
@@ -193,7 +192,6 @@ config BR2_PACKAGE_BOOST_LOCALE
 	depends on !(BR2_TOOLCHAIN_HAS_GCC_BUG_64735 && BR2_PACKAGE_ICU) # boost-thread
 	depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS \
 		|| !BR2_PACKAGE_ICU # boost-thread
-	select BR2_PACKAGE_BOOST_SYSTEM
 	select BR2_PACKAGE_BOOST_THREAD if BR2_PACKAGE_ICU
 	select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE
 	help
@@ -214,11 +212,7 @@ config BR2_PACKAGE_BOOST_LOG
 	depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL
 	depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-atomic
 	depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # boost-thread
-	select BR2_PACKAGE_BOOST_ATOMIC
-	select BR2_PACKAGE_BOOST_DATE_TIME
 	select BR2_PACKAGE_BOOST_FILESYSTEM
-	select BR2_PACKAGE_BOOST_REGEX
-	select BR2_PACKAGE_BOOST_SYSTEM
 	select BR2_PACKAGE_BOOST_THREAD
 	help
 	  Logging library.
@@ -233,6 +227,8 @@ comment "boost-log needs a toolchain not affected by GCC bug 64735"
 config BR2_PACKAGE_BOOST_MATH
 	bool "boost-math"
 	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 # C++14
+	select BR2_PACKAGE_BOOST_CONTAINER
+	select BR2_PACKAGE_BOOST_RANDOM
 	help
 	  Boost.Math includes several contributions in the domain of
 	  mathematics:
@@ -282,6 +278,8 @@ config BR2_PACKAGE_BOOST_PROGRAM_OPTIONS
 config BR2_PACKAGE_BOOST_PYTHON
 	bool "boost-python"
 	depends on BR2_PACKAGE_PYTHON3
+	select BR2_PACKAGE_BOOST_CONTAINER
+	select BR2_PACKAGE_BOOST_GRAPH
 	help
 	  The Boost Python Library is a framework for interfacing Python
 	  and C++. It allows you to quickly and seamlessly expose C++
@@ -324,8 +322,6 @@ config BR2_PACKAGE_BOOST_SYSTEM
 config BR2_PACKAGE_BOOST_TEST
 	bool "boost-test"
 	depends on BR2_USE_MMU # fork()
-	select BR2_PACKAGE_BOOST_SYSTEM
-	select BR2_PACKAGE_BOOST_TIMER
 	help
 	  Support for simple program testing, full unit testing, and for
 	  program execution monitoring.
@@ -334,18 +330,16 @@ config BR2_PACKAGE_BOOST_THREAD
 	bool "boost-thread"
 	depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS
 	depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # std::current_exception
-	select BR2_PACKAGE_BOOST_CHRONO
-	select BR2_PACKAGE_BOOST_SYSTEM
+	select BR2_PACKAGE_BOOST_CHRONO  # For dependents only
 	help
 	  Portable C++ multi-threading. C++11, C++14.
 
 comment "boost-thread needs a toolchain not affected by GCC bug 64735"
 	depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735
 
+# check-symbol ignore
 config BR2_PACKAGE_BOOST_TIMER
 	bool "boost-timer"
-	select BR2_PACKAGE_BOOST_CHRONO
-	select BR2_PACKAGE_BOOST_SYSTEM
 	help
 	  Event timer, progress timer, and progress display classes.
 
@@ -361,9 +355,9 @@ config BR2_PACKAGE_BOOST_TYPE_ERASURE
 comment "boost-type_erasure needs a toolchain not affected by GCC bug 64735"
 	depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735
 
-# check-symbol ignore
 config BR2_PACKAGE_BOOST_URL
 	bool "boost-url"
+	select BR2_PACKAGE_BOOST_SYSTEM
 	help
 	  Boost.URL is a portable C++ library which provides containers
 	  and algorithms which model a "URL," more formally described
@@ -382,9 +376,9 @@ config BR2_PACKAGE_BOOST_WAVE
 	depends on !BR2_m68k_cf
 	depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-thread
 	depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # boost-thread
-	select BR2_PACKAGE_BOOST_DATE_TIME
+	select BR2_PACKAGE_BOOST_CONTAINER
 	select BR2_PACKAGE_BOOST_FILESYSTEM
-	select BR2_PACKAGE_BOOST_SYSTEM
+	select BR2_PACKAGE_BOOST_SERIALIZATION
 	select BR2_PACKAGE_BOOST_THREAD
 	help
 	  The Boost.Wave library is a Standards conformant, and highly
diff --git a/package/boost/boost.hash b/package/boost/boost.hash
index 14403758ac..2a76244a2e 100644
--- a/package/boost/boost.hash
+++ b/package/boost/boost.hash
@@ -1,5 +1,5 @@
-# From https://www.boost.org/users/history/version_1_83_0.html
-sha256  6478edfe2f3305127cffe8caf73ea0176c53769f4bf1585be237eb30798c3b8e  boost_1_83_0.tar.bz2
+# From https://www.boost.org/users/history/version_1_87_0.html
+sha256  af57be25cb4c4f4b413ed692fe378affb4352ea50fbe294a11ef548f4d527d89  boost_1_87_0.tar.bz2
 
 # Locally computed
 sha256  c9bff75738922193e67fa726fa225535870d2aa1059f91452c411736284ad566  LICENSE_1_0.txt
diff --git a/package/boost/boost.mk b/package/boost/boost.mk
index 6847ea5cfe..41a9b15ab3 100644
--- a/package/boost/boost.mk
+++ b/package/boost/boost.mk
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-BOOST_VERSION = 1.83.0
+BOOST_VERSION = 1.87.0
 BOOST_SOURCE = boost_$(subst .,_,$(BOOST_VERSION)).tar.bz2
 BOOST_SITE = https://archives.boost.io/release/$(BOOST_VERSION)/source
 BOOST_INSTALL_STAGING = YES
@@ -21,39 +21,96 @@ BOOST_CPE_ID_VENDOR = boost
 # but no longer present in the newer Boost version, or libraries missing in
 # this list but present in that nwewer version.
 BOOST_ALL_LIBS = \
+	any \
+	asio \
+	assert \
 	atomic \
+	beast \
+	bimap \
+	bind \
+	charconv \
 	chrono \
+	cobalt \
+	compat \
 	container \
+	container_hash \
 	context \
 	contract \
+	conversion \
+	core \
 	coroutine \
+	coroutine2 \
+	crc \
 	date_time \
+	describe \
+	detail \
+	dll \
+	endian \
 	exception \
 	fiber \
 	filesystem \
+	flyweight \
+	function \
+	function_types \
+	geometry \
 	graph \
 	graph_parallel \
+	hana \
 	headers \
+	heap \
+	integer \
+	interprocess \
+	intrusive \
 	iostreams \
+	iterator \
 	json \
+	lambda2 \
+	lexical_cast \
 	locale \
+	lockfree \
 	log \
 	math \
+	move \
+	mp11 \
 	mpi \
+	msm \
+	multi_index \
+	mysql \
 	nowide \
+	optional \
+	outcome \
+	parameter \
+	pfr \
+	poly_collection \
+	predef \
+	process \
 	program_options \
 	python \
 	random \
+	ratio \
+	redis \
 	regex \
+	scope \
 	serialization \
+	signals2 \
+	smart_ptr \
 	stacktrace \
+	stl_interfaces \
 	system \
 	test \
 	thread \
+	throw_exception \
 	timer \
+	tuple \
 	type_erasure \
+	type_index \
+	unordered \
 	url \
-	wave
+	uuid \
+	variant \
+	variant2 \
+	wave \
+	winapi
 
 BOOST_TARGET_CXXFLAGS = $(TARGET_CXXFLAGS)
 
-- 
2.47.0



More information about the buildroot mailing list