diff options
author | Mike Gilbert <floppym@gentoo.org> | 2012-07-07 18:56:41 +0000 |
---|---|---|
committer | Mike Gilbert <floppym@gentoo.org> | 2012-07-07 18:56:41 +0000 |
commit | 08df17f2a6becb5741a3167944b7c19c422ce4b2 (patch) | |
tree | eea0a61d6a6bff35c460246766f95c7a2ebe9b1c /dev-libs/boost | |
parent | Bump dev-perl/crypt-dh-0.70.0. Use Math-BigInt-GMP instead of math-pari (diff) | |
download | historical-08df17f2a6becb5741a3167944b7c19c422ce4b2.tar.gz historical-08df17f2a6becb5741a3167944b7c19c422ce4b2.tar.bz2 historical-08df17f2a6becb5741a3167944b7c19c422ce4b2.zip |
Version bump by Arfrever.
Package-Manager: portage-2.2.0_alpha116/cvs/Linux x86_64
Diffstat (limited to 'dev-libs/boost')
-rw-r--r-- | dev-libs/boost/ChangeLog | 8 | ||||
-rw-r--r-- | dev-libs/boost/Manifest | 14 | ||||
-rw-r--r-- | dev-libs/boost/boost-1.50.0.ebuild | 613 |
3 files changed, 632 insertions, 3 deletions
diff --git a/dev-libs/boost/ChangeLog b/dev-libs/boost/ChangeLog index 165369723266..3abd90f58b88 100644 --- a/dev-libs/boost/ChangeLog +++ b/dev-libs/boost/ChangeLog @@ -1,6 +1,11 @@ # ChangeLog for dev-libs/boost # Copyright 1999-2012 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/dev-libs/boost/ChangeLog,v 1.250 2012/06/14 18:48:26 jdhore Exp $ +# $Header: /var/cvsroot/gentoo-x86/dev-libs/boost/ChangeLog,v 1.251 2012/07/07 18:56:41 floppym Exp $ + +*boost-1.50.0 (07 Jul 2012) + + 07 Jul 2012; Mike Gilbert <floppym@gentoo.org> +boost-1.50.0.ebuild: + Version bump by Arfrever. 14 Jun 2012; Jeff Horelick <jdhore@gentoo.org> boost-1.48.0-r2.ebuild: marked x86 per bug 413815 @@ -1024,4 +1029,3 @@ 19 Oct 2002; Karl Trygve Kalleberg <markus-krainer@chello.at> boost-1.28.0.ebuild, files/digest-boost-1.28: Initial import. All code submitted by Markus Krainer <markus-krainer@chello.at>. Fixes #2851. - diff --git a/dev-libs/boost/Manifest b/dev-libs/boost/Manifest index d64364897cca..724a06d150eb 100644 --- a/dev-libs/boost/Manifest +++ b/dev-libs/boost/Manifest @@ -1,3 +1,6 @@ +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + AUX 1.35-remove-hardlink-creation.patch 547 SHA256 9b0515f343f0c8f7f0ce51e2c6f243edae0f3d5ce5df5b9f77a46b00041a134e SHA512 540a4dfdd56763a311ab6d8c56da276a11f37db87dbe29b37e622890c3151132a79380b6c87e8a02944f60aae78ad778ec34039246ebf1d76c9cc997cb4be15e WHIRLPOOL 71e8666b6c49532305916e4b25be429a2c8fc4bf1d8a1d1400bfbe4c7204b3922f20c850ee28ce028260ceab63826b28eb4f17587143cf3c205529e91fb10414 AUX boost-1.37.0-darwin-long-double.patch 556 SHA256 0beb2bf9ae43ad86c307873ab19b049152ef7798ba17523638cdb78017642c31 SHA512 ffb492e4d309cec365a446bdf4f62e0f2f8d650035ca439e0b070ae2b6bfa06e7ef17a508f5af9d7a12db5d015500934ec25dec2b0ee57a6c34c3a14fc591fc8 WHIRLPOOL 96a89ad8a9471931eb1b106fe13aab126e774dc86ec68113f2112b5cc98537cb7446450e1fb407d436b9181c4af99d832388a051ee3ad72cb227a7b7fc262fc0 AUX boost-1.41.0-fix-CRC-on-x64-during-gzip-decompression.patch 1030 SHA256 4b935fe0b3c9f3a2b1fcedda048b0ebc518531aa143f95cdd1b7fa51de1133d4 SHA512 4920ff78494f4f98a52be75f97bfba9d86cf87df387499a8564fc7f2dc64d3f0d88b9970bffe8db97feb98b4a2e54e33ef82e3a46a7c872b69760baa94976c14 WHIRLPOOL acd2560ccd5961a247dc1940e89ecb389c6f562fedff59cd939e2c0deba4c41d91042bd9aec5b9d08c015cf1f43fbcd91443aa06fa60d5c4adfcd74b3d560b3b @@ -46,6 +49,7 @@ DIST boost_1_46_1.tar.bz2 42001335 SHA256 e1dfbf42b16e5015c46b98e9899c423ca4d044 DIST boost_1_47_0.tar.bz2 45952657 SHA256 815a5d9faac4dbd523fbcf3fe1065e443c0bbf43427c44aa423422c6ec4c2e31 SHA512 ce7a1839edd2424f70e7109dc9f15900aceeba247cf73389a7301b8b769c426230c1d56a289746a35136ca19056a2de86d972c687b5069fe4678dfa5ad8d74b5 WHIRLPOOL 46ce4827719be5693ab1c2e70e62d1435c549b1ae3cf4d3c7208bf8a8c729a5c830350a53588acc85bdab0bba8a41304cf17cef6093c4ace56b2aa8e5cd7617b DIST boost_1_48_0.tar.bz2 48236989 SHA256 1bf254b2d69393ccd57a3cdd30a2f80318a005de8883a0792ed2f5e2598e5ada SHA512 f8188d65a47f1f6b34d154eb84ec3afb4ce8730fac0adc2bce629db4eb6994bb1192330b8e18a4d3509ff533a6f2bd91f59f4cb5d5c82b0453a99b2289c754e1 WHIRLPOOL a74ecca3fb611ebe7b3627aefe6a651ba2da8a8095ee1fa6e49b57fe6510cd947d81e5aea7ebb7523667a33aa9aa2783e182e39fc5f79f2bddc5faec80cff0e2 DIST boost_1_49_0.tar.bz2 48499961 SHA256 dd748a7f5507a7e7af74f452e1c52a64e651ed1f7263fce438a06641d2180d3c SHA512 9f6198270659df112a57731afe31cbf1012d103ba36ed82f6c3f1bdc0185ddb89dcc42c5dfb9ee3f95973d52999aad6c7509dc61125420d45146e39ebf20219d WHIRLPOOL c049b4212307b0208d0b37ac870a7cfb8562d2b685ce505e1971af7bc68ae9746b06ea80ddc52599ed4cbd6dc3305b5f8051cd771387412aaa1d2f8e939a48ba +DIST boost_1_50_0.tar.bz2 50786885 SHA256 c9ace2b8c81fa6703d1d17c7e478de3bc51101c5adbdeb3f6cb72cf3045a8529 SHA512 5909a2eca520a28af31de6a36c51f57b11fddcc0a51493a1e500ade00d9c4e78175c4892c04857ee385f3874f96e561b74b6427e1a155102e926421067d889fe WHIRLPOOL f5f5d9bc2e321da270dbaab04e0ec898240010720e77b362fac7266896a67b1eaa2e71a1d0e948057f55578dca5998e4faf8dc300e2c92608ee06316092bd08c EBUILD boost-1.35.0-r2.ebuild 7044 SHA256 4ba3c784bcf376934da015560896047753c1d855ced8389af0a05acf923566a3 SHA512 4c6aba43c3dbfaa856c948b7c138694e7d2c4a9181e8d12de144bdae80316fe9bb585211ce1867aeda08c64b5d187e9b700b61ee60599b2864fc1dde32d1b05d WHIRLPOOL 35f695700f5017a7368e89faf4d0f298c8139bf82e8b4ab677e38ea5ee6c7e4d1f2ef9ef46e9fcae722792900c61ebc82613b3cc4f576fb7192dc06e77896877 EBUILD boost-1.35.0-r5.ebuild 9542 SHA256 d2d2da1df8fededcfff4e1950481f377dea9094ba3ae31bcc33b82bae8acd8d1 SHA512 a8aef40a9670686e99d484a4de52b357bf5ad5cfd58866236343dcfcfe14f4108e2f3de7f94ad793fd21d3c81a7a5b288e497c3edc3cd14bf0f55cd62d010fb2 WHIRLPOOL 8cff31104117ba012da613f509b3eab255630f04bd5323475ff1e8a3e96965c1e8c28e7af1bddf7211a523356b82b5b73de774c00301bbefbe1a9040b2ac580b EBUILD boost-1.37.0-r1.ebuild 13015 SHA256 13960c13c1a53ba4fe13694ed0a19672e1a341d2674966884f316acf84fed9f2 SHA512 88bc807f5952a79f502bb19f82f3d3b520295f29a321b5cf2c4b61896d8f4ee7197e10eb51e93a1ae98897179d6dc02db1cfee9218b4443e238a3020d10155a8 WHIRLPOOL 157098c9446d7e6a34529fcbd8db91eccfc38a9c4a8f3f663e340aadca759a5b01e76aedcf6df560df882c8a2955a5edf77930a4314d5ba51694ed6a602c8ec2 @@ -60,5 +64,13 @@ EBUILD boost-1.47.0-r1.ebuild 15910 SHA256 f29520bcbd74fa8d75acfc6a1cd7f30329b40 EBUILD boost-1.47.0.ebuild 15907 SHA256 e79d396d32d06b5e3353664d3c95de05448b935d5a36a6df83d32b01047b7c46 SHA512 4ddc6f2cbac138e5f4a12359a945da7c70536d8580a2cddd5f0271d5a8de69080843eb9bc547f6726ca5016e01b504a175e1de55854074ff7c4131f5138eda95 WHIRLPOOL 86c566793087c5a4e3ceaa94744715bd118126019212ad4a0d596ec0373e3354e449272d5902a44d8a824d2ef1f738c17038e17bd69a33b07719475da688bb10 EBUILD boost-1.48.0-r2.ebuild 19766 SHA256 a13b1bee006c93ef799c9a885cec96a57ddb2cf9c49c585acc0a89ae3b329bb5 SHA512 3359d00a4113bd493989eefd5e6ebcf13245b98a8a4b34696d273627c0da3a962f312908565dbd413c53fb7005688cec64331fae42b89c7ac83561fb6a7a519d WHIRLPOOL 418fa99d7752b8cbb17ae477bfeb78ca583c62da790be5c8dd1ef2184db3db3ab957433f8e0e28afa194a1fb23b63b1e79be96be87d430cef279ef2f04ae1b73 EBUILD boost-1.49.0-r1.ebuild 19770 SHA256 e8e7239c815b6bdba7a550145d253f62ca9958956077c661cfdcd4ed021ee7f6 SHA512 9be17da0a83444dc543c4cc5ef6fd5096372b0eba872d0096517fde8c28219987c519a7dea4c1f921fd03d7274c11e25ae7da73c55b1b594f4f66363ccdb2e59 WHIRLPOOL 365a0c2d3f0ae4470d8d13c92d20e041aa4b8881cb1d829946e365d04185b9e21044f416b1548e527128379f8ff3924ce2a2bafa287ec9d215ba05345578d779 -MISC ChangeLog 40031 SHA256 b03b363d6b4581a09aff353e2eaa0bd95302f6973dc8a307eaa64bf0627a558a SHA512 7b278be5b44f9e4c28a0d3b265c1c5e4e98c31807093b11eecf59ee48f6b5510ee2bbf33c8f6fcab6d80d6b916d5c49dbf6a62b973d2d794b1ace0d999d1d9a1 WHIRLPOOL 50c8ea3ac0e75d32e5975bb2661c094fd6f19eaea24bcc688758d35c5ad2406be9c3a52ebd4ef9a38058f331c0ca45db00992d48a25a6329542f430d43452c17 +EBUILD boost-1.50.0.ebuild 19767 SHA256 485a0d40d3195c664c8bc6e294eb36c8ffe367541ac71bc424d9dfcc640ccfbc SHA512 8305b38a044bea58c7078fb19723363b00b78e7f8379ace6afc5cd5ce35e8788fb1694bae7e51470c8b2925369e5b7bc4d5d6e9bfa19992a5bc07a6399482248 WHIRLPOOL 4c60b0e2ccb05e89ec98dbc83ad31416ce6ca01a347c02fe9a4c99d4a402eb8ce5cf916580f6294796575cdcc7779b3ad31c539abb0f35bed19139cd78237186 +MISC ChangeLog 40160 SHA256 01ae61c55049c937443c3034ffeed10c140de7110247bed940e9a84809615857 SHA512 8fe3d2a14c12d1b00c7051191f9df87efd70dab5bc19e3da926e13cba8c91df98ab3605b79c4ea7a52b51d0054995001581f18bcb20308bbabe86fc335eef157 WHIRLPOOL 79f22fd2dd426ca011f6b05c42ff37db3ff5289fdb2a5cd042a73e5d6c92a4ff20c7da0b55b878be8c1c3c48da9160b0de52c291450d99e7d534fd14a3f75d29 MISC metadata.xml 773 SHA256 6563b78be463b4ae931f3dc07d5cd280281bf168c07ecea59fe5dc946f2d0ecf SHA512 d1a55fdca2a8bdb676dadbee840dfa3038664a8357ee7bd3557a9aea3c7b15ea6cd68be37feea0cc6fd611d2eb4cb6fed5d1bb8f4211df663777dd23136ba762 WHIRLPOOL 9370d9788bd5736e0d6dc3ab99f9adc8060ec0dd56346868956a1e180b36612d36b024206ba9211c7174fb231966f9bb68ab22c0a69860089d44bb078b957781 +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v2.0.19 (GNU/Linux) + +iF4EAREIAAYFAk/4hnAACgkQC77qH+pIQ6TsjgD7BtrbRoIovhXgWnpGTq2Kd342 +HSQxbTA1cqY8Pcr0V8oA/0+EGdbQ7XxWeGyupFuBfXnRwi8eWd4uJ6dfD6bS7XNW +=lSNX +-----END PGP SIGNATURE----- diff --git a/dev-libs/boost/boost-1.50.0.ebuild b/dev-libs/boost/boost-1.50.0.ebuild new file mode 100644 index 000000000000..de9704e56afc --- /dev/null +++ b/dev-libs/boost/boost-1.50.0.ebuild @@ -0,0 +1,613 @@ +# Copyright 1999-2012 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/dev-libs/boost/boost-1.50.0.ebuild,v 1.1 2012/07/07 18:56:41 floppym Exp $ + +EAPI="4" +PYTHON_DEPEND="python? *" +SUPPORT_PYTHON_ABIS="1" +RESTRICT_PYTHON_ABIS="*-jython *-pypy-*" + +inherit check-reqs flag-o-matic multilib python toolchain-funcs versionator + +MY_P=${PN}_$(replace_all_version_separators _) + +DESCRIPTION="Boost Libraries for C++" +HOMEPAGE="http://www.boost.org/" +SRC_URI="mirror://sourceforge/boost/${MY_P}.tar.bz2" + +LICENSE="Boost-1.0" +SLOT="$(get_version_component_range 1-2)" +KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~x86-fbsd" +IUSE="debug doc +eselect icu mpi python static-libs test tools" + +RDEPEND="icu? ( >=dev-libs/icu-3.3 ) + mpi? ( || ( sys-cluster/openmpi[cxx] sys-cluster/mpich2[cxx,threads] ) ) + sys-libs/zlib + !!<=dev-libs/boost-1.35.0-r2 + >=app-admin/eselect-boost-0.4" +DEPEND="${RDEPEND} + dev-util/boost-build:${SLOT}" + +S=${WORKDIR}/${MY_P} + +MAJOR_PV=$(replace_all_version_separators _ ${SLOT}) +BJAM="b2-${MAJOR_PV}" + +# Usage: +# _add_line <line-to-add> <profile> +# ... to add to specific profile +# or +# _add_line <line-to-add> +# ... to add to all profiles for which the use flag set + +_add_line() { + if [[ -z "$2" ]]; then + echo "${1}" >> "${D}usr/share/boost-eselect/profiles/${SLOT}/default" + if use debug; then + echo "${1}" >> "${D}usr/share/boost-eselect/profiles/${SLOT}/debug" + fi + else + echo "${1}" >> "${D}usr/share/boost-eselect/profiles/${SLOT}/${2}" + fi +} + +create_user-config.jam() { + local compiler compiler_version compiler_executable + + if [[ ${CHOST} == *-darwin* ]]; then + compiler="darwin" + compiler_version="$(gcc-fullversion)" + compiler_executable="$(tc-getCXX)" + else + compiler="gcc" + compiler_version="$(gcc-version)" + compiler_executable="$(tc-getCXX)" + fi + local mpi_configuration python_configuration + + if use mpi; then + mpi_configuration="using mpi ;" + fi + + if use python; then + python_configuration="using python : $(python_get_version) : /usr : $(python_get_includedir) : /usr/$(get_libdir) ;" + fi + + # The debug-symbols=none and optimization=none are not official upstream flags but a Gentoo + # specific patch to make sure that all our CFLAGS/CXXFLAGS/LDFLAGS are being respected. + # Using optimization=off would for example add "-O0" and override "-O2" set by the user. + # Please take a look at the boost-build ebuild for more information. + cat > user-config.jam << __EOF__ +variant gentoorelease : release : <optimization>none <debug-symbols>none ; +variant gentoodebug : debug : <optimization>none ; + +using ${compiler} : ${compiler_version} : ${compiler_executable} : <cflags>"${CFLAGS}" <cxxflags>"${CXXFLAGS}" <linkflags>"${LDFLAGS}" ; +${mpi_configuration} +${python_configuration} +__EOF__ +} + +pkg_pretend() { + if use test; then + CHECKREQS_DISK_BUILD="15G" check-reqs_pkg_pretend + + ewarn "The tests may take several hours on a recent machine" + ewarn "but they will not fail (unless something weird happens ;-)" + ewarn "This is because the tests depend on the used compiler version" + ewarn "and the platform and upstream says that this is normal." + ewarn "If you are interested in the results, please take a look at the" + ewarn "generated results page:" + ewarn " ${ROOT}usr/share/doc/${PF}/status/cs-$(uname).html" + fi +} + +pkg_setup() { + if use python; then + python_pkg_setup + fi + + if use debug; then + ewarn "The debug USE flag means that a second set of the boost libraries" + ewarn "will be built containing debug symbols. You'll be able to select them" + ewarn "using the boost-eselect module. But even though the optimization flags" + ewarn "you might have set are not stripped, there will be a performance" + ewarn "penalty and linking other packages against the debug version" + ewarn "of boost is _not_ recommended." + fi +} + +src_prepare() { + epatch "${FILESDIR}/${PN}-1.48.0-mpi_python3.patch" + epatch "${FILESDIR}/${PN}-1.48.0-respect_python-buildid.patch" + epatch "${FILESDIR}/${PN}-1.48.0-support_dots_in_python-buildid.patch" + epatch "${FILESDIR}/${PN}-1.48.0-no_strict_aliasing_python2.patch" + epatch "${FILESDIR}/${PN}-1.48.0-disable_libboost_python3.patch" + epatch "${FILESDIR}/${PN}-1.48.0-python_linking.patch" + epatch "${FILESDIR}/${PN}-1.48.0-disable_icu_rpath.patch" + epatch "${FILESDIR}/remove-toolset-1.48.0.patch" +} + +src_configure() { + OPTIONS="" + + 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 + + # bug 298489 + if use ppc || use ppc64; then + [[ $(gcc-version) > 4.3 ]] && append-flags -mno-altivec + fi + + use icu && OPTIONS+=" -sICU_PATH=/usr" + use icu || OPTIONS+=" --disable-icu boost.locale.icu=off" + use mpi || OPTIONS+=" --without-mpi" + use python || OPTIONS+=" --without-python" + + # https://svn.boost.org/trac/boost/attachment/ticket/2597/add-disable-long-double.patch + if use sparc || { use mips && [[ ${ABI} = "o32" ]]; } || use hppa || use arm || use x86-fbsd || use sh; then + OPTIONS+=" --disable-long-double" + fi + + OPTIONS+=" pch=off --boost-build=/usr/share/boost-build-${MAJOR_PV} --prefix=\"${D}usr\" --layout=versioned" + + if use static-libs; then + LINK_OPTS="link=shared,static" + LIBRARY_TARGETS="*.a *$(get_libname)" + else + LINK_OPTS="link=shared" + # There is no dynamically linked version of libboost_test_exec_monitor and libboost_exception. + LIBRARY_TARGETS="libboost_test_exec_monitor*.a libboost_exception*.a *$(get_libname)" + fi +} + +src_compile() { + local jobs + jobs=$( echo " ${MAKEOPTS} " | \ + sed -e 's/ --jobs[= ]/ -j /g' \ + -e 's/ -j \([1-9][0-9]*\)/ -j\1/g' \ + -e 's/ -j\>/ -j1/g' | \ + ( while read -d ' ' j; do if [[ "${j#-j}" = "$j" ]]; then continue; fi; jobs="${j#-j}"; done; echo ${jobs} ) ) + if [[ "${jobs}" != "" ]]; then NUMJOBS="-j"${jobs}; fi + + export BOOST_ROOT="${S}" + PYTHON_DIRS="" + MPI_PYTHON_MODULE="" + + building() { + create_user-config.jam + + einfo "Using the following command to build:" + einfo "${BJAM} ${NUMJOBS} -q -d+2 gentoorelease --user-config=user-config.jam ${OPTIONS} threading=single,multi ${LINK_OPTS} runtime-link=shared $(use python && echo --python-buildid=${PYTHON_ABI})" + + ${BJAM} ${NUMJOBS} -q -d+2 \ + gentoorelease \ + --user-config=user-config.jam \ + ${OPTIONS} \ + threading=single,multi ${LINK_OPTS} runtime-link=shared \ + $(use python && echo --python-buildid=${PYTHON_ABI}) \ + || die "Building of Boost libraries failed" + + # ... and do the whole thing one more time to get the debug libs + if use debug; then + einfo "Using the following command to build:" + einfo "${BJAM} ${NUMJOBS} -q -d+2 gentoodebug --user-config=user-config.jam ${OPTIONS} threading=single,multi ${LINK_OPTS} runtime-link=shared --buildid=debug $(use python && echo --python-buildid=${PYTHON_ABI})" + + ${BJAM} ${NUMJOBS} -q -d+2 \ + gentoodebug \ + --user-config=user-config.jam \ + ${OPTIONS} \ + threading=single,multi ${LINK_OPTS} runtime-link=shared \ + --buildid=debug \ + $(use python && echo --python-buildid=${PYTHON_ABI}) \ + || die "Building of Boost debug libraries failed" + fi + + if use python; then + if [[ -z "${PYTHON_DIRS}" ]]; then + PYTHON_DIRS="$(find bin.v2/libs -name python | sort)" + else + if [[ "${PYTHON_DIRS}" != "$(find bin.v2/libs -name python | sort)" ]]; then + die "Inconsistent structure of build directories" + fi + fi + + local dir + for dir in ${PYTHON_DIRS}; do + mv ${dir} ${dir}-${PYTHON_ABI} || die "Renaming of '${dir}' to '${dir}-${PYTHON_ABI}' failed" + done + + if use mpi; then + if [[ -z "${MPI_PYTHON_MODULE}" ]]; then + MPI_PYTHON_MODULE="$(find bin.v2/libs/mpi/build/*/gentoorelease -name mpi.so)" + if [[ "$(echo "${MPI_PYTHON_MODULE}" | wc -l)" -ne 1 ]]; then + die "Multiple mpi.so files found" + fi + else + if [[ "${MPI_PYTHON_MODULE}" != "$(find bin.v2/libs/mpi/build/*/gentoorelease -name mpi.so)" ]]; then + die "Inconsistent structure of build directories" + fi + fi + + mv stage/lib/mpi.so stage/lib/mpi.so-${PYTHON_ABI} || die "Renaming of 'stage/lib/mpi.so' to 'stage/lib/mpi.so-${PYTHON_ABI}' failed" + fi + fi + } + if use python; then + python_execute_function building + else + building + fi + + if use tools; then + pushd tools > /dev/null || die + einfo "Using the following command to build the tools:" + einfo "${BJAM} ${NUMJOBS} -q -d+2 gentoorelease --user-config=../user-config.jam ${OPTIONS}" + + ${BJAM} ${NUMJOBS} -q -d+2\ + gentoorelease \ + --user-config=../user-config.jam \ + ${OPTIONS} \ + || die "Building of Boost tools failed" + popd > /dev/null || die + fi +} + +src_install () { + dodir /usr/share/boost-eselect/profiles/${SLOT} + touch "${D}usr/share/boost-eselect/profiles/${SLOT}/default" || die + if use debug; then + touch "${D}usr/share/boost-eselect/profiles/${SLOT}/debug" || die + fi + + if use mpi && use python; then + _add_line "python_modules=\"" + fi + + installation() { + create_user-config.jam + + if use python; then + local dir + for dir in ${PYTHON_DIRS}; do + cp -pr ${dir}-${PYTHON_ABI} ${dir} || die "Copying of '${dir}-${PYTHON_ABI}' to '${dir}' failed" + done + + if use mpi; then + cp -p stage/lib/mpi.so-${PYTHON_ABI} "${MPI_PYTHON_MODULE}" || die "Copying of 'stage/lib/mpi.so-${PYTHON_ABI}' to '${MPI_PYTHON_MODULE}' failed" + cp -p stage/lib/mpi.so-${PYTHON_ABI} stage/lib/mpi.so || die "Copying of 'stage/lib/mpi.so-${PYTHON_ABI}' to 'stage/lib/mpi.so' failed" + fi + fi + + einfo "Using the following command to install:" + einfo "${BJAM} -q -d+2 gentoorelease --user-config=user-config.jam ${OPTIONS} threading=single,multi ${LINK_OPTS} runtime-link=shared --includedir=\"${D}usr/include\" --libdir=\"${D}usr/$(get_libdir)\" $(use python && echo --python-buildid=${PYTHON_ABI}) install" + + ${BJAM} -q -d+2 \ + gentoorelease \ + --user-config=user-config.jam \ + ${OPTIONS} \ + threading=single,multi ${LINK_OPTS} runtime-link=shared \ + --includedir="${D}usr/include" \ + --libdir="${D}usr/$(get_libdir)" \ + $(use python && echo --python-buildid=${PYTHON_ABI}) \ + install || die "Installation of Boost libraries failed" + + if use debug; then + einfo "Using the following command to install:" + einfo "${BJAM} -q -d+2 gentoodebug --user-config=user-config.jam ${OPTIONS} threading=single,multi ${LINK_OPTS} runtime-link=shared --includedir=\"${D}usr/include\" --libdir=\"${D}usr/$(get_libdir)\" --buildid=debug $(use python && echo --python-buildid=${PYTHON_ABI})" + + ${BJAM} -q -d+2 \ + gentoodebug \ + --user-config=user-config.jam \ + ${OPTIONS} \ + threading=single,multi ${LINK_OPTS} runtime-link=shared \ + --includedir="${D}usr/include" \ + --libdir="${D}usr/$(get_libdir)" \ + --buildid=debug \ + $(use python && echo --python-buildid=${PYTHON_ABI}) \ + install || die "Installation of Boost debug libraries failed" + fi + + if use python; then + rm -r ${PYTHON_DIRS} || die + + # Move mpi.so Python module to Python site-packages directory and make sure it is slotted. + if use mpi; then + mkdir -p "${D}$(python_get_sitedir)/boost_${MAJOR_PV}" || die + mv "${D}usr/$(get_libdir)/mpi.so" "${D}$(python_get_sitedir)/boost_${MAJOR_PV}" || die + cat << EOF > "${D}$(python_get_sitedir)/boost_${MAJOR_PV}/__init__.py" || die +import sys +if sys.platform.startswith('linux'): + import DLFCN + flags = sys.getdlopenflags() + sys.setdlopenflags(DLFCN.RTLD_NOW | DLFCN.RTLD_GLOBAL) + from . import mpi + sys.setdlopenflags(flags) + del DLFCN, flags +else: + from . import mpi +del sys +EOF + _add_line "$(python_get_sitedir)/mpi.py:boost_${MAJOR_PV}.mpi" + fi + fi + } + if use python; then + python_execute_function installation + else + installation + fi + + if use mpi && use python; then + _add_line "\"" + fi + + use python || rm -rf "${D}usr/include/boost-${MAJOR_PV}/boost"/python* || die + + if use doc; then + find libs/*/* -iname "test" -or -iname "src" | xargs rm -rf + dohtml \ + -A pdf,txt,cpp,hpp \ + *.{htm,html,png,css} \ + -r doc + dohtml \ + -A pdf,txt \ + -r tools + insinto /usr/share/doc/${PF}/html + doins -r libs + doins -r more + + # To avoid broken links + insinto /usr/share/doc/${PF}/html + doins LICENSE_1_0.txt + + dosym /usr/include/boost-${MAJOR_PV}/boost /usr/share/doc/${PF}/html/boost + fi + + pushd "${D}usr/$(get_libdir)" > /dev/null || die + + # Remove (unversioned) symlinks + # And check for what we remove to catch bugs + # got a better idea how to do it? tell me! + local f + for f in $(ls -1 ${LIBRARY_TARGETS} | grep -v "${MAJOR_PV}"); do + if [[ ! -h "${f}" ]]; then + eerror "Tried to remove '${f}' which is a regular file instead of a symlink" + die "Slotting/naming of the libraries broken!" + fi + rm "${f}" || die + done + + # The threading libs obviously always gets the "-mt" (multithreading) tag + # some packages seem to have a problem with it. Creating symlinks... + + if use static-libs; then + THREAD_LIBS="libboost_thread-mt-${MAJOR_PV}.a libboost_thread-mt-${MAJOR_PV}$(get_libname)" + else + THREAD_LIBS="libboost_thread-mt-${MAJOR_PV}$(get_libname)" + fi + local lib + for lib in ${THREAD_LIBS}; do + dosym ${lib} "/usr/$(get_libdir)/$(sed -e 's/-mt//' <<< ${lib})" + done + + # The same goes for the mpi libs + if use mpi; then + if use static-libs; then + MPI_LIBS="libboost_mpi-mt-${MAJOR_PV}.a libboost_mpi-mt-${MAJOR_PV}$(get_libname)" + else + MPI_LIBS="libboost_mpi-mt-${MAJOR_PV}$(get_libname)" + fi + local lib + for lib in ${MPI_LIBS}; do + dosym ${lib} "/usr/$(get_libdir)/$(sed -e 's/-mt//' <<< ${lib})" + done + fi + + if use debug; then + if use static-libs; then + THREAD_DEBUG_LIBS="libboost_thread-mt-${MAJOR_PV}-debug$(get_libname) libboost_thread-mt-${MAJOR_PV}-debug.a" + else + THREAD_DEBUG_LIBS="libboost_thread-mt-${MAJOR_PV}-debug$(get_libname)" + fi + + local lib + for lib in ${THREAD_DEBUG_LIBS}; do + dosym ${lib} "/usr/$(get_libdir)/$(sed -e 's/-mt//' <<< ${lib})" + done + + if use mpi; then + if use static-libs; then + MPI_DEBUG_LIBS="libboost_mpi-mt-${MAJOR_PV}-debug.a libboost_mpi-mt-${MAJOR_PV}-debug$(get_libname)" + else + MPI_DEBUG_LIBS="libboost_mpi-mt-${MAJOR_PV}-debug$(get_libname)" + fi + + local lib + for lib in ${MPI_DEBUG_LIBS}; do + dosym ${lib} "/usr/$(get_libdir)/$(sed -e 's/-mt//' <<< ${lib})" + done + fi + fi + + # Create a subdirectory with completely unversioned symlinks + # and store the names in the profiles-file for eselect + dodir /usr/$(get_libdir)/boost-${MAJOR_PV} + + _add_line "libs=\"" default + local f + for f in $(ls -1 ${LIBRARY_TARGETS} | grep -v debug); do + dosym ../${f} /usr/$(get_libdir)/boost-${MAJOR_PV}/${f/-${MAJOR_PV}} + _add_line "/usr/$(get_libdir)/${f}" default + done + _add_line "\"" default + + if use debug; then + _add_line "libs=\"" debug + dodir /usr/$(get_libdir)/boost-${MAJOR_PV}-debug + local f + for f in $(ls -1 ${LIBRARY_TARGETS} | grep debug); do + dosym ../${f} /usr/$(get_libdir)/boost-${MAJOR_PV}-debug/${f/-${MAJOR_PV}-debug} + _add_line "/usr/$(get_libdir)/${f}" debug + done + _add_line "\"" debug + + _add_line "includes=\"/usr/include/boost-${MAJOR_PV}/boost\"" debug + _add_line "suffix=\"-debug\"" debug + fi + + _add_line "includes=\"/usr/include/boost-${MAJOR_PV}/boost\"" default + + popd > /dev/null || die + + if use tools; then + pushd dist/bin > /dev/null || die + # Append version postfix to binaries for slotting + _add_line "bins=\"" + local b + for b in *; do + newbin "${b}" "${b}-${MAJOR_PV}" + _add_line "/usr/bin/${b}-${MAJOR_PV}" + done + _add_line "\"" + popd > /dev/null || die + + pushd dist > /dev/null || die + insinto /usr/share + doins -r share/boostbook + # Append version postfix for slotting + mv "${D}usr/share/boostbook" "${D}usr/share/boostbook-${MAJOR_PV}" || die + _add_line "dirs=\"/usr/share/boostbook-${MAJOR_PV}\"" + popd > /dev/null || die + fi + + pushd status > /dev/null || die + if [[ -f regress.log ]]; then + docinto status + dohtml *.html ../boost.png + dodoc regress.log + fi + popd > /dev/null || die + + # 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 +} + +src_test() { + testing() { + if use python; then + local dir + for dir in ${PYTHON_DIRS}; do + cp -pr ${dir}-${PYTHON_ABI} ${dir} || die "Copying of '${dir}-${PYTHON_ABI}' to '${dir}' failed" + done + + if use mpi; then + cp -p stage/lib/mpi.so-${PYTHON_ABI} "${MPI_PYTHON_MODULE}" || die "Copying of 'stage/lib/mpi.so-${PYTHON_ABI}' to '${MPI_PYTHON_MODULE}' failed" + cp -p stage/lib/mpi.so-${PYTHON_ABI} stage/lib/mpi.so || die "Copying of 'stage/lib/mpi.so-${PYTHON_ABI}' to 'stage/lib/mpi.so' failed" + fi + fi + + pushd tools/regression/build > /dev/null || die + einfo "Using the following command to build test helpers:" + einfo "${BJAM} -q -d+2 gentoorelease --user-config=../../../user-config.jam ${OPTIONS} process_jam_log compiler_status" + + ${BJAM} -q -d+2 \ + gentoorelease \ + --user-config=../../../user-config.jam \ + ${OPTIONS} \ + process_jam_log compiler_status \ + || die "Building of regression test helpers failed" + + popd > /dev/null || die + pushd status > /dev/null || die + + # Some of the test-checks seem to rely on regexps + export LC_ALL="C" + + # The following is largely taken from tools/regression/run_tests.sh, + # but adapted to our needs. + + # Run the tests & write them into a file for postprocessing + einfo "Using the following command to test:" + einfo "${BJAM} --user-config=../user-config.jam ${OPTIONS} --dump-tests" + + ${BJAM} \ + --user-config=../user-config.jam \ + ${OPTIONS} \ + --dump-tests 2>&1 | tee regress.log || die + + # Postprocessing + cat regress.log | "$(find ../tools/regression/build/bin/gcc-$(gcc-version)/gentoorelease -name process_jam_log)" --v2 + if test $? != 0; then + die "Postprocessing the build log failed" + fi + + cat > comment.html <<- __EOF__ + <p>Tests are run on a <a href="http://www.gentoo.org">Gentoo</a> system.</p> +__EOF__ + + # Generate the build log html summary page + "$(find ../tools/regression/build/bin/gcc-$(gcc-version)/gentoorelease -name compiler_status)" --v2 \ + --comment comment.html "${S}" \ + cs-$(uname).html cs-$(uname)-links.html + if test $? != 0; then + die "Generating the build log html summary page failed" + fi + + # And do some cosmetic fixes :) + sed -i -e 's|http://www.boost.org/boost.png|boost.png|' *.html || die + + popd > /dev/null || die + + if use python; then + rm -r ${PYTHON_DIRS} || die + fi + } + if use python; then + python_execute_function -f -q testing + else + testing + fi +} + +pkg_postinst() { + if use eselect; then + eselect boost update || ewarn "eselect boost update failed." + fi + + if [[ ! -h "${ROOT}etc/eselect/boost/active" ]]; then + elog "No active boost version found. Calling eselect to select one..." + eselect boost update || ewarn "eselect boost update failed." + fi +} |