Skip to contentSkip to conversation

package/boost: bump version to 1.77.0

PATCH Superseded Michael Nosthoff via buildroot 2 participants 3 messages Aug 17, 2021 – Aug 18, 2021 RISC-V

v1 of 4 Superseded Latest is v4 →

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 package/boost: bump version to 1.77.0

* drop 0001-fenv.patch, issue [0] was marked fixed since boost 1.64 (commit [1])
* drop upstreamed patch 0002
* filesystem now depends on boost-atomic
* math broke the build without atomic ints, disable for now. reported at [2].

[0] https://svn.boost.org/trac/boost/ticket/11756
[1] https://github.com/boostorg/test/commit/cb2a1c2488dc77b9baf1b05781208a9639dfcd69
[2] https://github.com/boostorg/math/issues/673

---

compile-tested with these defconfigs:

BR2_arm=y
BR2_cortex_a15=y
BR2_ARM_FPU_NEON=y
BR2_TOOLCHAIN_EXTERNAL=y BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_ARMV7_EABIHF_UCLIBC_BLEEDING_EDGE=y BR2_PACKAGE_BOOST=y
BR2_PACKAGE_BOOST_CONTRACT=y BR2_PACKAGE_BOOST_COROUTINE=y BR2_PACKAGE_BOOST_EXCEPTION=y
BR2_PACKAGE_BOOST_FIBER=y
BR2_PACKAGE_BOOST_GRAPH=y BR2_PACKAGE_BOOST_GRAPH_PARALLEL=y BR2_PACKAGE_BOOST_IOSTREAMS=y
BR2_PACKAGE_BOOST_JSON=y
BR2_PACKAGE_BOOST_LOCALE=y
BR2_PACKAGE_BOOST_LOG=y
BR2_PACKAGE_BOOST_MATH=y
BR2_PACKAGE_BOOST_MPI=y
BR2_PACKAGE_BOOST_NOWIDE=y BR2_PACKAGE_BOOST_PROGRAM_OPTIONS=y BR2_PACKAGE_BOOST_RANDOM=y BR2_PACKAGE_BOOST_SERIALIZATION=y BR2_PACKAGE_BOOST_STACKTRACE=y
BR2_PACKAGE_BOOST_TEST=y BR2_PACKAGE_BOOST_TYPE_ERASURE=y BR2_PACKAGE_BOOST_WAVE=y

BR2_nios2=y
BR2_TOOLCHAIN_EXTERNAL=y
BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
BR2_PACKAGE_BOOST=y
BR2_PACKAGE_BOOST_CONTRACT=y
BR2_PACKAGE_BOOST_DATE_TIME=y
BR2_PACKAGE_BOOST_EXCEPTION=y
BR2_PACKAGE_BOOST_GRAPH=y
BR2_PACKAGE_BOOST_GRAPH_PARALLEL=y
BR2_PACKAGE_BOOST_IOSTREAMS=y
BR2_PACKAGE_BOOST_JSON=y
BR2_PACKAGE_BOOST_LOCALE=y
BR2_PACKAGE_BOOST_MPI=y
BR2_PACKAGE_BOOST_NOWIDE=y
BR2_PACKAGE_BOOST_PROGRAM_OPTIONS=y
BR2_PACKAGE_BOOST_RANDOM=y
BR2_PACKAGE_BOOST_SERIALIZATION=y
BR2_PACKAGE_BOOST_STACKTRACE=y
BR2_PACKAGE_BOOST_TEST=y

BR2_sh=y
BR2_TOOLCHAIN_EXTERNAL=y BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_SH_SH4_UCLIBC_STABLE=y BR2_PACKAGE_BOOST=y BR2_PACKAGE_BOOST_CONTRACT=y BR2_PACKAGE_BOOST_EXCEPTION=y BR2_PACKAGE_BOOST_GRAPH=y BR2_PACKAGE_BOOST_GRAPH_PARALLEL=y BR2_PACKAGE_BOOST_IOSTREAMS=y BR2_PACKAGE_BOOST_JSON=y BR2_PACKAGE_BOOST_LOCALE=y BR2_PACKAGE_BOOST_LOG=y BR2_PACKAGE_BOOST_MATH=y BR2_PACKAGE_BOOST_MPI=y BR2_PACKAGE_BOOST_NOWIDE=y BR2_PACKAGE_BOOST_PROGRAM_OPTIONS=y BR2_PACKAGE_BOOST_RANDOM=y BR2_PACKAGE_BOOST_SERIALIZATION=y BR2_PACKAGE_BOOST_STACKTRACE=y BR2_PACKAGE_BOOST_TEST=y BR2_PACKAGE_BOOST_TYPE_ERASURE=y BR2_PACKAGE_BOOST_WAVE=y

