Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 419050 Details for
Bug 565090
dev-libs/boost: hardcodes python library name (and default include path), breaks with ABIFLAGS-enabled Python
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
boost-1.56.0-r2.ebuild with the same fixes as in the 1.57 and 1.58 ebuilds
boost-1.56.0-r2.ebuild (text/plain), 12.07 KB, created by
Jelte Fennema
on 2015-12-12 20:13:06 UTC
(
hide
)
Description:
boost-1.56.0-r2.ebuild with the same fixes as in the 1.57 and 1.58 ebuilds
Filename:
MIME Type:
Creator:
Jelte Fennema
Created:
2015-12-12 20:13:06 UTC
Size:
12.07 KB
patch
obsolete
># Copyright 1999-2015 Gentoo Foundation ># Distributed under the terms of the GNU General Public License v2 ># $Id$ > >EAPI="5" >PYTHON_COMPAT=( python{2_7,3_3,3_4} ) > >inherit eutils flag-o-matic multilib multiprocessing python-r1 toolchain-funcs versionator multilib-minimal > >MY_P="${PN}_$(replace_all_version_separators _)" >MAJOR_V="$(get_version_component_range 1-2)" > >DESCRIPTION="Boost Libraries for C++" >HOMEPAGE="http://www.boost.org/" >SRC_URI="mirror://sourceforge/boost/${MY_P}.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 ~s390 ~sh sparc x86 ~ppc-aix ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~sparc64-solaris ~x86-solaris ~x86-winnt" > >IUSE="context debug doc icu +nls mpi python static-libs +threads tools" > >RDEPEND="abi_x86_32? ( !app-emulation/emul-linux-x86-cpplibs[-abi_x86_32(-)] ) > icu? ( >=dev-libs/icu-3.6:=[${MULTILIB_USEDEP}] ) > !icu? ( virtual/libiconv[${MULTILIB_USEDEP}] ) > mpi? ( virtual/mpi[cxx,threads] ) > python? ( ${PYTHON_DEPS} ) > app-arch/bzip2[${MULTILIB_USEDEP}] > sys-libs/zlib[${MULTILIB_USEDEP}] > !app-admin/eselect-boost" >DEPEND="${RDEPEND} > =dev-util/boost-build-${MAJOR_V}*" >REQUIRED_USE=" > mpi? ( threads ) > python? ( ${PYTHON_REQUIRED_USE} )" > >S="${WORKDIR}/${MY_P}" > ># 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" > >python_bindings_needed() { > multilib_is_native_abi && use python >} > >tools_needed() { > multilib_is_native_abi && use tools >} > ># MPI stuff is not ported on multilib yet, disabling it for non-native ABIs >mpi_needed() { > multilib_is_native_abi && use mpi >} > >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 mpi_needed; then > mpi_configuration="using mpi ;" > fi > > if python_bindings_needed; then > # boost expects libpython$(pyver) and doesn't allow overrides > # and the build system is so creepy that it's easier just to > # provide a symlink (linker's going to use SONAME anyway) > # TODO: replace it with proper override one day > ln -f -s "$(python_get_library_path)" "${T}/lib${EPYTHON}$(get_libname)" || die > > if tc-is-cross-compiler; then > python_configuration="using python : ${EPYTHON#python} : : ${SYSROOT:-${EROOT}}/usr/include/${EPYTHON} : ${SYSROOT:-${EROOT}}/usr/$(get_libdir) ;" > else > # note: we need to provide version explicitly because of > # a bug in the build system: > # https://github.com/boostorg/build/pull/104 > python_configuration="using python : ${EPYTHON#python} : ${PYTHON} : $(python_get_includedir) : ${T} ;" > fi > fi > > cat > "${BOOST_ROOT}/user-config.jam" << __EOF__ >using ${compiler} : ${compiler_version} : ${compiler_executable} : <cflags>"${CFLAGS}" <cxxflags>"${CXXFLAGS}" <linkflags>"${LDFLAGS}" ; >${mpi_configuration} >${python_configuration} >__EOF__ >} > >pkg_setup() { > # Bail out on unsupported build configuration, bug #456792 > if [[ -f "${EROOT}etc/site-config.jam" ]]; then > grep -q gentoorelease "${EROOT}etc/site-config.jam" && grep -q gentoodebug "${EROOT}etc/site-config.jam" || > ( > 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 > ) > fi >} > >src_prepare() { > epatch \ > "${FILESDIR}/${PN}-1.51.0-respect_python-buildid.patch" \ > "${FILESDIR}/${PN}-1.51.0-support_dots_in_python-buildid.patch" \ > "${FILESDIR}/${PN}-1.48.0-no_strict_aliasing_python2.patch" \ > "${FILESDIR}/${PN}-1.48.0-disable_libboost_python3.patch" \ > "${FILESDIR}/${PN}-1.48.0-python_linking.patch" \ > "${FILESDIR}/${PN}-1.48.0-disable_icu_rpath.patch" \ > "${FILESDIR}/${PN}-1.55.0-context-x32.patch" \ > "${FILESDIR}/${PN}-1.55.0-tools-c98-compat.patch" \ > "${FILESDIR}/${PN}-1.52.0-threads.patch" \ > "${FILESDIR}/${PN}-1.56.0-build-auto_index-tool.patch" \ > "${FILESDIR}/${PN}-1.55.0-variadic-templates.patch" \ > "${FILESDIR}/${PN}-1.56.0-atomic.patch" > > # Do not try to build missing 'wave' tool, bug #522682 > # Upstream bugreport - https://svn.boost.org/trac/boost/ticket/10507 > sed -i -e 's:wave/build//wave::' tools/Jamfile.v2 || die > > epatch_user > > multilib_copy_sources >} > >ejam() { > local b2_opts="--user-config=${BOOST_ROOT}/user-config.jam $@" > echo b2 ${b2_opts} > 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" > > 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 > elif [[ ${CHOST} == *-winnt* ]]; then > compiler=parity > if [[ $($(tc-getCXX) -v) == *trunk* ]]; then > compilerVersion=trunk > else > compilerVersion=$($(tc-getCXX) -v | sed '1q' \ > | sed -e 's,\([a-z]*\) \([0-9]\.[0-9]\.[0-9][^ \t]*\) .*,\2,') > fi > compilerExecutable=$(tc-getCXX) > fi > > # bug 298489 > if use ppc || use ppc64; then > [[ $(gcc-version) > 4.3 ]] && append-flags -mno-altivec > fi > > # Do _not_ use C++11 yet, make sure to force GNU C++ 98 standard. > append-cxxflags -std=gnu++98 > > use icu && OPTIONS+=" -sICU_PATH=${EPREFIX}/usr" > use icu || OPTIONS+=" --disable-icu boost.locale.icu=off" > mpi_needed || OPTIONS+=" --without-mpi" > use nls || OPTIONS+=" --without-locale" > use context || OPTIONS+=" --without-context --without-coroutine" > > OPTIONS+=" pch=off" > OPTIONS+=" --boost-build=${EPREFIX}/usr/share/boost-build --prefix=\"${ED}usr\"" > OPTIONS+=" --layout=system" > OPTIONS+=" threading=$(usex threads multi single) link=$(usex static-libs shared,static shared)" > > [[ ${CHOST} == *-winnt* ]] && OPTIONS+=" -sNO_BZIP2=1" >} > >multilib_src_compile() { > local -x BOOST_ROOT="${BUILD_DIR}" > PYTHON_DIRS="" > MPI_PYTHON_MODULE="" > > building() { > create_user-config.jam > > local PYTHON_OPTIONS > if python_bindings_needed; then > PYTHON_OPTIONS=" --python-buildid=${EPYTHON#python}" > else > PYTHON_OPTIONS=" --without-python" > fi > > ejam \ > ${OPTIONS} \ > ${PYTHON_OPTIONS} \ > || die "Building of Boost libraries failed" > > if python_bindings_needed; 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}-${EPYTHON} \ > || die "Renaming of '${dir}' to '${dir}-${EPYTHON}' failed" > done > > if mpi_needed; then > if [[ -z "${MPI_PYTHON_MODULE}" ]]; then > MPI_PYTHON_MODULE="$(find bin.v2/libs/mpi/build/*/gentoo* -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/*/gentoo* -name mpi.so)" ]]; then > die "Inconsistent structure of build directories" > fi > fi > > mv stage/lib/mpi.so stage/lib/mpi.so-${EPYTHON} \ > || die "Renaming of 'stage/lib/mpi.so' to 'stage/lib/mpi.so-${EPYTHON}' failed" > fi > fi > } > if python_bindings_needed; then > python_foreach_impl building > else > building > fi > > if tools_needed; then > pushd tools > /dev/null || die > > ejam \ > ${OPTIONS} \ > ${PYTHON_OPTIONS} \ > || die "Building of Boost tools failed" > popd > /dev/null || die > fi >} > >multilib_src_install_all() { > if ! use python; then > rm -r "${ED}"/usr/include/boost/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 || die > 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 > 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 /usr/share/doc/${PF}/html/boost > fi >} > >multilib_src_install() { > local -x BOOST_ROOT="${BUILD_DIR}" > installation() { > create_user-config.jam > > local PYTHON_OPTIONS > if python_bindings_needed; then > local dir > for dir in ${PYTHON_DIRS}; do > cp -pr ${dir}-${EPYTHON} ${dir} \ > || die "Copying of '${dir}-${EPYTHON}' to '${dir}' failed" > done > > if mpi_needed; then > cp -p stage/lib/mpi.so-${EPYTHON} "${MPI_PYTHON_MODULE}" \ > || die "Copying of 'stage/lib/mpi.so-${EPYTHON}' to '${MPI_PYTHON_MODULE}' failed" > cp -p stage/lib/mpi.so-${EPYTHON} stage/lib/mpi.so \ > || die "Copying of 'stage/lib/mpi.so-${EPYTHON}' to 'stage/lib/mpi.so' failed" > fi > PYTHON_OPTIONS=" --python-buildid=${EPYTHON#python}" > else > PYTHON_OPTIONS=" --without-python" > fi > > ejam \ > ${OPTIONS} \ > ${PYTHON_OPTIONS} \ > --includedir="${ED}usr/include" \ > --libdir="${ED}usr/$(get_libdir)" \ > install || die "Installation of Boost libraries failed" > > if python_bindings_needed; then > rm -r ${PYTHON_DIRS} || die > > # Move mpi.so Python module to Python site-packages directory. > # https://svn.boost.org/trac/boost/ticket/2838 > if mpi_needed; then > local moddir=$(python_get_sitedir)/boost > # moddir already includes eprefix > mkdir -p "${D}${moddir}" || die > mv "${ED}usr/$(get_libdir)/mpi.so" "${D}${moddir}" || die > cat << EOF > "${D}${moddir}/__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 > fi > > python_optimize > fi > } > if python_bindings_needed; then > python_foreach_impl installation > else > installation > fi > > 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 > [[ -L ${symlink} ]] && rm -f "${symlink}" > done >}
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 565090
: 419050