From 8f7673a1a4b70f51c9f91c2ab89a45235f713abc Mon Sep 17 00:00:00 2001
From: Andy Postnikov <apostnikov@gmail.com>
Date: Fri, 24 Sep 2021 05:09:33 +0300
Subject: [PATCH] testing/boost1.77: new aport

---
 ...001-revert-cease-dependence-on-range.patch |  49 ++++
 testing/boost1.77/APKBUILD                    | 225 ++++++++++++++++++
 .../boost-1.57.0-python-abi_letters.patch     |  62 +++++
 .../boost-1.57.0-python-libpython_dep.patch   |  13 +
 4 files changed, 349 insertions(+)
 create mode 100644 testing/boost1.77/0001-revert-cease-dependence-on-range.patch
 create mode 100644 testing/boost1.77/APKBUILD
 create mode 100644 testing/boost1.77/boost-1.57.0-python-abi_letters.patch
 create mode 100644 testing/boost1.77/boost-1.57.0-python-libpython_dep.patch

diff --git a/testing/boost1.77/0001-revert-cease-dependence-on-range.patch b/testing/boost1.77/0001-revert-cease-dependence-on-range.patch
new file mode 100644
index 000000000000..a6002074ab93
--- /dev/null
+++ b/testing/boost1.77/0001-revert-cease-dependence-on-range.patch
@@ -0,0 +1,49 @@
+From 436e1dbe6fcd31523d261d18ad011392f1d6fbbc Mon Sep 17 00:00:00 2001
+From: Oliver Kowalke <oliver.kowalke@gmail.com>
+Date: Sun, 1 Dec 2019 20:40:28 +0100
+Subject: [PATCH] Revert "Cease dependence on Range"
+
+This reverts commit 0c556bb59241e682bbcd3f572815149c5a9b17db.
+
+see #44 (One test fails to compile after boostorg/coroutine submodule updated)
+---
+ boost/coroutine/asymmetric_coroutine.hpp | 12 +++---------
+ 1 file changed, 3 insertions(+), 9 deletions(-)
+
+diff --git a/boost/coroutine/asymmetric_coroutine.hpp b/boost/coroutine/asymmetric_coroutine.hpp
+index ea96981..640896f 100644
+--- a/boost/coroutine/asymmetric_coroutine.hpp
++++ b/boost/coroutine/asymmetric_coroutine.hpp
+@@ -14,6 +14,7 @@
+ #include <boost/assert.hpp>
+ #include <boost/config.hpp>
+ #include <boost/move/move.hpp>
++#include <boost/range.hpp>
+ #include <boost/throw_exception.hpp>
+ #include <boost/utility/explicit_operator_bool.hpp>
+ 
+@@ -2354,19 +2355,12 @@ end( push_coroutine< R > & c)
+ 
+ }
+ 
+-// forward declaration of Boost.Range traits to break dependency on it
+-template<typename C, typename Enabler>
+-struct range_mutable_iterator;
+-
+-template<typename C, typename Enabler>
+-struct range_const_iterator;
+-
+ template< typename Arg >
+-struct range_mutable_iterator< coroutines::push_coroutine< Arg >, void >
++struct range_mutable_iterator< coroutines::push_coroutine< Arg > >
+ { typedef typename coroutines::push_coroutine< Arg >::iterator type; };
+ 
+ template< typename R >
+-struct range_mutable_iterator< coroutines::pull_coroutine< R >, void >
++struct range_mutable_iterator< coroutines::pull_coroutine< R > >
+ { typedef typename coroutines::pull_coroutine< R >::iterator type; };
+ 
+ }
+-- 
+2.24.1
+
diff --git a/testing/boost1.77/APKBUILD b/testing/boost1.77/APKBUILD
new file mode 100644
index 000000000000..42f32a82c96c
--- /dev/null
+++ b/testing/boost1.77/APKBUILD
@@ -0,0 +1,225 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=boost1.77
+pkgver=1.77.0
+_pkgver="${pkgver//./_}"
+pkgrel=0
+pkgdesc="Free peer-reviewed portable C++ source libraries"
+url="https://www.boost.org/"
+arch="all"
+license="custom"
+depends="$pkgname-libs"
+depends_dev="$pkgname linux-headers bzip2-dev icu-dev xz-dev zlib-dev"
+makedepends="$depends_dev python3-dev>=3.8 flex bison"
+subpackages="
+	$pkgname-static
+	$pkgname-dev
+	$pkgname-doc
+	boost-dev:_dev
+	"
+source="https://boostorg.jfrog.io/artifactory/main/release/$pkgver/source/boost_$_pkgver.tar.bz2
+	boost-1.57.0-python-abi_letters.patch
+	boost-1.57.0-python-libpython_dep.patch
+	0001-revert-cease-dependence-on-range.patch
+	"
+builddir="$srcdir/boost_$_pkgver"
+
+_enginedir="tools/build/src/engine"
+_bjam="$builddir"/$_enginedir/b2
+
+_libs="
+	atomic
+	chrono
+	container
+	context
+	contract
+	coroutine
+	date_time
+	fiber
+	filesystem
+	graph
+	iostreams
+	locale
+	log_setup
+	log
+	math
+	prg_exec_monitor
+	program_options
+	python3
+	random
+	regex
+	serialization
+	stacktrace_basic
+	stacktrace_noop
+	system
+	thread
+	timer
+	type_erasure
+	unit_test_framework
+	wave
+	wserialization
+	json
+	nowide
+	"
+for _lib in $_libs; do
+	subpackages="$subpackages $pkgname-${_lib}:_boostlib"
+done; unset -v _lib
+subpackages="$subpackages $pkgname-libs"
+
+# Claim the unversioned name, this must be removed once we switch our
+# boost to a new version
+provides="boost=$pkgver-r$pkgrel"
+replaces="boost"
+
+_set_options() {
+	[ -n "$PY3_VERSION" ] || PY3_VERSION="$(_pyversion python3)"
+
+	local _options_python="${PY2_VERSION:+$PY2_VERSION,}$PY3_VERSION"
+	[ -z "$_options_python" ] || _options_python="python=$_options_python"
+
+	_options="
+		--user-config=\"$builddir/user-config.jam\"
+		--prefix=\"$pkgdir/usr\"
+		release
+		$_options_python
+		toolset=gcc
+		debug-symbols=off
+		threading=multi
+		runtime-link=shared
+		link=shared,static
+		cflags=-fno-strict-aliasing
+		--layout=system
+		-q
+		-j${JOBS:-2}
+		$_options_carch
+		"
+}
+
+prepare() {
+	default_prepare
+
+	_set_options
+	local abiflags="$(python3-config --abiflags)"
+
+	# create user-config.jam
+	cat > user-config.jam <<-__EOF__
+
+	using gcc : : $CC : <cxxflags>"$CXXFLAGS" <linkflags>"$LDFLAGS" ;
+	using python : ${PY3_VERSION:+$PY3_VERSION }: /usr/bin/python3 : ${PY3_VERSION:+/usr/include/python${PY3_VERSION}$abiflags }: : : : ${abiflags:+$abiflags };
+
+	__EOF__
+}
+
+build() {
+	export BOOST_ROOT="$builddir"
+
+	msg "Building bjam"
+	cd "$builddir"/$_enginedir
+	CC= ./build.sh gcc
+
+	msg "Building bcp"
+	cd "$builddir"/tools/bcp
+	"$_bjam" -j${JOBS:-2}
+
+	msg "Building boost"
+	cd "$builddir"
+	_set_options
+	"$_bjam" $_options
+}
+
+check() {
+	cd "$builddir"/tools/build/test
+
+	PATH="${_bjam%/*}:$PATH" python3 test_all.py --default-bjam
+}
+
+package() {
+	export BOOST_ROOT="$builddir"
+	_set_options
+
+	install -Dm755 "$_bjam" \
+		"$pkgdir"/usr/bin/b2
+	ln -s b2 "$pkgdir"/usr/bin/bjam # old name for b2 binary
+
+	install -Dm755 dist/bin/bcp "$pkgdir"/usr/bin/bcp
+
+	install -Dm644 LICENSE_1_0.txt \
+		"$pkgdir"/usr/share/licenses/$pkgname/LICENSE_1_0.txt
+
+	"$pkgdir"/usr/bin/bjam $_options \
+		--includedir="$pkgdir"/usr/include \
+		--libdir="$pkgdir"/usr/lib \
+		install
+}
+
+static() {
+	pkgdesc="Boost static libraries"
+	depends="$depends_static"
+
+	# Claim the unversioned name, this must be removed once we switch our
+	# boost to a new version
+	provides="boost-static=$pkgver-r$pkgrel"
+	replaces="boost-static"
+
+	mkdir -p "$subpkgdir"/usr/lib
+	mv "$pkgdir"/usr/lib/lib*.a "$subpkgdir"/usr/lib/
+}
+
+_boostlib() {
+	local name="${subpkgname#$pkgname-}"
+	pkgdesc="Boost $name shared library"
+	depends="$depends__boostlib"
+
+	# Claim the unversioned name, this must be removed once we switch our
+	# boost to a new version
+	provides="boost-$name=$pkgver-r$pkgrel"
+	replaces="boost-$name"
+
+	mkdir -p "$subpkgdir"/usr/lib
+	mv "$pkgdir"/usr/lib/libboost_$name*.so.[0-9]* "$subpkgdir"/usr/lib/
+}
+
+libs() {
+	default_libs
+
+	# Claim the unversioned name, this must be removed once we switch our
+	# boost to a new version
+	provides="boost-libs=$pkgver-r$pkgrel"
+	replaces="boost-libs"
+
+	pkgdesc="Boost shared libraries"
+	depends="$depends_libs"
+	local _pkg; for _pkg in $origsubpackages; do
+		case "$_pkg" in
+			*:_boostlib) depends="$depends ${_pkg%%:*}" ;;
+		esac
+	done
+
+	mkdir -p "$subpkgdir"
+	rmdir "$pkgdir"/usr/lib >/dev/null 2>&1 || :
+}
+
+_dev() {
+	# This makes boost-dev be a metapackage that depends on boostX.Y-dev
+	mkdir -p "$subpkgdir"
+	depends="$pkgname-dev=$pkgver-r$pkgrel"
+}
+
+doc() {
+	# Claim the unversioned name, this must be removed once we switch our
+	# boost to a new version
+	provides="boost-doc=$pkgver-r$pkgrel"
+	replaces="boost-doc"
+
+	default_doc
+}
+
+_pyversion() {
+	"$1" -c 'import sys; print("%i.%i" % (sys.version_info.major, sys.version_info.minor))'
+}
+
+sha512sums="
+39b45c9b60bc5a2a4c669a4463d1272c1e093376b2fb374d7f20a84ea10a3e23bb04b335a735a83a04575731f874d9bff77e89acd947524b3fbbae1b26ae1f2f  boost_1_77_0.tar.bz2
+d96d4d37394a31764ed817d0bc4a99cffa68a75ff1ecfd4417b9e1e5ae2c31a96ed24f948c6f2758ffdac01328d2402c4cf0d33a37107e4f5f721e636daebd66  boost-1.57.0-python-abi_letters.patch
+132c4b62815d605c2d3c9038427fa4f422612a33711d47b2862f2311516af8a371d6b75bf078a7bffe20be863f8d21fb9fe74dc1a1bac3a10d061e9768ec3e02  boost-1.57.0-python-libpython_dep.patch
+9b53d2fe2dddd592e43db03c26fadd6c07d4c45a980ae4c775b7a914346a3914f6e0c3ef42dad5e2ea4568afb86c9967e09444ff609cfba1e1d39f4980b22ad6  0001-revert-cease-dependence-on-range.patch
+"
diff --git a/testing/boost1.77/boost-1.57.0-python-abi_letters.patch b/testing/boost1.77/boost-1.57.0-python-abi_letters.patch
new file mode 100644
index 000000000000..7df3ee7047da
--- /dev/null
+++ b/testing/boost1.77/boost-1.57.0-python-abi_letters.patch
@@ -0,0 +1,62 @@
+--- boost_1_57_0/tools/build/src/tools/python.jam	2013-05-21 06:14:18.000000000 +0200
++++ boost_1_55_0/tools/build/src/tools/python.jam	2014-05-29 19:09:12.115413877 +0200
+@@ -94,7 +94,7 @@ feature.feature pythonpath : : free opti
+ #   using python : 2.3 : /usr/local/bin/python ;
+ #
+ rule init ( version ? : cmd-or-prefix ? : includes * : libraries ?
+-    : condition * : extension-suffix ? )
++    : condition * : extension-suffix ? : abi-letters ? )
+ {
+     project.push-current $(.project) ;
+ 
+@@ -107,7 +107,7 @@ rule init ( version ? : cmd-or-prefix ? 
+         }
+     }
+ 
+-    configure $(version) : $(cmd-or-prefix) : $(includes) : $(libraries) : $(condition) : $(extension-suffix) ;
++    configure $(version) : $(cmd-or-prefix) : $(includes) : $(libraries) : $(condition) : $(extension-suffix) : $(abi-letters) ;
+ 
+     project.pop-current ;
+ }
+@@ -653,7 +653,7 @@ local rule system-library-dependencies (
+ 
+ # Declare a target to represent Python's library.
+ #
+-local rule declare-libpython-target ( version ? : requirements * )
++local rule declare-libpython-target ( version ? : requirements * : abi-letters ? )
+ {
+     # Compute the representation of Python version in the name of Python's
+     # library file.
+@@ -677,13 +677,13 @@ local rule declare-libpython-target ( ve
+     }
+ 
+     # Declare it.
+-    lib python.lib : : <name>python$(lib-version) $(requirements) ;
++    lib python.lib : : <name>python$(lib-version)$(abi-letters) $(requirements) ;
+ }
+ 
+ 
+ # Implementation of init.
+ local rule configure ( version ? : cmd-or-prefix ? : includes * : libraries ? :
+-    condition * : extension-suffix ? )
++    condition * : extension-suffix ? : abi-letters ? )
+ {
+     local prefix ;
+     local exec-prefix ;
+@@ -699,6 +699,7 @@ local rule configure ( version ? : cmd-o
+         extension-suffix ?= _d ;
+     }
+     extension-suffix ?= "" ;
++    abi-letters ?= "" ;
+ 
+     # Normalize and dissect any version number.
+     local major-minor ;
+@@ -922,7 +923,7 @@ local rule configure ( version ? : cmd-o
+     }
+     else
+     {
+-        declare-libpython-target $(version) : $(target-requirements) ;
++        declare-libpython-target $(version) : $(target-requirements) : $(abi-letters) ;
+ 
+         # This is an evil hack.  On, Windows, when Python is embedded, nothing
+         # seems to set up sys.path to include Python's standard library
diff --git a/testing/boost1.77/boost-1.57.0-python-libpython_dep.patch b/testing/boost1.77/boost-1.57.0-python-libpython_dep.patch
new file mode 100644
index 000000000000..57bfc26774ea
--- /dev/null
+++ b/testing/boost1.77/boost-1.57.0-python-libpython_dep.patch
@@ -0,0 +1,13 @@
+Index: boost_1_57_0/tools/build/src/tools/python.jam
+===================================================================
+--- boost_1_57_0/tools/build/src/tools/python.jam	(revision 50406)
++++ boost_1_57_0/tools/build/src/tools/python.jam	(working copy)
+@@ -994,7 +994,7 @@
+     else
+     {
+         alias python_for_extensions
+-            :
++            : python
+             : $(target-requirements)
+             :
+             : $(usage-requirements)
-- 
GitLab