BR2_microblazeel=y
BR2_TOOLCHAIN_EXTERNAL=y
BR2_PACKAGE_BOOST=y
BR2_PACKAGE_BOOST_CONTRACT=y
BR2_PACKAGE_BOOST_EXCEPTION=y
BR2_PACKAGE_BOOST_GRAPH=y
BR2_PACKAGE_BOOST_GRAPH_PARALLEL=y
BR2_PACKAGE_BOOST_IOSTREAMS=y
BR2_PACKAGE_BOOST_JSON=y
BR2_PACKAGE_BOOST_LOCALE=y
BR2_PACKAGE_BOOST_LOG=y
BR2_PACKAGE_BOOST_MATH=y
BR2_PACKAGE_BOOST_MPI=y
BR2_PACKAGE_BOOST_NOWIDE=y
BR2_PACKAGE_BOOST_PROGRAM_OPTIONS=y
BR2_PACKAGE_BOOST_RANDOM=y
BR2_PACKAGE_BOOST_SERIALIZATION=y
BR2_PACKAGE_BOOST_STACKTRACE=y
BR2_PACKAGE_BOOST_TEST=y
BR2_PACKAGE_BOOST_TYPE_ERASURE=y
BR2_PACKAGE_BOOST_WAVE=y

BR2_arm=y
BR2_cortex_a15=y
BR2_ARM_FPU_NEON=y
BR2_TOOLCHAIN_EXTERNAL=y
BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
BR2_PACKAGE_BOOST=y
BR2_PACKAGE_BOOST_FILESYSTEM=y

---
 package/boost/0001-fenv.patch                 | 37 ----------------
 ...2-src-event-cpp-fix-build-on-riscv32.patch | 42 -------------------
 package/boost/Config.in                       |  3 ++
 package/boost/boost.hash                      |  4 +-
 package/boost/boost.mk                        |  2 +-
 5 files changed, 6 insertions(+), 82 deletions(-)
 delete mode 100644 package/boost/0001-fenv.patch
 delete mode 100644 package/boost/0002-src-event-cpp-fix-build-on-riscv32.patch
