From 531b5cfda3b6cfd5964ad80a3f253d77500911ad Mon Sep 17 00:00:00 2001 From: U2FsdGVkX1 Date: Thu, 6 Jun 2024 19:04:31 +0800 Subject: [PATCH] Backport patch to fix RISC-V functions missing --- ...-ABI-detection-for-empty-os-platform.patch | 37 +++++++++++++++++++ boost.spec | 8 +++- 2 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 boost-1.83-Fix-ABI-detection-for-empty-os-platform.patch diff --git a/boost-1.83-Fix-ABI-detection-for-empty-os-platform.patch b/boost-1.83-Fix-ABI-detection-for-empty-os-platform.patch new file mode 100644 index 0000000..c450275 --- /dev/null +++ b/boost-1.83-Fix-ABI-detection-for-empty-os-platform.patch @@ -0,0 +1,37 @@ +From 819c2d6423b4e0f55c5f69e334bf81570e82f68f Mon Sep 17 00:00:00 2001 +From: "Ivan A. Melnikov" +Date: Thu, 17 Aug 2023 14:15:03 +0400 +Subject: [PATCH] Fix ABI detection for empty 'os.platform' + +`in` operator in bjam always returns true if its first +argument has no elements[1]. This means that if `os.platform` +is empty (not detected), the construction introduced +in commit d039c8e4da79dbc76481236249e22892bfdde047 sets +ABI to `aapcs` on all platforms where `os.platform` is +empty, including, e.g. riscv64, and breaks build there. + +This commit refactors the condition to use '=' operator, +to make sure that when `os.platform` is empty we get +the default ABI value, and thus fixes build on riscv64. + +[1] https://www.boost.org/doc/libs/1_83_0/tools/build/doc/html/index.html#jam.language.flow_of_control + +Fixes: d039c8e4da79dbc76481236249e22892bfdde047 +--- + build/Jamfile.v2 | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/build/Jamfile.v2 b/build/Jamfile.v2 +index faaf892c..c07847ab 100644 +--- a/libs/context/build/Jamfile.v2 ++++ b/libs/context/build/Jamfile.v2 +@@ -79,7 +79,8 @@ local rule default_abi ( ) + local tmp = sysv ; + if [ os.name ] = "NT" { tmp = ms ; } + else if [ os.name ] = "CYGWIN" { tmp = ms ; } +- else if [ os.platform ] in ARM ARM64 { tmp = aapcs ; } ++ else if [ os.platform ] = "ARM" { tmp = aapcs ; } ++ else if [ os.platform ] = "ARM64" { tmp = aapcs ; } + else if [ os.platform ] = "MIPS32" { tmp = o32 ; } + else if [ os.platform ] = "MIPS64" { tmp = n64 ; } + return $(tmp) ; diff --git a/boost.spec b/boost.spec index 377b484..109e42d 100644 --- a/boost.spec +++ b/boost.spec @@ -46,7 +46,7 @@ Name: boost %global real_name boost Summary: The free peer-reviewed portable C++ source libraries Version: 1.83.0 -Release: 5%{?dist} +Release: 6%{?dist} License: BSL-1.0 AND MIT AND Python-2.0.1 # Replace each . with _ in %%{version} @@ -169,6 +169,9 @@ Patch9: boost-1.83-multiprecision-convert-noexcept.patch # https://github.com/boostorg/math/issues/1132 Patch10: boost-1.83-math-Correct-float_next-INF-and-float_prior-INF.patch +# https://github.com/boostorg/context/pull/234 +Patch11: boost-1.83-Fix-ABI-detection-for-empty-os-platform.patch + %bcond_with tests %bcond_with docs_generated @@ -1298,6 +1301,9 @@ fi %{_mandir}/man1/b2.1* %changelog +* Sun Jun 02 2024 Songsong Zhang - 1.83.0-6 +- Backport patch to fix RISC-V functions missing + * Sat May 25 2024 Kefu Chai - 1.83.0-5 - Add patch to fix Boost.Math bug where float_next(+INF) and float_prior(-INF) returns NaN, but they should return +INF and -INF respectively.