boost1.85, add recipe/patchset (#10676)

This commit is contained in:
Schrijvers Luc
2024-07-10 08:05:03 +02:00
committed by GitHub
parent 641eb1ed26
commit 2cacefffaa
2 changed files with 536 additions and 0 deletions

View File

@@ -0,0 +1,249 @@
SUMMARY="A set of libraries for the C++ programming language"
DESCRIPTION="Boost is a set of libraries for the C++ programming language \
that provide support for tasks and structures such as linear algebra, \
pseudorandom number generation, multithreading, image processing, regular \
expressions, and unit testing. It contains over eighty individual libraries."
HOMEPAGE="https://www.boost.org/"
SOURCE_URI="https://boostorg.jfrog.io/artifactory/main/release/$portVersion/source/boost_${portVersion//./_}.tar.bz2"
CHECKSUM_SHA256="7009fe1faa1697476bdc7027703a2badb84e849b7b0baad5086b087b971f8617"
REVISION="1"
LICENSE="Boost v1.0"
COPYRIGHT="1993-2002 Christopher Seiwald and Perforce Software, Inc.
1998-2018 Beman Dawes
2001 David Turner
2001-2004 David Abrahams
2002-2019 Rene Rivera
2003-2015 Vladimir Prus"
SOURCE_DIR="boost_${portVersion//./_}"
PATCHES="boost1.85-$portVersion.patchset"
ARCHITECTURES="all !x86_gcc2"
SECONDARY_ARCHITECTURES="x86"
libVersion="$portVersion compat >= 1.85.0"
PROVIDES="
boost1.85$secondaryArchSuffix = $portVersion
lib:libboost_atomic$secondaryArchSuffix = $libVersion
lib:libboost_charconv$secondaryArchSuffix = $libVersion
lib:libboost_chrono$secondaryArchSuffix = $libVersion
lib:libboost_container$secondaryArchSuffix = $libVersion
lib:libboost_context$secondaryArchSuffix = $libVersion
lib:libboost_contract$secondaryArchSuffix = $libVersion
lib:libboost_coroutine$secondaryArchSuffix = $libVersion
lib:libboost_date_time$secondaryArchSuffix = $libVersion
lib:libboost_fiber$secondaryArchSuffix = $libVersion
lib:libboost_filesystem$secondaryArchSuffix = $libVersion
lib:libboost_graph$secondaryArchSuffix = $libVersion
lib:libboost_iostreams$secondaryArchSuffix = $libVersion
lib:libboost_json$secondaryArchSuffix = $libVersion
lib:libboost_locale$secondaryArchSuffix = $libVersion
lib:libboost_log_setup$secondaryArchSuffix = $libVersion
lib:libboost_log$secondaryArchSuffix = $libVersion
lib:libboost_math_c99$secondaryArchSuffix = $libVersion
lib:libboost_math_c99f$secondaryArchSuffix = $libVersion
lib:libboost_math_tr1$secondaryArchSuffix = $libVersion
lib:libboost_math_tr1f$secondaryArchSuffix = $libVersion
lib:libboost_nowide$secondaryArchSuffix = $libVersion
lib:libboost_prg_exec_monitor$secondaryArchSuffix = $libVersion
lib:libboost_program_options$secondaryArchSuffix = $libVersion
lib:libboost_random$secondaryArchSuffix = $libVersion
lib:libboost_regex$secondaryArchSuffix = $libVersion
lib:libboost_serialization$secondaryArchSuffix = $libVersion
lib:libboost_stacktrace_basic$secondaryArchSuffix = $libVersion
lib:libboost_stacktrace_noop$secondaryArchSuffix = $libVersion
lib:libboost_system$secondaryArchSuffix = $libVersion
lib:libboost_thread$secondaryArchSuffix = $libVersion
lib:libboost_timer$secondaryArchSuffix = $libVersion
lib:libboost_type_erasure$secondaryArchSuffix = $libVersion
lib:libboost_unit_test_framework$secondaryArchSuffix = $libVersion
lib:libboost_url$secondaryArchSuffix = $libVersion
lib:libboost_wave$secondaryArchSuffix = $libVersion
lib:libboost_wserialization$secondaryArchSuffix = $libVersion
"
REQUIRES="
haiku$secondaryArchSuffix
lib:libbz2$secondaryArchSuffix
lib:libiconv$secondaryArchSuffix
lib:libicudata$secondaryArchSuffix
lib:libicui18n$secondaryArchSuffix
lib:libicuuc$secondaryArchSuffix
lib:liblzma$secondaryArchSuffix
lib:libquadmath$secondaryArchSuffix
lib:libz$secondaryArchSuffix
lib:libzstd$secondaryArchSuffix
"
# List of devel entries matching an actual library (for use in prepareInstalledDevelLibs)
# Boost also provides header-only libraries (because templates)
devel_libs="
devel:libboost_atomic$secondaryArchSuffix = $libVersion
devel:libboost_charconv$secondaryArchSuffix = $libVersion
devel:libboost_chrono$secondaryArchSuffix = $libVersion
devel:libboost_container$secondaryArchSuffix = $libVersion
devel:libboost_context$secondaryArchSuffix = $libVersion
devel:libboost_contract$secondaryArchSuffix = $libVersion
devel:libboost_coroutine$secondaryArchSuffix = $libVersion
devel:libboost_date_time$secondaryArchSuffix = $libVersion
devel:libboost_exception$secondaryArchSuffix = $libVersion
devel:libboost_fiber$secondaryArchSuffix = $libVersion
devel:libboost_filesystem$secondaryArchSuffix = $libVersion
devel:libboost_graph$secondaryArchSuffix = $libVersion
devel:libboost_iostreams$secondaryArchSuffix = $libVersion
devel:libboost_json$secondaryArchSuffix = $libVersion
devel:libboost_locale$secondaryArchSuffix = $libVersion
devel:libboost_log_setup$secondaryArchSuffix = $libVersion
devel:libboost_log$secondaryArchSuffix = $libVersion
devel:libboost_nowide$secondaryArchSuffix = $libVersion
devel:libboost_prg_exec_monitor$secondaryArchSuffix = $libVersion
devel:libboost_program_options$secondaryArchSuffix = $libVersion
devel:libboost_random$secondaryArchSuffix = $libVersion
devel:libboost_regex$secondaryArchSuffix = $libVersion
devel:libboost_serialization$secondaryArchSuffix = $libVersion
devel:libboost_stacktrace_basic$secondaryArchSuffix = $libVersion
devel:libboost_stacktrace_noop$secondaryArchSuffix = $libVersion
devel:libboost_system$secondaryArchSuffix = $libVersion
devel:libboost_test_exec_monitor$secondaryArchSuffix = $libVersion
devel:libboost_thread$secondaryArchSuffix = $libVersion
devel:libboost_timer$secondaryArchSuffix = $libVersion
devel:libboost_type_erasure$secondaryArchSuffix = $libVersion
devel:libboost_unit_test_framework$secondaryArchSuffix = $libVersion
devel:libboost_url$secondaryArchSuffix = $libVersion
devel:libboost_wave$secondaryArchSuffix = $libVersion
devel:libboost_wserialization$secondaryArchSuffix = $libVersion
"
PROVIDES_devel="
boost1.85${secondaryArchSuffix}_devel = $portVersion
$devel_libs
devel:libboost_config$secondaryArchSuffix = $libVersion
"
REQUIRES_devel="
boost1.85$secondaryArchSuffix == $portVersion base
"
CONFLICTS_devel="
boost169${secondaryArchSuffix}_devel
boost170${secondaryArchSuffix}_devel
boost1.83${secondaryArchSuffix}_devel
"
PROVIDES_docs="
boost1.85${secondaryArchSuffix}_docs
"
REQUIRES_docs="
boost1.85${secondaryArchSuffix}_devel == $portVersion base
"
BUILD_REQUIRES="
haiku${secondaryArchSuffix}_devel
devel:libbz2$secondaryArchSuffix
devel:libiconv$secondaryArchSuffix
devel:libicudata$secondaryArchSuffix >= 75
devel:libicui18n$secondaryArchSuffix >= 75
devel:libicuuc$secondaryArchSuffix >= 75
devel:liblzma$secondaryArchSuffix
devel:libz$secondaryArchSuffix
devel:libzstd$secondaryArchSuffix
"
BUILD_PREREQUIRES="
cmd:addr2line$secondaryArchSuffix
cmd:find
cmd:gcc$secondaryArchSuffix
cmd:ld$secondaryArchSuffix
cmd:sed
cmd:which
"
defineDebugInfoPackage boost1.85$secondaryArchSuffix \
"$libDir"/libboost_atomic.so.$portVersion \
"$libDir"/libboost_charconv.so.$portVersion \
"$libDir"/libboost_chrono.so.$portVersion \
"$libDir"/libboost_container.so.$portVersion \
"$libDir"/libboost_context.so.$portVersion \
"$libDir"/libboost_contract.so.$portVersion \
"$libDir"/libboost_coroutine.so.$portVersion \
"$libDir"/libboost_date_time.so.$portVersion \
"$libDir"/libboost_fiber.so.$portVersion \
"$libDir"/libboost_filesystem.so.$portVersion \
"$libDir"/libboost_graph.so.$portVersion \
"$libDir"/libboost_iostreams.so.$portVersion \
"$libDir"/libboost_json.so.$portVersion \
"$libDir"/libboost_locale.so.$portVersion \
"$libDir"/libboost_log_setup.so.$portVersion \
"$libDir"/libboost_log.so.$portVersion \
"$libDir"/libboost_nowide.so.$portVersion \
"$libDir"/libboost_prg_exec_monitor.so.$portVersion \
"$libDir"/libboost_program_options.so.$portVersion \
"$libDir"/libboost_random.so.$portVersion \
"$libDir"/libboost_regex.so.$portVersion \
"$libDir"/libboost_serialization.so.$portVersion \
"$libDir"/libboost_stacktrace_basic.so.$portVersion \
"$libDir"/libboost_stacktrace_noop.so.$portVersion \
"$libDir"/libboost_system.so.$portVersion \
"$libDir"/libboost_thread.so.$portVersion \
"$libDir"/libboost_timer.so.$portVersion \
"$libDir"/libboost_type_erasure.so.$portVersion \
"$libDir"/libboost_unit_test_framework.so.$portVersion \
"$libDir"/libboost_url.so.$portVersion \
"$libDir"/libboost_wave.so.$portVersion \
"$libDir"/libboost_wserialization.so.$portVersion
BUILD()
{
./bootstrap.sh \
--with-icu \
--prefix=$prefix \
--exec-prefix=$binDir \
--libdir=$libDir \
--includedir=$includeDir
}
INSTALL()
{
./b2 -q $jobArgs \
--without-graph_parallel \
--without-mpi \
--without-python \
--enable-parallel-mark \
--enable-threads=posix \
--enable-thread-local-alloc \
toolset=gcc \
pch=off \
inlining=on \
threading=multi \
variant=release \
link=shared \
runtime-link=shared \
install
# install documentation
mkdir -p $developDocDir
cp -r doc/html/* $developDocDir
prepareInstalledDevelLibs `echo "$devel_libs" | sed -n \
-e "s/devel:\(.*\)$secondaryArchSuffix =.*/\1/p"`
# Correct boost cmake static files
# https://github.com/boostorg/boost_install/issues/49
for i in $(find $libDir/cmake -name "libboost_*-variant-static.cmake"); do
echo "Replacing LIBDIR in $i";
sed -i "s%\${_BOOST_LIBDIR}%$prefix/$relativeDevelopLibDir%g" $i;
done;
packageEntries docs \
$developDocDir
packageEntries devel \
$developDir \
$libDir/cmake
}
# From Gentoo: the tests will never fail because these are not intended as sanity
# tests at all.
# Nuked the tests after 26200 targets were done (and still wasn't finished)
TEST()
{
cd status
../b2 $jobArgs
}

View File

@@ -0,0 +1,287 @@
From fae517135255aee241f5b2781f71a4ca369b6da0 Mon Sep 17 00:00:00 2001
From: Adrien Destugues <pulkomandy@gmail.com>
Date: Sat, 6 Aug 2016 22:27:19 +0200
Subject: Import changes from 1.55.0: buildtools
diff --git a/tools/build/src/engine/jam.h b/tools/build/src/engine/jam.h
index 4e8ffa6..646c26f 100644
--- a/tools/build/src/engine/jam.h
+++ b/tools/build/src/engine/jam.h
@@ -163,6 +163,11 @@
#define OS_BEOS
#define NO_VFORK
#endif
+#ifdef __HAIKU__
+ #define unix
+ #define OSMINOR "OS=HAIKU"
+ #define OS_HAIKU
+#endif
#ifdef __bsdi__
#define OSMINOR "OS=BSDI"
#define OS_BSDI
--
2.45.2
From 1de8a871692781ce8306fa2cb861226692872f6f Mon Sep 17 00:00:00 2001
From: Adrien Destugues <pulkomandy@gmail.com>
Date: Sat, 6 Aug 2016 22:27:41 +0200
Subject: Import changes from 1.55.0: sourcecode
diff --git a/boost/thread/detail/platform.hpp b/boost/thread/detail/platform.hpp
index 172a601..c706e40 100644
--- a/boost/thread/detail/platform.hpp
+++ b/boost/thread/detail/platform.hpp
@@ -34,7 +34,7 @@
#if ! defined BOOST_THREAD_WIN32
# define BOOST_THREAD_WIN32
#endif
-#elif defined(__BEOS__)
+#elif defined(__BEOS__) || defined(__HAIKU__)
# define BOOST_THREAD_BEOS
#elif defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__)
# define BOOST_THREAD_MACOS
--
2.45.2
From 256351d4fb07711b464e6294a1e42328e56c9203 Mon Sep 17 00:00:00 2001
From: Jerome Duval <jerome.duval@gmail.com>
Date: Sat, 14 Oct 2017 11:47:09 +0200
Subject: Haiku needs bsd and _BSD_SOURCE.
diff --git a/tools/build/src/engine/build.sh b/tools/build/src/engine/build.sh
index 912c947..9a04222 100755
--- a/tools/build/src/engine/build.sh
+++ b/tools/build/src/engine/build.sh
@@ -327,6 +327,22 @@ case "${B2_TOOLSET}" in
CXX_VERSION_OPT=${CXX_VERSION_OPT:---version}
B2_CXXFLAGS_RELEASE="-O2 -s"
B2_CXXFLAGS_DEBUG="-O0 -g"
+
+ CXX=${CXX:=g++}
+ # Check whether it's MinGW GCC, which has Windows headers and none of POSIX ones.
+ machine=$(${CXX} -dumpmachine 2>/dev/null)
+ if [ $? -ne 0 ]; then
+ echo "B2_TOOLSET is gcc, but the 'gcc' command cannot be executed."
+ echo "Make sure 'gcc' is in PATH, or use a different toolset."
+ exit 1
+ fi
+ case $machine in
+ *haiku*)
+ B2_CXX="${CXX} -x c++ -std=c++17"
+ B2_CXXFLAGS_RELEASE="-O2 -s -D_DEFAULT_SOURCE -lbsd"
+ B2_CXXFLAGS_DEBUG="-O0 -g"
+ ;;
+ esac
;;
intel-*)
--
2.45.2
From ed6714cee82b5c3f989a12f15f25947c443ab38a Mon Sep 17 00:00:00 2001
From: Begasus <begasus@gmail.com>
Date: Fri, 25 Aug 2023 10:15:17 +0200
Subject: Add auto_index binary to tools
diff --git a/tools/Jamfile.v2 b/tools/Jamfile.v2
index e1391c7..a580eb1 100644
--- a/tools/Jamfile.v2
+++ b/tools/Jamfile.v2
@@ -18,6 +18,7 @@ project
;
TOOLS =
+ auto_index/build//auto_index
bcp//bcp
inspect/build//inspect
quickbook//quickbook
--
2.45.2
From 0b05ba55aeb6ec9445bb8c6be77ec89d9e548007 Mon Sep 17 00:00:00 2001
From: Begasus <begasus@gmail.com>
Date: Sun, 27 Aug 2023 19:13:24 +0200
Subject: Fix missing functions to build libboost_locale
diff --git a/boost/config/platform/haiku.hpp b/boost/config/platform/haiku.hpp
index 04244c5..e22ac4f 100644
--- a/boost/config/platform/haiku.hpp
+++ b/boost/config/platform/haiku.hpp
@@ -16,11 +16,6 @@
# define BOOST_HAS_THREADS
#endif
-#define BOOST_NO_CXX11_HDR_TYPE_TRAITS
-#define BOOST_NO_CXX11_ATOMIC_SMART_PTR
-#define BOOST_NO_CXX11_STATIC_ASSERT
-#define BOOST_NO_CXX11_VARIADIC_MACROS
-
//
// thread API's not auto detected:
//
--
2.45.2
From 23b7f809396540e0bdd202cdd04d81eb6818c936 Mon Sep 17 00:00:00 2001
From: Begasus <begasus@gmail.com>
Date: Mon, 28 Aug 2023 18:08:06 +0200
Subject: Fix building the tests
diff --git a/libs/predef/test/build.jam b/libs/predef/test/build.jam
index d67d932..6406018 100644
--- a/libs/predef/test/build.jam
+++ b/libs/predef/test/build.jam
@@ -12,7 +12,7 @@ project
: requirements
# Add explicit dependency since we don't have header scanner for
# .m and .mm files.
- <dependency>../include/boost/predef.h
+ <dependency>$(BOOST_ROOT)/boost/predef.h
;
using testing ;
diff --git a/libs/uuid/test/Jamfile.v2 b/libs/uuid/test/Jamfile.v2
index 023515e..5815a3e 100644
--- a/libs/uuid/test/Jamfile.v2
+++ b/libs/uuid/test/Jamfile.v2
@@ -65,12 +65,12 @@ rule test_all
all_rules += [ compile compile/decl_header.cpp :
<define>"BOOST_UUID_TEST_HEADER=uuid.hpp"
<define>"BOOST_UUID_NO_TYPE_TRAITS"
- <dependency>../include/boost/uuid/uuid.hpp :
+ <dependency>$(BOOST_ROOT)/boost/uuid/uuid.hpp :
compile_uuid_no_type_traits ] ;
all_rules += [ compile compile/decl_header.cpp :
<define>"BOOST_UUID_TEST_HEADER=uuid.hpp"
<define>"BOOST_UUID_NO_SIMD"
- <dependency>../include/boost/uuid/uuid.hpp :
+ <dependency>$(BOOST_ROOT)/boost/uuid/uuid.hpp :
compile_uuid_no_simd ] ;
# ECHO All rules: $(all_rules) ;
--
2.45.2
From 2a82ec759087b5e7f25afc16df447dc833e39aeb Mon Sep 17 00:00:00 2001
From: PulkoMandy <pulkomandy@pulkomandy.tk>
Date: Fri, 13 Jan 2023 21:26:43 +0100
Subject: Haiku currently doesn't have cfsetspeed
diff --git a/boost/asio/impl/serial_port_base.ipp b/boost/asio/impl/serial_port_base.ipp
index 3fa96fd..76924d4 100644
--- a/boost/asio/impl/serial_port_base.ipp
+++ b/boost/asio/impl/serial_port_base.ipp
@@ -114,7 +114,8 @@ BOOST_ASIO_SYNC_OP_VOID serial_port_base::baud_rate::store(
ec = boost::asio::error::invalid_argument;
BOOST_ASIO_SYNC_OP_VOID_RETURN(ec);
}
-# if defined(_BSD_SOURCE) || defined(_DEFAULT_SOURCE)
+# if defined(_BSD_SOURCE) || defined(_DEFAULT_SOURCE) && !defined(__HAIKU__)
+// TODO re-enable this for Haiku once cfsetspeed is implemented (#18220)
::cfsetspeed(&storage, baud);
# else
::cfsetispeed(&storage, baud);
--
2.45.2
From 2a1905df2e8b6b2122a6e7ad598ebf0a3a5c2001 Mon Sep 17 00:00:00 2001
From: Conrad Poelman <cpgithub@stellarscience.com>
Date: Mon, 3 Aug 2020 18:35:35 -0400
Subject: Remove deprecated inheritance from std::iterator
diff --git a/boost/numeric/ublas/detail/iterator.hpp b/boost/numeric/ublas/detail/iterator.hpp
index 1723a30..3f5cae8 100644
--- a/boost/numeric/ublas/detail/iterator.hpp
+++ b/boost/numeric/ublas/detail/iterator.hpp
@@ -107,8 +107,12 @@ namespace boost { namespace numeric { namespace ublas {
* via the post increment operator.
*/
template<class IC, class I, class T>
- struct forward_iterator_base:
- public std::iterator<IC, T> {
+ struct forward_iterator_base {
+ typedef IC iterator_category;
+ typedef T value_type;
+ typedef std::ptrdiff_t difference_type;
+ typedef T* pointer;
+ typedef T& reference;
typedef I derived_iterator_type;
typedef T derived_value_type;
@@ -145,9 +149,13 @@ namespace boost { namespace numeric { namespace ublas {
* via the post increment and post decrement operator.
*/
template<class IC, class I, class T>
- struct bidirectional_iterator_base:
- public std::iterator<IC, T> {
- typedef I derived_iterator_type;
+ struct forward_iterator_base {
+ typedef IC iterator_category;
+ typedef T value_type;
+ typedef std::ptrdiff_t difference_type;
+ typedef T* pointer;
+ typedef T& reference;
+ typedef I derived_iterator_type;
typedef T derived_value_type;
// Arithmetic
@@ -200,8 +208,12 @@ namespace boost { namespace numeric { namespace ublas {
*/
template<class IC, class I, class T, class D = std::ptrdiff_t>
// ISSUE the default for D seems rather dangerous as it can easily be (silently) incorrect
- struct random_access_iterator_base:
- public std::iterator<IC, T> {
+ struct forward_iterator_base {
+ typedef IC iterator_category;
+ typedef T value_type;
+ typedef std::ptrdiff_t difference_type;
+ typedef T* pointer;
+ typedef T& reference;
typedef I derived_iterator_type;
typedef T derived_value_type;
typedef D derived_difference_type;
--
2.45.2
From 59901404fa734a9943310434b5c03f8923d3fc6e Mon Sep 17 00:00:00 2001
From: Schrijvers Luc <begasus@gmail.com>
Date: Sat, 6 Jul 2024 17:27:48 +0200
Subject: build fix for sourcetrail
diff --git a/boost/process/detail/posix/is_running.hpp b/boost/process/detail/posix/is_running.hpp
index 0f86b44..99a13dc 100644
--- a/boost/process/detail/posix/is_running.hpp
+++ b/boost/process/detail/posix/is_running.hpp
@@ -17,10 +17,12 @@ namespace boost { namespace process { namespace detail { namespace posix {
// This bit arrangement of status codes is not guaranteed by POSIX, but (according to comments in
// the glibc <bits/waitstatus.h> header) is the same across systems in practice.
constexpr int still_active = 0x017f;
+#if !defined(__HAIKU__)
static_assert(WIFSTOPPED(still_active), "Expected still_active to indicate WIFSTOPPED");
static_assert(!WIFEXITED(still_active), "Expected still_active to not indicate WIFEXITED");
static_assert(!WIFSIGNALED(still_active), "Expected still_active to not indicate WIFSIGNALED");
static_assert(!WIFCONTINUED(still_active), "Expected still_active to not indicate WIFCONTINUED");
+#endif
inline bool is_running(int code)
{
--
2.45.2