summaryrefslogtreecommitdiff
path: root/dev-libs/boost
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2020-05-14 11:09:11 +0100
committerV3n3RiX <venerix@redcorelinux.org>2020-05-14 11:09:11 +0100
commitdeba8115d2c2af26df42966b91ef04ff4dd79cde (patch)
tree9a48f42594e1a9e6b2020d5535a784314434d7a7 /dev-libs/boost
parent38423c67c8a23f6a1bc42038193182e2da3116eb (diff)
gentoo resync : 14.05.2020
Diffstat (limited to 'dev-libs/boost')
-rw-r--r--dev-libs/boost/Manifest4
-rw-r--r--dev-libs/boost/boost-1.73.0.ebuild355
-rw-r--r--dev-libs/boost/files/boost-1.73-boost-mpi-python-PEP-328.patch17
-rw-r--r--dev-libs/boost/files/boost-1.73-boost-python-cleanup.patch107
4 files changed, 483 insertions, 0 deletions
diff --git a/dev-libs/boost/Manifest b/dev-libs/boost/Manifest
index 3347b24d6cf0..20d0f9e72470 100644
--- a/dev-libs/boost/Manifest
+++ b/dev-libs/boost/Manifest
@@ -4,6 +4,10 @@ AUX boost-1.71.0-disable_icu_rpath.patch 1077 BLAKE2B c4549b7a706cd934392bdafb44
AUX boost-1.72.0-boost-mpi-python.patch 1703 BLAKE2B b797f66c07bcec021e0a9a169cfddf8572828cd94114ff0dc40e9f08f9e5041f5cef3a8d0400cf5cc447bb75cf9e1c1c4d500930d154f34920b3501eb991eccb SHA512 61e9ef28b40f4226f09f235d59bd2d1ad571530b78c3fb50fd1f2bc47c185cc7cbd72b469fddcd6795a8578f3ba0b6abf12d8f175806e7b0d29cdd6223c145aa
AUX boost-1.72.0-missing-serialization-split_member-include.patch 992 BLAKE2B 103b669670ff1365837c4590bbba6ec112ef8f185115a60cd853cead370c514517950e6105a4f39c030d8c0931352c44eb7d03c6790ab88c6978acfa02e3a142 SHA512 b2d9e870545c8509abda1110e8de3807cec72373fd5539edabf83825b9fd893562835e7557ea74c309a02e245e9cf80e567b39bf08a5e98c9d3124cd8b10e064
AUX boost-1.72.0-revert-cease-dependence-on-range.patch 1687 BLAKE2B 9419cf7b50359c17f6226e0706e64a4637d835172a742807349536fb87731912929148810e5abb33c6005583bf6077283c2e6c453a911ea7922266f616b60ea4 SHA512 9b53d2fe2dddd592e43db03c26fadd6c07d4c45a980ae4c775b7a914346a3914f6e0c3ef42dad5e2ea4568afb86c9967e09444ff609cfba1e1d39f4980b22ad6
+AUX boost-1.73-boost-mpi-python-PEP-328.patch 396 BLAKE2B 5f08ce2eab46f2d108166afef086382dc9cd9a5305435cf437fa3ae505736979664357aa23cc51b2a74bee6aae46d94a671056037578562846e900fd2c7e65e8 SHA512 fa55d1da17bd110db2c9a16dce4da267a62ef10c13a6dc3aa6afd3b33e9a18499266b4411d292533b1c691e3bf0309fa1aab8ec19e7775a7835d89275183e6f2
+AUX boost-1.73-boost-python-cleanup.patch 3414 BLAKE2B 5167f69bbaf47be548a522638ac4a2dc9bc355d5f237738f9775b2e25a5050b6faacc5f1ce60a484f1664159ca9ba8937db3d9f8e4f0fd76117ff7f61c65cd37 SHA512 b5406e6a31a7feec590f2ee0195fc96e8830b51c270c74162d01b86b748bc11fd353ae97179e0096502b6d7dae69cdc0a478f513e2d7622455bf23a9b0da390b
DIST boost_1_72_0.tar.bz2 106907358 BLAKE2B ab270a0e3cb24da687d86785e2d2e6d7731b4dbc07bd839eadb642dfa5a428ad584acb1f3529661a8de9a986008ff3427491041059ea2b742348d02e00761cd8 SHA512 63bbd1743e7c904b2e69fdc2eafd1c2a8a30fd70d960dcd366059d0100f000cb605d56cbd9397bb18421631f1c9552a772c434d0f0caddbe56302273f51fd1f6
+DIST boost_1_73_0.tar.bz2 109247910 BLAKE2B 5995ff6ca21f45988b187b94bf743795cca97531baa8355f488be0987b9426289dd85d6ce25b7eb03ccd690109f05ba56252a95bca50505ad9cd66f4e0e234e8 SHA512 86c296511c0766145097625a62bf099c3d155284d250ad6e528e788bc90b2945838498dfe473c6c6c78d1694b6fba8e19f7dee0d064a043841e6231603fff668
EBUILD boost-1.72.0-r1.ebuild 11337 BLAKE2B bb6e82cc6c0dd49627cbd9841a4e02cf80e5e4dc3588a10c93abe587327bf3ad0d2e427bd3eb4944a8c0dee53c48de617e7305ba80091385e1a448c3e86cb544 SHA512 f07607be1571a204f050a9ae7d8c2994b944259301c1c3cb0bb81d7c84c4721b8baba8bd2795abaf01585e6a36749492527b5c8ce56c2d3fe81ba52590d9e2e0
+EBUILD boost-1.73.0.ebuild 11114 BLAKE2B f31fd8ee6ed743c51508a8066b6b8ee2a94c5b6321e4eff2a86e3668728b75e83deadda791a3309a145be25886354d9170e713d847003a6114d1395ae0874ebc SHA512 4eb1e342a41cae20b8488f243bb5ff5bcb9a82e62418153e60f050acf9d263f04d9e9218ccf469a3a06b04d52ea08a31d3d8ef2f8760edc5f5c91a913619a4f1
MISC metadata.xml 1398 BLAKE2B ddaab460cad149df5f91c1a37eb7ffaa6a2b90e1062f268925fd3e0db1403d3447963c27fcd72847319e8510723a1a245be398d50a1e317662f59f593991ff0a SHA512 ed8530328af7bef694be2af7d3ba0c83198f769223b35ee5c1a2463cf50c97e964f7a4d8361f5091e9994fe0bff000534b6c5d5e5b517d38d101061026bd01bd
diff --git a/dev-libs/boost/boost-1.73.0.ebuild b/dev-libs/boost/boost-1.73.0.ebuild
new file mode 100644
index 000000000000..2ee4e6a8b005
--- /dev/null
+++ b/dev-libs/boost/boost-1.73.0.ebuild
@@ -0,0 +1,355 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python{2_7,3_{6,7,8}} )
+
+inherit flag-o-matic multiprocessing python-r1 toolchain-funcs multilib-minimal
+
+MY_PV="$(ver_rs 1- _)"
+MAJOR_V="$(ver_cut 1-2)"
+
+DESCRIPTION="Boost Libraries for C++"
+HOMEPAGE="https://www.boost.org/"
+SRC_URI="https://dl.bintray.com/boostorg/release/${PV}/source/boost_${MY_PV}.tar.bz2"
+
+LICENSE="Boost-1.0"
+SLOT="0/${PV}" # ${PV} instead ${MAJOR_V} due to bug 486122
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~ppc-aix ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~sparc64-solaris ~x86-solaris ~x86-winnt"
+IUSE="bzip2 context debug doc icu lzma +nls mpi numpy python static-libs +threads tools zlib zstd"
+REQUIRED_USE="
+ mpi? ( threads )
+ python? ( ${PYTHON_REQUIRED_USE} )"
+
+# the tests will never fail because these are not intended as sanity
+# tests at all. They are more a way for upstream to check their own code
+# on new compilers. Since they would either be completely unreliable
+# (failing for no good reason) or completely useless (never failing)
+# there is no point in having them in the ebuild to begin with.
+RESTRICT="test"
+
+RDEPEND="
+ !app-admin/eselect-boost
+ !dev-libs/boost-numpy
+ bzip2? ( app-arch/bzip2:=[${MULTILIB_USEDEP}] )
+ icu? ( >=dev-libs/icu-3.6:=[${MULTILIB_USEDEP}] )
+ !icu? ( virtual/libiconv[${MULTILIB_USEDEP}] )
+ lzma? ( app-arch/xz-utils:=[${MULTILIB_USEDEP}] )
+ mpi? ( >=virtual/mpi-2.0-r4[${MULTILIB_USEDEP},cxx,threads] )
+ python? (
+ ${PYTHON_DEPS}
+ numpy? ( $(python_gen_cond_dep 'dev-python/numpy[${PYTHON_USEDEP}]' -3) )
+ )
+ zlib? ( sys-libs/zlib:=[${MULTILIB_USEDEP}] )
+ zstd? ( app-arch/zstd:=[${MULTILIB_USEDEP}] )"
+DEPEND="${RDEPEND}"
+BDEPEND="=dev-util/boost-build-${MAJOR_V}*"
+
+S="${WORKDIR}/${PN}_${MY_PV}"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-1.71.0-disable_icu_rpath.patch
+ "${FILESDIR}"/${PN}-1.71.0-context-x32.patch
+ "${FILESDIR}"/${PN}-1.71.0-build-auto_index-tool.patch
+ # upstream unresponsive to pull request
+ # https://github.com/boostorg/python/pull/286
+ "${FILESDIR}"/${PN}-1.73-boost-python-cleanup.patch
+ # Boost.MPI's __init__.py doesn't work on Py3
+ "${FILESDIR}"/${PN}-1.73-boost-mpi-python-PEP-328.patch
+)
+
+python_bindings_needed() {
+ multilib_is_native_abi && use python
+}
+
+tools_needed() {
+ multilib_is_native_abi && use tools
+}
+
+create_user-config.jam() {
+ local user_config_jam="${BUILD_DIR}"/user-config.jam
+ if [[ -s ${user_config_jam} ]]; then
+ einfo "${user_config_jam} already exists, skipping configuration"
+ return
+ else
+ einfo "Creating configuration in ${user_config_jam}"
+ fi
+
+ local compiler compiler_version compiler_executable="$(tc-getCXX)"
+ if [[ ${CHOST} == *-darwin* ]]; then
+ compiler="darwin"
+ compiler_version="$(gcc-fullversion)"
+ else
+ compiler="gcc"
+ compiler_version="$(gcc-version)"
+ fi
+
+ if use mpi; then
+ local mpi_configuration="using mpi ;"
+ fi
+
+ cat > "${user_config_jam}" <<- __EOF__ || die
+ using ${compiler} : ${compiler_version} : ${compiler_executable} : <cflags>"${CFLAGS}" <cxxflags>"${CXXFLAGS}" <linkflags>"${LDFLAGS}" ;
+ ${mpi_configuration}
+ __EOF__
+
+ if python_bindings_needed; then
+ append_to_user_config() {
+ local py_config
+ if tc-is-cross-compiler; then
+ py_config="using python : ${EPYTHON#python} : : ${ESYSROOT}/usr/include/${EPYTHON} : ${ESYSROOT}/usr/$(get_libdir) ;"
+ else
+ py_config="using python : ${EPYTHON#python} : ${PYTHON} : $(python_get_includedir) ;"
+ fi
+ echo "${py_config}" >> "${user_config_jam}" || die
+ }
+ python_foreach_impl append_to_user_config
+ fi
+
+ if python_bindings_needed && use numpy; then
+ einfo "Enabling support for NumPy extensions in Boost.Python"
+ else
+ einfo "Disabling support for NumPy extensions in Boost.Python"
+
+ # Boost.Build does not allow for disabling of numpy
+ # extensions, thereby leading to automagic numpy
+ # https://github.com/boostorg/python/issues/111#issuecomment-280447482
+ sed \
+ -e 's/\[ unless \[ python\.numpy \] : <build>no \]/<build>no/g' \
+ -i "${BUILD_DIR}"/libs/python/build/Jamfile || die
+ fi
+}
+
+pkg_setup() {
+ # Bail out on unsupported build configuration, bug #456792
+ if [[ -f "${EROOT}"/etc/site-config.jam ]]; then
+ if ! grep -q 'gentoo\(debug\|release\)' "${EROOT}"/etc/site-config.jam; then
+ eerror "You are using custom ${EROOT}/etc/site-config.jam without defined gentoorelease/gentoodebug targets."
+ eerror "Boost can not be built in such configuration."
+ eerror "Please, either remove this file or add targets from ${EROOT}/usr/share/boost-build/site-config.jam to it."
+ die "Unsupported target in ${EROOT}/etc/site-config.jam"
+ fi
+ fi
+}
+
+src_prepare() {
+ default
+ multilib_copy_sources
+}
+
+ejam() {
+ create_user-config.jam
+
+ local b2_opts=( "--user-config=${BUILD_DIR}/user-config.jam" )
+ if python_bindings_needed; then
+ append_to_b2_opts() {
+ b2_opts+=( python="${EPYTHON#python}" )
+ }
+ python_foreach_impl append_to_b2_opts
+ else
+ b2_opts+=( --without-python )
+ fi
+ b2_opts+=( "$@" )
+
+ echo b2 "${b2_opts[@]}" >&2
+ b2 "${b2_opts[@]}"
+}
+
+src_configure() {
+ # Workaround for too many parallel processes requested, bug #506064
+ [[ "$(makeopts_jobs)" -gt 64 ]] && MAKEOPTS="${MAKEOPTS} -j64"
+
+ OPTIONS=(
+ $(usex debug gentoodebug gentoorelease)
+ "-j$(makeopts_jobs)"
+ -q
+ -d+2
+ pch=off
+ $(usex icu "-sICU_PATH=${ESYSROOT}/usr" '--disable-icu boost.locale.icu=off')
+ $(usex mpi '' '--without-mpi')
+ $(usex nls '' '--without-locale')
+ $(usex context '' '--without-context --without-coroutine --without-fiber')
+ $(usex threads '' '--without-thread')
+ --without-stacktrace
+ --boost-build="${BROOT}"/usr/share/boost-build
+ --prefix="${ED}/usr"
+ --layout=system
+ # CMake has issues working with multiple python impls,
+ # disable cmake config generation for the time being
+ # https://github.com/boostorg/python/issues/262#issuecomment-483069294
+ --no-cmake-config
+ # building with threading=single is currently not possible
+ # https://svn.boost.org/trac/boost/ticket/7105
+ threading=multi
+ link=$(usex static-libs shared,static shared)
+ # this seems to be the only way to disable compression algorithms
+ # https://www.boost.org/doc/libs/1_70_0/libs/iostreams/doc/installation.html#boost-build
+ -sNO_BZIP2=$(usex bzip2 0 1)
+ -sNO_LZMA=$(usex lzma 0 1)
+ -sNO_ZLIB=$(usex zlib 0 1)
+ -sNO_ZSTD=$(usex zstd 0 1)
+ )
+
+ if [[ ${CHOST} == *-darwin* ]]; then
+ # We need to add the prefix, and in two cases this exceeds, so prepare
+ # for the largest possible space allocation.
+ append-ldflags -Wl,-headerpad_max_install_names
+ fi
+
+ # Use C++14 globally as of 1.62
+ append-cxxflags -std=c++14
+}
+
+multilib_src_compile() {
+ ejam "${OPTIONS[@]}" || die
+
+ if tools_needed; then
+ pushd tools >/dev/null || die
+ ejam \
+ "${OPTIONS[@]}" \
+ || die "Building of Boost tools failed"
+ popd >/dev/null || die
+ fi
+}
+
+multilib_src_install_all() {
+ if ! use numpy; then
+ rm -r "${ED}"/usr/include/boost/python/numpy* || die
+ fi
+
+ if use python; then
+ if use mpi; then
+ move_mpi_py_into_sitedir() {
+ python_moduleinto boost
+ python_domodule "${S}"/libs/mpi/build/__init__.py
+
+ python_domodule "${ED}"/usr/$(get_libdir)/boost-${EPYTHON}/mpi.so
+ rm -r "${ED}"/usr/$(get_libdir)/boost-${EPYTHON} || die
+
+ python_optimize
+ }
+ python_foreach_impl move_mpi_py_into_sitedir
+ else
+ rm -r "${ED}"/usr/include/boost/mpi/python* || die
+ fi
+ else
+ rm -r "${ED}"/usr/include/boost/{python*,mpi/python*,parameter/aux_/python,parameter/python*} || die
+ fi
+
+ if ! use nls; then
+ rm -r "${ED}"/usr/include/boost/locale || die
+ fi
+
+ if ! use context; then
+ rm -r "${ED}"/usr/include/boost/context || die
+ rm -r "${ED}"/usr/include/boost/coroutine{,2} || die
+ rm "${ED}"/usr/include/boost/asio/spawn.hpp || die
+ fi
+
+ if use doc; then
+ # find extraneous files that shouldn't be installed
+ # as part of the documentation and remove them.
+ find libs/*/* \( -iname 'test' -o -iname 'src' \) -exec rm -rf '{}' + || die
+ find doc \( -name 'Jamfile.v2' -o -name 'build' -o -name '*.manifest' \) -exec rm -rf '{}' + || die
+ find tools \( -name 'Jamfile.v2' -o -name 'src' -o -name '*.cpp' -o -name '*.hpp' \) -exec rm -rf '{}' + || die
+
+ docinto html
+ dodoc *.{htm,html,png,css}
+ dodoc -r doc libs more tools
+
+ # To avoid broken links
+ dodoc LICENSE_1_0.txt
+
+ dosym ../../../../include/boost /usr/share/doc/${PF}/html/boost
+ fi
+}
+
+multilib_src_install() {
+ ejam \
+ "${OPTIONS[@]}" \
+ --includedir="${ED}/usr/include" \
+ --libdir="${ED}/usr/$(get_libdir)" \
+ install || die "Installation of Boost libraries failed"
+
+ pushd "${ED}/usr/$(get_libdir)" >/dev/null || die
+
+ local ext=$(get_libname)
+ if use threads; then
+ local f
+ for f in *${ext}; do
+ dosym ${f} /usr/$(get_libdir)/${f/${ext}/-mt${ext}}
+ done
+ fi
+
+ popd >/dev/null || die
+
+ if tools_needed; then
+ dobin dist/bin/*
+
+ insinto /usr/share
+ doins -r dist/share/boostbook
+ fi
+
+ # boost's build system truely sucks for not having a destdir. Because for
+ # this reason we are forced to build with a prefix that includes the
+ # DESTROOT, dynamic libraries on Darwin end messed up, referencing the
+ # DESTROOT instread of the actual EPREFIX. There is no way out of here
+ # but to do it the dirty way of manually setting the right install_names.
+ if [[ ${CHOST} == *-darwin* ]]; then
+ einfo "Working around completely broken build-system(tm)"
+ local d
+ for d in "${ED}"/usr/lib/*.dylib; do
+ if [[ -f ${d} ]]; then
+ # fix the "soname"
+ ebegin " correcting install_name of ${d#${ED}}"
+ install_name_tool -id "/${d#${D}}" "${d}"
+ eend $?
+ # fix references to other libs
+ refs=$(otool -XL "${d}" | \
+ sed -e '1d' -e 's/^\t//' | \
+ grep "^libboost_" | \
+ cut -f1 -d' ')
+ local r
+ for r in ${refs}; do
+ ebegin " correcting reference to ${r}"
+ install_name_tool -change \
+ "${r}" \
+ "${EPREFIX}/usr/lib/${r}" \
+ "${d}"
+ eend $?
+ done
+ fi
+ done
+ fi
+}
+
+pkg_preinst() {
+ # Yai for having symlinks that are nigh-impossible to remove without
+ # resorting to dirty hacks like these. Removes lingering symlinks
+ # from the slotted versions.
+ local symlink
+ for symlink in "${EROOT}"/usr/include/boost "${EROOT}"/usr/share/boostbook; do
+ if [[ -L ${symlink} ]]; then
+ rm -f "${symlink}" || die
+ fi
+ done
+
+ # some ancient installs still have boost cruft lying around
+ # for unknown reasons, causing havoc for reverse dependencies
+ # Bug: 607734
+ rm -rf "${EROOT}"/usr/include/boost-1_[3-5]? || die
+}
+
+pkg_postinst() {
+ elog "Boost.Regex is *extremely* ABI sensitive. If you get errors such as"
+ elog
+ elog " undefined reference to \`boost::re_detail_$(ver_cut 1)0$(ver_cut 2)00::cpp_regex_traits_implementation"
+ elog " <char>::transform_primary[abi:cxx11](char const*, char const*) const'"
+ elog
+ elog "Then you need to recompile Boost and all its reverse dependencies"
+ elog "using the same toolchain. In general, *every* change of the C++ toolchain"
+ elog "requires a complete rebuild of the boost-dependent ecosystem."
+ elog
+ elog "See for instance https://bugs.gentoo.org/638138"
+}
diff --git a/dev-libs/boost/files/boost-1.73-boost-mpi-python-PEP-328.patch b/dev-libs/boost/files/boost-1.73-boost-mpi-python-PEP-328.patch
new file mode 100644
index 000000000000..444db2b60952
--- /dev/null
+++ b/dev-libs/boost/files/boost-1.73-boost-mpi-python-PEP-328.patch
@@ -0,0 +1,17 @@
+--- a/libs/mpi/build/__init__.py
++++ b/libs/mpi/build/__init__.py
+@@ -1,10 +1,12 @@
++from __future__ import absolute_import
++
+ import sys
+ if sys.platform == 'linux2':
+ import DLFCN as dl
+ flags = sys.getdlopenflags()
+ sys.setdlopenflags(dl.RTLD_NOW|dl.RTLD_GLOBAL)
+- import mpi
++ from . import mpi
+ sys.setdlopenflags(flags)
+ else:
+- import mpi
++ from . import mpi
+
diff --git a/dev-libs/boost/files/boost-1.73-boost-python-cleanup.patch b/dev-libs/boost/files/boost-1.73-boost-python-cleanup.patch
new file mode 100644
index 000000000000..64c8eec814e3
--- /dev/null
+++ b/dev-libs/boost/files/boost-1.73-boost-python-cleanup.patch
@@ -0,0 +1,107 @@
+From c1cae8e6b0480e046ea627679a3afe488ed02dc1 Mon Sep 17 00:00:00 2001
+From: David Seifert <soap@gentoo.org>
+Date: Wed, 25 Dec 2019 12:37:35 +0100
+Subject: [PATCH] Remove Boost.Python-specific python-tag code
+
+---
+ libs/python/Jamfile | 68 ---------------------------------------------------
+ libs/python/build/Jamfile | 4 +--
+ 2 files changed, 2 insertions(+), 70 deletions(-)
+ delete mode 100644 Jamfile
+
+diff --git a/libs/python/Jamfile b/libs/python/Jamfile
+deleted file mode 100644
+index 32e87d80f..000000000
+--- a/libs/python/Jamfile
++++ /dev/null
+@@ -1,68 +0,0 @@
+-# Copyright (c) 2018 Stefan Seefeld
+-# All rights reserved.
+-#
+-# Distributed under the Boost Software License, Version 1.0.
+-# (See accompanying file LICENSE_1_0.txt or copy at
+-# http://www.boost.org/LICENSE_1_0.txt)
+-
+-import option ;
+-import regex ;
+-import python ;
+-
+-#
+-# The `version-suffix` rule really belongs into python.jam, and
+-# should be moved there. `split-version` is only duplicated here
+-# as a prerequisite. (See https://github.com/boostorg/build/pull/290)
+-#
+-
+-
+-# Validate the version string and extract the major/minor part we care about.
+-#
+-local rule split-version ( version )
+-{
+- local major-minor = [ MATCH "^([0-9]+)\.([0-9]+)(.*)$" : $(version) : 1 2 3 ] ;
+- if ! $(major-minor[2]) || $(major-minor[3])
+- {
+- ECHO "Warning: \"using python\" expects a two part (major, minor) version number; got" $(version) instead ;
+-
+- # Add a zero to account for the missing digit if necessary.
+- major-minor += 0 ;
+- }
+-
+- return $(major-minor[1]) $(major-minor[2]) ;
+-}
+-
+-# Define a version suffix for libraries depending on Python.
+-# For example, Boost.Python built for Python 2.7 uses the suffix "27"
+-rule version-suffix ( version )
+-{
+- local major-minor = [ split-version $(version) ] ;
+- local suffix = $(major-minor:J="") ;
+- return $(suffix) ;
+-}
+-
+-
+-# Python build id (for Python libraries only).
+-python-id = [ option.get "python-buildid" ] ;
+-if $(python-id)
+-{
+- PYTHON_ID = [ regex.replace $(python-id) "[*\\/:.\"\']" _ ] ;
+-}
+-
+-rule python-tag ( name : type ? : property-set )
+-{
+- local result = $(name) ;
+- if $(type) in STATIC_LIB SHARED_LIB IMPORT_LIB
+- {
+- local version = [ $(property-set).get <python> ] ;
+- local lib-suffix = [ version-suffix $(version) ] ;
+- result = $(result)$(lib-suffix) ;
+- }
+- if $(type) in STATIC_LIB SHARED_LIB IMPORT_LIB && $(PYTHON_ID)
+- {
+- result = $(result)-$(PYTHON_ID) ;
+- }
+-
+- # forward to the boost tagging rule
+- return [ tag $(result) : $(type) : $(property-set) ] ;
+-}
+diff --git a/libs/python/build/Jamfile b/libs/python/build/Jamfile
+index d03d4dd08..dbc9fb203 100644
+--- a/libs/python/build/Jamfile
++++ b/libs/python/build/Jamfile
+@@ -95,7 +95,7 @@
+ <dependency>config-warning
+ <python-debugging>on:<define>BOOST_DEBUG_PYTHON
+ -<tag>@$(BOOST_JAMROOT_MODULE)%$(BOOST_JAMROOT_MODULE).tag
+- <tag>@$(__name__).python-tag
++ <tag>@python-tag
+ <conditional>@python.require-py
+
+ : # default build
+@@ -123,7 +123,7 @@
+ <library>boost_python
+ <python-debugging>on:<define>BOOST_DEBUG_PYTHON
+ -<tag>@$(BOOST_JAMROOT_MODULE)%$(BOOST_JAMROOT_MODULE).tag
+- <tag>@$(__name__).python-tag
++ <tag>@python-tag
+ <conditional>@python.require-py
+
+ : # default build