package/boost/0001-fenv.patch deleted +0 -37
deleted file mode 100644
index 9dc7848c93..0000000000
@@ -1,37 +0,0 @@
-Disable fenv.h in certain configurations
-
-The boost build system does not properly test whether fenv.h is
-available, and if it is, if it supports all the features used by
-Boost. This causes build failures with uClibc (reported upstream at
-https://svn.boost.org/trac/boost/ticket/11756) but also with glibc on
-specific architectures that don't have a full fenv implementation,
-such as NIOSII or Microblaze.
-
-To address this, we forcefully disable the use of fenv support in the
-affected configurations.
-
-Signed-off-by: Bernd Kuhls <[email protected]>
-[Thomas: add Microblaze/NIOSII exclusions.]
-Signed-off-by: Thomas Petazzoni <[email protected]>
-
-Index: b/boost/config/platform/linux.hpp
-===================================================================
---- a/boost/config/platform/linux.hpp
-+++ b/boost/config/platform/linux.hpp
-@@ -48,6 +48,16 @@
- #endif
- 
- //
-+// uClibc has no support for fenv.h, and also a few architectures
-+// don't have fenv.h support at all (or incomplete support) even with
-+// glibc.
-+
-+//
-+#if defined(__UCLIBC__) || defined(__nios2__) || defined(__microblaze__)
-+#  define BOOST_NO_FENV_H
-+#endif
-+
-+//
- // If glibc is past version 2 then we definitely have
- // gettimeofday, earlier versions may or may not have it:
- //
package/boost/0002-src-event-cpp-fix-build-on-riscv32.patch deleted +0 -42

42 lines not on this page · raw message

package/boost/Config.in +3 -0
index 9248c574f4..d9ce841a92 100644
@@ -163,6 +163,8 @@ comment "boost-fiber needs a toolchain not affected by GCC bug 64735"
 
 config BR2_PACKAGE_BOOST_FILESYSTEM
 	bool "boost-filesystem"
+	depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-atomic
+	select BR2_PACKAGE_BOOST_ATOMIC
 	select BR2_PACKAGE_BOOST_SYSTEM
 	help
 	  The Boost Filesystem Library provides portable facilities to
@@ -252,6 +254,7 @@ comment "boost-log needs a toolchain not affected by GCC bug 64735"
 
 config BR2_PACKAGE_BOOST_MATH
 	bool "boost-math"
+	depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS
 	help
 	  Boost.Math includes several contributions in the domain of
 	  mathematics:
package/boost/boost.hash +2 -2
index e6d44a76b6..96419506cd 100644
@@ -1,5 +1,5 @@
-# From https://www.boost.org/users/history/version_1_74_0.html
-sha256  953db31e016db7bb207f11432bef7df100516eeb746843fa0486a222e3fd49cb  boost_1_75_0.tar.bz2
+# From https://www.boost.org/users/history/version_1_77_0.html
+sha256  fc9f85fc030e233142908241af7a846e60630aa7388de9a5fafb1f3a26840854  boost_1_77_0.tar.bz2
 
 # Locally computed
 sha256  c9bff75738922193e67fa726fa225535870d2aa1059f91452c411736284ad566  LICENSE_1_0.txt
package/boost/boost.mk +1 -1
index e72ddf897c..98ec30f98f 100644
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-BOOST_VERSION = 1.75.0
+BOOST_VERSION = 1.77.0
 BOOST_SOURCE = boost_$(subst .,_,$(BOOST_VERSION)).tar.bz2
 BOOST_SITE = https://boostorg.jfrog.io/artifactory/main/release/$(BOOST_VERSION)/source
 BOOST_INSTALL_STAGING = YES
Signature · 6 lines
2.32.0

_______________________________________________
buildroot mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/buildroot
#1 lore raw

Hello Michael,

package/boost/Config.in comment "boost-fiber needs a toolchain not affected by GCC bug 64735" · line 166

Quoted 3 lines · On Tue, 17 Aug 2021 22:01:39 +0200 Michael Nosthoff via buildroot…

config BR2_PACKAGE_BOOST_FILESYSTEM

package/boost/Config.in +1 -0
 	bool "boost-filesystem"
+	depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-atomic

Unfortunately, if you add such a dependency, you need to look at all the place where you have a "select BR2_PACKAGE_BOOST_FILESYSTEM" or a "select BR2_PACKAGE_BOOST_ATOMIC" and make sure they have a "depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS". And recursively, any package selecting those packages will also need to have this "depends on" added.

For example: package/cc-tool/Config.in selects BR2_PACKAGE_BOOST_FILESYSTEM, so it now needs to have this depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS.

In other words, if you can get a fix for this, it would make this version bump a lot simpler :-)

Thanks!

Thomas

Signature · 7 lines
Thomas Petazzoni, co-owner and CEO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
_______________________________________________
buildroot mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/buildroot
#2 lore raw

Hi Thomas,

Quoted 5 lines · Thomas Petazzoni

Hello Michael,

On Tue, 17 Aug 2021 22:01:39 +0200
Michael Nosthoff via buildroot <[email protected]> wrote:

Quoted 9 lines

package/boost/Config.in comment "boost-fiber needs a toolchain not affected by GCC bug 64735" · line 166

Quoted 3 lines

config BR2_PACKAGE_BOOST_FILESYSTEM
bool "boost-filesystem"

package/boost/Config.in +1 -0
+	depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS # boost-atomic

Unfortunately, if you add such a dependency, you need to look at all the place where you have a "select BR2_PACKAGE_BOOST_FILESYSTEM" or a "select BR2_PACKAGE_BOOST_ATOMIC" and make sure they have a "depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS". And recursively, any package selecting those packages will also need to have this "depends on" added.

Damn, I forgot those dependencies. Fabrice added them for atomic and thread before. It's not nice but it seems to be necessary since the dependency is now there.

Quoted 7 lines

For example: package/cc-tool/Config.in selects BR2_PACKAGE_BOOST_FILESYSTEM, so it now needs to have this depends on BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS.

In other words, if you can get a fix for this, it would make this version bump a lot simpler :-)

The culprit is this commit [1]. So if c++20 is not available it always falls back on boost-atomic. From the sheer size of the commit I don't think we can "fix" this from buildroot in a sensible way.

Luckily no packages depend on boost-math, where I hope this dependency can be fixed/removed.

Regards,
Michael

[1] https://github.com/boostorg/filesystem/commit/2dda038306fd2953c2bbd01a15795994fbc32af2

Quoted 4 lines

Thanks!

Thomas

_______________________________________________
buildroot mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/buildroot