diff options
author | Markos Chandras <hwoarang@gentoo.org> | 2012-01-23 22:23:22 +0000 |
---|---|---|
committer | Markos Chandras <hwoarang@gentoo.org> | 2012-01-23 22:23:22 +0000 |
commit | eb20f5b1a55c4e72a74837bc96ff30f5103d8334 (patch) | |
tree | 129b4b607640b682dbe4c5a4ce341d2dbd5a5b5b /dev-libs | |
parent | Missing app-arch/unrar DEPEND for Tevii_linuxdriver_0815.rar wrt #303187 by A... (diff) | |
download | gentoo-2-eb20f5b1a55c4e72a74837bc96ff30f5103d8334.tar.gz gentoo-2-eb20f5b1a55c4e72a74837bc96ff30f5103d8334.tar.bz2 gentoo-2-eb20f5b1a55c4e72a74837bc96ff30f5103d8334.zip |
Multiple fixes. Please read the ChangeLog to see what changed
(Portage version: 2.2.0_alpha84/cvs/Linux x86_64)
Diffstat (limited to 'dev-libs')
-rw-r--r-- | dev-libs/boost/ChangeLog | 21 | ||||
-rw-r--r-- | dev-libs/boost/boost-1.48.0-r1.ebuild | 608 | ||||
-rw-r--r-- | dev-libs/boost/boost-1.48.0.ebuild | 486 | ||||
-rw-r--r-- | dev-libs/boost/files/boost-1.48.0-disable_icu_rpath.patch | 29 | ||||
-rw-r--r-- | dev-libs/boost/files/boost-1.48.0-disable_libboost_python3.patch | 62 | ||||
-rw-r--r-- | dev-libs/boost/files/boost-1.48.0-mpi_python3.patch | 95 | ||||
-rw-r--r-- | dev-libs/boost/files/boost-1.48.0-no_strict_aliasing_python2.patch | 23 | ||||
-rw-r--r-- | dev-libs/boost/files/boost-1.48.0-python_linking.patch | 24 | ||||
-rw-r--r-- | dev-libs/boost/files/boost-1.48.0-respect_python-buildid.patch | 69 | ||||
-rw-r--r-- | dev-libs/boost/files/boost-1.48.0-support_dots_in_python-buildid.patch | 22 | ||||
-rw-r--r-- | dev-libs/boost/files/remove-toolset-1.48.0.patch | 4 |
11 files changed, 954 insertions, 489 deletions
diff --git a/dev-libs/boost/ChangeLog b/dev-libs/boost/ChangeLog index eac7a2d20189..30952e33dfc9 100644 --- a/dev-libs/boost/ChangeLog +++ b/dev-libs/boost/ChangeLog @@ -1,6 +1,25 @@ # 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.234 2012/01/08 11:42:29 hwoarang Exp $ +# $Header: /var/cvsroot/gentoo-x86/dev-libs/boost/ChangeLog,v 1.235 2012/01/23 22:23:22 hwoarang Exp $ + +*boost-1.48.0-r1 (23 Jan 2012) + + 23 Jan 2012; Markos Chandras <hwoarang@gentoo.org> -boost-1.48.0.ebuild, + +boost-1.48.0-r1.ebuild, +files/boost-1.48.0-disable_icu_rpath.patch, + +files/boost-1.48.0-disable_libboost_python3.patch, + +files/boost-1.48.0-mpi_python3.patch, + +files/boost-1.48.0-no_strict_aliasing_python2.patch, + +files/boost-1.48.0-python_linking.patch, + +files/boost-1.48.0-respect_python-buildid.patch, + +files/boost-1.48.0-support_dots_in_python-buildid.patch, + files/remove-toolset-1.48.0.patch: + Support for installation for multiple Python ABIs (bug #312155). Link + libboost_python-*, libboost_mpi_python-* and mpi.so against libpythonX.Y.so + (bug #312155). Fix building of mpi.so with Python 3 (bug #295705). Use + -fno-strict-aliasing only for libboost_python-2.*. Delete /usr/bin from rpath + of all libraries with USE="icu". All changes backported from Progress + Overlay. Ebuild and patches by Arfrever. + See: http://archives.gentoo.org/gentoo-dev/msg_ab39d8366b714ecacfc7fa64cd48ad00.xml 08 Jan 2012; Markos Chandras <hwoarang@gentoo.org> boost-1.45.0.ebuild, boost-1.46.1-r1.ebuild, boost-1.47.0-r1.ebuild, boost-1.47.0.ebuild, diff --git a/dev-libs/boost/boost-1.48.0-r1.ebuild b/dev-libs/boost/boost-1.48.0-r1.ebuild new file mode 100644 index 000000000000..5e043fbd1020 --- /dev/null +++ b/dev-libs/boost/boost-1.48.0-r1.ebuild @@ -0,0 +1,608 @@ +# Copyright owners: Gentoo Foundation +# Arfrever Frehtes Taifersar Arahesis +# Distributed under the terms of the GNU General Public License v2 + +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 ~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.3" +DEPEND="${RDEPEND} + >=dev-util/boost-build-1.48.0-r1:${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" + ebeep 5 + 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}/${P}-mpi_python3.patch" + epatch "${FILESDIR}/${P}-respect_python-buildid.patch" + epatch "${FILESDIR}/${P}-support_dots_in_python-buildid.patch" + epatch "${FILESDIR}/${P}-no_strict_aliasing_python2.patch" + epatch "${FILESDIR}/${P}-disable_libboost_python3.patch" + epatch "${FILESDIR}/${P}-python_linking.patch" + epatch "${FILESDIR}/${P}-disable_icu_rpath.patch" + epatch "${FILESDIR}/remove-toolset-${PV}.patch" + + # This enables building the boost.random library with /dev/urandom support + if [[ -e /dev/urandom ]]; then + mkdir -p libs/random/build || die + cp "${FILESDIR}/random-Jamfile-${PV}" libs/random/build/Jamfile.v2 || die + fi +} + +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" + 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=\"" + 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 + touch "${D}$(python_get_sitedir)/boost_${MAJOR_PV}/__init__.py" || die + _add_line "$(python_get_sitedir)/boost_${MAJOR_PV}/mpi.so" + 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 | tools/regression/build/bin/gcc-$(gcc-version)/gentoorelease/pch-off/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 + tools/regression/build/bin/gcc-$(gcc-version)/gentoorelease/pch-off/compiler_status --v2 \ + --comment comment.html .. \ + 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 +} diff --git a/dev-libs/boost/boost-1.48.0.ebuild b/dev-libs/boost/boost-1.48.0.ebuild deleted file mode 100644 index ff7bc7581988..000000000000 --- a/dev-libs/boost/boost-1.48.0.ebuild +++ /dev/null @@ -1,486 +0,0 @@ -# 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.48.0.ebuild,v 1.2 2012/01/08 11:42:28 hwoarang Exp $ - -EAPI="2" - -inherit python flag-o-matic multilib toolchain-funcs versionator check-reqs - -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)" -IUSE="debug doc +eselect icu mpi python static-libs test tools" - -KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~x86-fbsd" - -RDEPEND="icu? ( >=dev-libs/icu-3.3 ) - mpi? ( || ( sys-cluster/openmpi[cxx] sys-cluster/mpich2[cxx,threads] ) ) - sys-libs/zlib - python? ( dev-lang/python ) - !!<=dev-libs/boost-1.35.0-r2 - >=app-admin/eselect-boost-0.3" -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" - use debug && echo "${1}" >> "${D}/usr/share/boost-eselect/profiles/${SLOT}/debug" - else - echo "${1}" >> "${D}/usr/share/boost-eselect/profiles/${SLOT}/${2}" - fi -} - -pkg_setup() { - # It doesn't compile with USE="python mpi" and python-3 (bug 295705) - if use python && use mpi ; then - if [[ "$(python_get_version --major)" != "2" ]]; then - eerror "The Boost.MPI python bindings do not support any other python version" - eerror "than 2.x. Please either use eselect to select a python 2.x version or" - eerror "disable the python and/or mpi use flag for =${CATEGORY}/${PF}." - die "unsupported python version" - fi - fi - - if use test ; then - CHECKREQS_DISK_BUILD="15G" - check_reqs - - 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" - ebeep 5 - - 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}/remove-toolset-${PV}.patch" - # This enables building the boost.random library with /dev/urandom support - if [[ -e /dev/urandom ]] ; then - mkdir -p libs/random/build || die - cp "${FILESDIR}/random-Jamfile-${PV}" libs/random/build/Jamfile.v2 || die - fi -} - -src_configure() { - einfo "Writing new user-config.jam" - - local compiler compilerVersion compilerExecutable mpi - if [[ ${CHOST} == *-darwin* ]] ; then - compiler=darwin - compilerVersion=$(gcc-fullversion) - compilerExecutable=$(tc-getCXX) - # 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 - else - compiler=gcc - compilerVersion=$(gcc-version) - compilerExecutable=$(tc-getCXX) - fi - - # Using -fno-strict-aliasing to prevent possible creation of invalid code. - append-flags -fno-strict-aliasing - - # bug 298489 - if use ppc || use ppc64 ; then - [[ $(gcc-version) > 4.3 ]] && append-flags -mno-altivec - fi; - - use mpi && mpi="using mpi ;" - - if use python ; then - pystring="using python : $(python_get_version) : /usr : $(python_get_includedir) : $(python_get_libdir) ;" - fi - - cat > "${S}/user-config.jam" << __EOF__ - -variant gentoorelease : release : <optimization>none <debug-symbols>none ; -variant gentoodebug : debug : <optimization>none ; - -using ${compiler} : ${compilerVersion} : ${compilerExecutable} : <cxxflags>"${CXXFLAGS}" <linkflags>"${LDFLAGS}" ; - -${pystring} - -${mpi} - -__EOF__ - - # Maintainer information: - # The debug-symbols=none and optimization=none - # are not official upstream flags but a Gentoo - # specific patch to make sure that all our - # 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 infomration. - - use icu && OPTIONS="-sICU_PATH=/usr" - use icu || OPTIONS="--disable-icu" - use mpi || OPTIONS="${OPTIONS} --without-mpi" - use python || OPTIONS="${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="${OPTIONS} --disable-long-double" - fi - - OPTIONS="${OPTIONS} pch=off --user-config=\"${S}/user-config.jam\" --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 dynamicly 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() { - 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}" - - einfo "Using the following command to build: " - einfo "${BJAM} ${NUMJOBS} -q -d+2 gentoorelease ${OPTIONS} threading=single,multi ${LINK_OPTS} runtime-link=shared" - - ${BJAM} ${NUMJOBS} -q -d+2 \ - gentoorelease \ - ${OPTIONS} \ - threading=single,multi ${LINK_OPTS} runtime-link=shared \ - || die "building boost 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 ${OPTIONS} threading=single,multi ${LINK_OPTS} runtime-link=shared --buildid=debug" - - ${BJAM} ${NUMJOBS} -q -d+2 \ - gentoodebug \ - ${OPTIONS} \ - threading=single,multi ${LINK_OPTS} runtime-link=shared \ - --buildid=debug \ - || die "building boost failed" - fi - - if use tools; then - cd "${S}/tools/" - einfo "Using the following command to build the tools: " - einfo "${BJAM} ${NUMJOBS} -q -d+2 gentoorelease ${OPTIONS}" - - ${BJAM} ${NUMJOBS} -q -d+2\ - gentoorelease \ - ${OPTIONS} \ - || die "building tools failed" - fi - -} - -src_install () { - export BOOST_ROOT="${S}" - - einfo "Using the following command to install: " - einfo "${BJAM} -q -d+2 gentoorelease ${OPTIONS} threading=single,multi ${LINK_OPTS} runtime-link=shared --includedir=\"${D}/usr/include\" --libdir=\"${D}/usr/$(get_libdir)\" install" - - ${BJAM} -q -d+2 \ - gentoorelease \ - ${OPTIONS} \ - threading=single,multi ${LINK_OPTS} runtime-link=shared \ - --includedir="${D}/usr/include" \ - --libdir="${D}/usr/$(get_libdir)" \ - install || die "install failed for options '${OPTIONS}'" - - if use debug ; then - einfo "Using the following command to install: " - einfo "${BJAM} -q -d+2 gentoodebug ${OPTIONS} threading=single,multi ${LINK_OPTS} runtime-link=shared --includedir=\"${D}/usr/include\" --libdir=\"${D}/usr/$(get_libdir)\" --buildid=debug" - - ${BJAM} -q -d+2 \ - gentoodebug \ - ${OPTIONS} \ - threading=single,multi ${LINK_OPTS} runtime-link=shared \ - --includedir="${D}/usr/include" \ - --libdir="${D}/usr/$(get_libdir)" \ - --buildid=debug \ - install || die "install failed for options '${OPTIONS}'" - fi - - use python || rm -rf "${D}/usr/include/boost-${MAJOR_PV}/boost"/python* || die - - dodir /usr/share/boost-eselect/profiles/${SLOT} || die - 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 - - # Move the mpi.so to the right place and make sure it's slotted - if use mpi && use python; 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 - touch "${D}$(python_get_sitedir)/boost_${MAJOR_PV}/__init__.py" || die - _add_line "python=\"$(python_get_sitedir)/boost_${MAJOR_PV}/mpi.so\"" - fi - - 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 || die - dohtml \ - -A pdf,txt \ - -r tools || die - insinto /usr/share/doc/${PF}/html - doins -r libs || die - doins -r more || die - - # To avoid broken links - insinto /usr/share/doc/${PF}/html - doins LICENSE_1_0.txt || die - - dosym /usr/include/boost-${MAJOR_PV}/boost /usr/share/doc/${PF}/html/boost || die - fi - - cd "${D}/usr/$(get_libdir)" || die - - # Remove (unversioned) symlinks - # And check for what we remove to catch bugs - # got a better idea how to do it? tell me! - for f in $(ls -1 ${LIBRARY_TARGETS} | grep -v "${MAJOR_PV}") ; do - if [ ! -h "${f}" ] ; then - eerror "Ups, tried to remove '${f}' which is a a real file instead of a symlink" - die "slotting/naming of the libs 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 - for lib in ${THREAD_LIBS} ; do - dosym ${lib} "/usr/$(get_libdir)/$(sed -e 's/-mt//' <<< ${lib})" || die - 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 - for lib in ${MPI_LIBS} ; do - dosym ${lib} "/usr/$(get_libdir)/$(sed -e 's/-mt//' <<< ${lib})" || die - 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 - - for lib in ${THREAD_DEBUG_LIBS} ; do - dosym ${lib} "/usr/$(get_libdir)/$(sed -e 's/-mt//' <<< ${lib})" || die - 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 - - for lib in ${MPI_DEBUG_LIBS} ; do - dosym ${lib} "/usr/$(get_libdir)/$(sed -e 's/-mt//' <<< ${lib})" || die - 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} || die - - _add_line "libs=\"" default - for f in $(ls -1 ${LIBRARY_TARGETS} | grep -v debug) ; do - dosym ../${f} /usr/$(get_libdir)/boost-${MAJOR_PV}/${f/-${MAJOR_PV}} || die - _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 || die - for f in $(ls -1 ${LIBRARY_TARGETS} | grep debug) ; do - dosym ../${f} /usr/$(get_libdir)/boost-${MAJOR_PV}-debug/${f/-${MAJOR_PV}-debug} || die - _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 - - if use tools; then - cd "${S}/dist/bin" || die - # Append version postfix to binaries for slotting - _add_line "bins=\"" - for b in * ; do - newbin "${b}" "${b}-${MAJOR_PV}" || die - _add_line "/usr/bin/${b}-${MAJOR_PV}" - done - _add_line "\"" - - cd "${S}/dist" || die - insinto /usr/share || die - doins -r share/boostbook || die - # 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}\"" - fi - - cd "${S}/status" || die - if [ -f regress.log ] ; then - docinto status || die - dohtml *.html ../boost.png || die - dodoc regress.log || die - fi - - use python && python_need_rebuild - - # 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. - [[ -z ${ED+set} ]] && local ED=${D%/}${EPREFIX}/ - if [[ ${CHOST} == *-darwin* ]] ; then - einfo "Working around completely broken build-system(tm)" - 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' ') - 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() { - export BOOST_ROOT=${S} - - cd "${S}/tools/regression/build" || die - einfo "Using the following command to build test helpers: " - einfo "${BJAM} -q -d+2 gentoorelease ${OPTIONS} process_jam_log compiler_status" - - ${BJAM} -q -d+2 \ - gentoorelease \ - ${OPTIONS} \ - process_jam_log compiler_status \ - || die "building regression test helpers failed" - - cd "${S}/status" || 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} ${OPTIONS} --dump-tests" - - ${BJAM} \ - ${OPTIONS} \ - --dump-tests 2>&1 | tee regress.log || die - - # Postprocessing - cat regress.log | "${S}/tools/regression/build/bin/gcc-$(gcc-version)/gentoorelease/pch-off/process_jam_log" --v2 - if test $? != 0 ; then - die "Postprocessing the build log failed" - fi - - cat > "${S}/status/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 - "${S}/tools/regression/build/bin/gcc-$(gcc-version)/gentoorelease/pch-off/compiler_status" --v2 \ - --comment "${S}/status/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 -} - -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 -} diff --git a/dev-libs/boost/files/boost-1.48.0-disable_icu_rpath.patch b/dev-libs/boost/files/boost-1.48.0-disable_icu_rpath.patch new file mode 100644 index 000000000000..a902d61bba78 --- /dev/null +++ b/dev-libs/boost/files/boost-1.48.0-disable_icu_rpath.patch @@ -0,0 +1,29 @@ +--- libs/locale/build/Jamfile.v2 ++++ libs/locale/build/Jamfile.v2 +@@ -58,8 +58,8 @@ + + if $(ICU_LINK) + { +- ICU_OPTS = <include>$(ICU_PATH)/include <linkflags>$(ICU_LINK) <dll-path>$(ICU_PATH)/bin <runtime-link>shared ; +- ICU64_OPTS = <include>$(ICU_PATH)/include <linkflags>$(ICU_LINK) <dll-path>$(ICU_PATH)/bin64 <runtime-link>shared ; ++ ICU_OPTS = <include>$(ICU_PATH)/include <linkflags>$(ICU_LINK) <runtime-link>shared ; ++ ICU64_OPTS = <include>$(ICU_PATH)/include <linkflags>$(ICU_LINK) <runtime-link>shared ; + } + else + { +@@ -117,7 +117,6 @@ + <library>icuuc/<link>shared/<runtime-link>shared + <library>icudt/<link>shared/<runtime-link>shared + <library>icuin/<link>shared/<runtime-link>shared +- <dll-path>$(ICU_PATH)/bin + <runtime-link>shared ; + + +@@ -176,7 +175,6 @@ + <library>icuuc_64/<link>shared/<runtime-link>shared + <library>icudt_64/<link>shared/<runtime-link>shared + <library>icuin_64/<link>shared/<runtime-link>shared +- <dll-path>$(ICU_PATH)/bin64 + <runtime-link>shared ; + + diff --git a/dev-libs/boost/files/boost-1.48.0-disable_libboost_python3.patch b/dev-libs/boost/files/boost-1.48.0-disable_libboost_python3.patch new file mode 100644 index 000000000000..c24a56c6bd5d --- /dev/null +++ b/dev-libs/boost/files/boost-1.48.0-disable_libboost_python3.patch @@ -0,0 +1,62 @@ +--- libs/python/build/Jamfile.v2 ++++ libs/python/build/Jamfile.v2 +@@ -39,23 +39,6 @@ + PYTHON_ID = [ regex.replace $(python-id) "[*\\/:\"\']" "_" ] ; + } + +- +-rule find-py3-version +-{ +- local versions = [ feature.values python ] ; +- local py3ver ; +- for local v in $(versions) +- { +- if $(v) >= 3.0 +- { +- py3ver = $(v) ; +- } +- } +- return $(py3ver) ; +-} +- +-py3-version = [ find-py3-version ] ; +- + project boost/python + : source-location ../src + : requirements +@@ -82,7 +65,7 @@ + rule cond ( test ? : yes * : no * ) { if $(test) { return $(yes) ; } else { return $(no) ; } } + rule unless ( test ? : yes * : no * ) { if ! $(test) { return $(yes) ; } else { return $(no) ; } } + +-rule lib_boost_python ( is-py3 ? ) ++rule lib_boost_python + { + + local python_major_version = [ MATCH "^([^.]+)" : [ feature.values python ] ] ; +@@ -91,7 +74,7 @@ + { + python2 = true ; + } +- lib [ cond $(is-py3) : boost_python3 : boost_python ] ++ lib boost_python + : # sources + numeric.cpp + list.cpp +@@ -148,7 +131,6 @@ + <dependency>config-warning + + <python-debugging>on:<define>BOOST_DEBUG_PYTHON +- [ cond $(is-py3) : <python>$(py3-version) ] + : # default build + <link>shared + : # usage requirements +@@ -160,9 +142,3 @@ + + lib_boost_python ; + boost-install boost_python ; +- +-if $(py3-version) +-{ +- lib_boost_python yes ; +- boost-install boost_python3 ; +-} diff --git a/dev-libs/boost/files/boost-1.48.0-mpi_python3.patch b/dev-libs/boost/files/boost-1.48.0-mpi_python3.patch new file mode 100644 index 000000000000..a32eca94b90b --- /dev/null +++ b/dev-libs/boost/files/boost-1.48.0-mpi_python3.patch @@ -0,0 +1,95 @@ +https://svn.boost.org/trac/boost/ticket/4657 +https://svn.boost.org/trac/boost/changeset/76290 + +--- libs/mpi/src/python/datatypes.cpp ++++ libs/mpi/src/python/datatypes.cpp +@@ -17,7 +17,9 @@ + + void export_datatypes() + { ++#if PY_MAJOR_VERSION < 3 + register_serialized(long(0), &PyInt_Type); ++#endif + register_serialized(false, &PyBool_Type); + register_serialized(double(0.0), &PyFloat_Type); + } +--- libs/mpi/src/python/py_environment.cpp ++++ libs/mpi/src/python/py_environment.cpp +@@ -11,6 +11,9 @@ + * This file reflects the Boost.MPI "environment" class into Python + * methods at module level. + */ ++ ++#include <locale> ++#include <string> + #include <boost/python.hpp> + #include <boost/mpi.hpp> + +@@ -50,11 +53,64 @@ + + // If anything changed, convert C-style argc/argv into Python argv + if (mpi_argv != my_argv) ++ { ++#if PY_MAJOR_VERSION >= 3 ++ ++ wchar_t **argv_copy = (wchar_t **)PyMem_Malloc(sizeof(wchar_t*)*mpi_argc); ++ /* We need a second copy, as Python might modify the first one. */ ++ wchar_t **argv_copy2 = (wchar_t **)PyMem_Malloc(sizeof(wchar_t*)*mpi_argc); ++ ++ if (!argv_copy || !argv_copy2) { ++ fprintf(stderr, "out of memory\n"); ++ return false; ++ } ++ ++ std::locale mylocale; ++ mbstate_t mystate; ++ ++ const std::codecvt<char, wchar_t, mbstate_t>& myfacet = ++ std::use_facet<std::codecvt<char, wchar_t, mbstate_t> >(mylocale); ++ ++ for (int i = 0; i < mpi_argc; i++) ++ { ++ size_t length = strlen(mpi_argv[i]); ++ ++ wchar_t *dest = (wchar_t *) PyMem_Malloc(sizeof(wchar_t) * (length + 1)); ++ ++ const char *from_next; ++ wchar_t *to_next; ++ ++ std::codecvt<wchar_t,char,mbstate_t>::result myresult = ++ myfacet.out(mystate, ++ mpi_argv[i], mpi_argv[i] + length + 1, from_next, ++ dest, dest+length+1, to_next); ++ ++ if (myresult != std::codecvt<wchar_t,char,mbstate_t>::ok ) ++ { ++ fprintf(stderr, "failure translating argv\n"); ++ return 1; ++ } ++ ++ argv_copy2[i] = argv_copy[i] = dest; ++ if (!argv_copy[i]) ++ return false; ++ } ++ ++ PySys_SetArgv(mpi_argc, argv_copy); ++ ++ for (int i = 0; i < mpi_argc; i++) { ++ PyMem_Free(argv_copy2[i]); ++ } ++ PyMem_Free(argv_copy); ++ PyMem_Free(argv_copy2); ++#else + PySys_SetArgv(mpi_argc, mpi_argv); ++#endif ++ } + +- for (int arg = 0; arg < my_argc; ++arg) +- free(my_argv[arg]); +- delete [] my_argv; ++ for (int arg = 0; arg < mpi_argc; ++arg) ++ free(mpi_argv[arg]); ++ delete [] mpi_argv; + + return true; + } diff --git a/dev-libs/boost/files/boost-1.48.0-no_strict_aliasing_python2.patch b/dev-libs/boost/files/boost-1.48.0-no_strict_aliasing_python2.patch new file mode 100644 index 000000000000..89f8109a411b --- /dev/null +++ b/dev-libs/boost/files/boost-1.48.0-no_strict_aliasing_python2.patch @@ -0,0 +1,23 @@ +--- libs/python/build/Jamfile.v2 ++++ libs/python/build/Jamfile.v2 +@@ -85,6 +85,12 @@ + rule lib_boost_python ( is-py3 ? ) + { + ++ local python_major_version = [ MATCH "^([^.]+)" : [ feature.values python ] ] ; ++ local python2 ; ++ if $(python_major_version) = 2 ++ { ++ python2 = true ; ++ } + lib [ cond $(is-py3) : boost_python3 : boost_python ] + : # sources + numeric.cpp +@@ -119,6 +125,7 @@ + : # requirements + <link>static:<define>BOOST_PYTHON_STATIC_LIB + <define>BOOST_PYTHON_SOURCE ++ [ cond $(python2) : <cxxflags>-fno-strict-aliasing ] + + # On Windows, all code using Python has to link to the Python + # import library. diff --git a/dev-libs/boost/files/boost-1.48.0-python_linking.patch b/dev-libs/boost/files/boost-1.48.0-python_linking.patch new file mode 100644 index 000000000000..e7f4e7c99f24 --- /dev/null +++ b/dev-libs/boost/files/boost-1.48.0-python_linking.patch @@ -0,0 +1,24 @@ +--- libs/python/build/Jamfile.v2 ++++ libs/python/build/Jamfile.v2 +@@ -109,20 +109,7 @@ + <link>static:<define>BOOST_PYTHON_STATIC_LIB + <define>BOOST_PYTHON_SOURCE + [ cond $(python2) : <cxxflags>-fno-strict-aliasing ] +- +- # On Windows, all code using Python has to link to the Python +- # import library. +- # +- # On *nix we never link libboost_python to libpython. When +- # extending Python, all Python symbols are provided by the +- # Python interpreter executable. When embedding Python, the +- # client executable is expected to explicitly link to +- # /python//python (the target representing libpython) itself. +- # +- # python_for_extensions is a target defined by Boost.Build to +- # provide the Python include paths, and on Windows, the Python +- # import library, as usage requirements. +- [ cond [ python.configured ] : <library>/python//python_for_extensions ] ++ [ cond [ python.configured ] : <library>/python//python ] + + # we prevent building when there is no python available + # as it's not possible anyway, and to cause dependents to diff --git a/dev-libs/boost/files/boost-1.48.0-respect_python-buildid.patch b/dev-libs/boost/files/boost-1.48.0-respect_python-buildid.patch new file mode 100644 index 000000000000..51003db29791 --- /dev/null +++ b/dev-libs/boost/files/boost-1.48.0-respect_python-buildid.patch @@ -0,0 +1,69 @@ +https://svn.boost.org/trac/boost/ticket/6286 + +--- boostcpp.jam ++++ boostcpp.jam +@@ -99,13 +99,6 @@ + BUILD_ID = [ regex.replace $(build-id) "[*\\/:.\"\' ]" "_" ] ; + } + +-# Python build id (only for Python libraries) +-python-id = [ option.get "python-buildid" ] ; +-if $(python-id) +-{ +- PYTHON_ID = [ regex.replace $(python-id) "[*\\/:.\"\']" "_" ] ; +-} +- + ############################################################################## + # + # 1. The 'tag' function that adds decoration suitable to the properties if +--- libs/mpi/build/Jamfile.v2 ++++ libs/mpi/build/Jamfile.v2 +@@ -8,6 +8,8 @@ + # Authors: Douglas Gregor + # Andrew Lumsdaine + ++import option ; ++import regex ; + import mpi ; + import indirect ; + import python ; +@@ -24,6 +26,13 @@ + <tag>@$(__name__).tag + ; + ++# Python build id (only for Python libraries) ++python-id = [ option.get "python-buildid" ] ; ++if $(python-id) ++{ ++ PYTHON_ID = [ regex.replace $(python-id) "[*\\/:.\"\']" "_" ] ; ++} ++ + rule tag ( name : type ? : property-set ) + { + local result = $(name) ; +--- libs/python/build/Jamfile.v2 ++++ libs/python/build/Jamfile.v2 +@@ -2,6 +2,8 @@ + # 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 os ; + import indirect ; + import modules ; +@@ -30,6 +32,14 @@ + ; + } + ++# Python build id (only for Python libraries) ++python-id = [ option.get "python-buildid" ] ; ++if $(python-id) ++{ ++ PYTHON_ID = [ regex.replace $(python-id) "[*\\/:.\"\']" "_" ] ; ++} ++ ++ + rule find-py3-version + { + local versions = [ feature.values python ] ; diff --git a/dev-libs/boost/files/boost-1.48.0-support_dots_in_python-buildid.patch b/dev-libs/boost/files/boost-1.48.0-support_dots_in_python-buildid.patch new file mode 100644 index 000000000000..af65f64992d2 --- /dev/null +++ b/dev-libs/boost/files/boost-1.48.0-support_dots_in_python-buildid.patch @@ -0,0 +1,22 @@ +--- libs/mpi/build/Jamfile.v2 ++++ libs/mpi/build/Jamfile.v2 +@@ -30,7 +30,7 @@ + python-id = [ option.get "python-buildid" ] ; + if $(python-id) + { +- PYTHON_ID = [ regex.replace $(python-id) "[*\\/:.\"\']" "_" ] ; ++ PYTHON_ID = [ regex.replace $(python-id) "[*\\/:\"\']" "_" ] ; + } + + rule tag ( name : type ? : property-set ) +--- libs/python/build/Jamfile.v2 ++++ libs/python/build/Jamfile.v2 +@@ -36,7 +36,7 @@ + python-id = [ option.get "python-buildid" ] ; + if $(python-id) + { +- PYTHON_ID = [ regex.replace $(python-id) "[*\\/:.\"\']" "_" ] ; ++ PYTHON_ID = [ regex.replace $(python-id) "[*\\/:\"\']" "_" ] ; + } + + diff --git a/dev-libs/boost/files/remove-toolset-1.48.0.patch b/dev-libs/boost/files/remove-toolset-1.48.0.patch index d74a88296681..df9152933788 100644 --- a/dev-libs/boost/files/remove-toolset-1.48.0.patch +++ b/dev-libs/boost/files/remove-toolset-1.48.0.patch @@ -1,5 +1,5 @@ ---- boostcpp.jam 2010-11-17 11:51:56.000000000 +0200 -+++ boostcpp.jam.gentoo 2011-01-06 15:07:17.893270002 +0200 +--- boostcpp.jam ++++ boostcpp.jam @@ -377,7 +377,7 @@ if $(layout) = versioned { |