diff options
author | Benda Xu <heroxbd@gentoo.org> | 2016-05-25 11:28:10 +0900 |
---|---|---|
committer | Benda Xu <heroxbd@gentoo.org> | 2016-05-25 11:28:43 +0900 |
commit | 62c75f76eb7047f3f9f53b080a46a4ba4c6d9c48 (patch) | |
tree | bd09b46b4528688ea0c8e3ebf721f82d6d216442 /sys-devel | |
parent | p/p/linux-standalone/profile.bashrc: move glibc RAP tricks to profiles (diff) | |
download | gentoo-62c75f76eb7047f3f9f53b080a46a4ba4c6d9c48.tar.gz gentoo-62c75f76eb7047f3f9f53b080a46a4ba4c6d9c48.tar.bz2 gentoo-62c75f76eb7047f3f9f53b080a46a4ba4c6d9c48.zip |
sys-devel/binutils-config: add prefix support.
Bug: 531616
Package-Manager: portage-2.2.28
RepoMan-Options: --force
Diffstat (limited to 'sys-devel')
-rw-r--r-- | sys-devel/binutils-config/binutils-config-5-r2.ebuild | 5 | ||||
-rwxr-xr-x | sys-devel/binutils-config/files/binutils-config-5 | 84 |
2 files changed, 45 insertions, 44 deletions
diff --git a/sys-devel/binutils-config/binutils-config-5-r2.ebuild b/sys-devel/binutils-config/binutils-config-5-r2.ebuild index adb97e045ee1..98eb31bc1094 100644 --- a/sys-devel/binutils-config/binutils-config-5-r2.ebuild +++ b/sys-devel/binutils-config/binutils-config-5-r2.ebuild @@ -1,9 +1,11 @@ -# Copyright 1999-2015 Gentoo Foundation +# Copyright 1999-2016 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Id$ EAPI="4" +inherit prefix + DESCRIPTION="Utility to change the binutils version being used" HOMEPAGE="https://www.gentoo.org/" SRC_URI="" @@ -21,6 +23,7 @@ S=${WORKDIR} src_install() { newbin "${FILESDIR}"/${PN}-${PV} ${PN} + use prefix && eprefixify "${ED}"/usr/bin/${PN} doman "${FILESDIR}"/${PN}.8 insinto /usr/share/eselect/modules diff --git a/sys-devel/binutils-config/files/binutils-config-5 b/sys-devel/binutils-config/files/binutils-config-5 index 2bdd07e1fcc0..b0d87601eb52 100755 --- a/sys-devel/binutils-config/files/binutils-config-5 +++ b/sys-devel/binutils-config/files/binutils-config-5 @@ -7,16 +7,23 @@ # config-TARGET: CURRENT=version for TARGET # TARGET-VER: has a TARGET and VER variable +EPREFIX="@GENTOO_PORTAGE_EPREFIX@" +if [[ ${EPREFIX} == "@"GENTOO_PORTAGE_EPREFIX"@" ]] ; then + EPREFIX="" +fi + : ${ROOT:=/} [[ ${ROOT} != */ ]] && ROOT="${ROOT}/" [[ ${ROOT} != /* ]] && ROOT="${PWD%/}/${ROOT}" -cd / +EROOT="${ROOT%/}${EPREFIX}/" + +cd "${EPREFIX}/" trap ":" INT QUIT TSTP argv0=${0##*/} -FUNCTIONS_SH="/lib/gentoo/functions.sh" +FUNCTIONS_SH="${EPREFIX}/lib/gentoo/functions.sh" source ${FUNCTIONS_SH} || { echo "${argv0}: Could not source ${FUNCTIONS_SH}!" 1>&2 exit 1 @@ -97,14 +104,14 @@ setup_env() { # Newer paths: /usr/${HOST}/${TARGET}/... # Older paths: /usr/${TARGET}/... # - if [[ -d ${ROOT}/usr/${HOST}/${TARGET}/binutils-bin/${VER} ]] ; then - BINPATH=/usr/${HOST}/${TARGET}/binutils-bin/${VER} - BINPATH_LINKS=/usr/libexec/gcc/${TARGET} + if [[ -d "${EROOT}"/usr/${HOST}/${TARGET}/binutils-bin/${VER} ]] ; then + BINPATH="${EPREFIX}"/usr/${HOST}/${TARGET}/binutils-bin/${VER} + BINPATH_LINKS="${EPREFIX}"/usr/libexec/gcc/${TARGET} fi fi if [[ -z ${BINPATH} ]] ; then - BINPATH=/usr/${TARGET}/binutils-bin/${VER} - BINPATH_LINKS=/usr/${TARGET}/bin + BINPATH="${EPREFIX}"/usr/${TARGET}/binutils-bin/${VER} + BINPATH_LINKS="${EPREFIX}"/usr/${TARGET}/bin fi } @@ -123,24 +130,24 @@ switch_profile() { setup_env || return 1 cd "${ROOT}/${BINPATH}" || exit 1 - mkdir -p "${ROOT}/${BINPATH_LINKS}" "${ROOT}/usr/bin" + mkdir -p "${ROOT}/${BINPATH_LINKS}" "${EROOT}/usr/bin" for x in * ; do atomic_ln "${BINPATH}/${x}" "${ROOT}/${BINPATH_LINKS}" "${x}" - atomic_ln "${BINPATH_LINKS}/${x}" "${ROOT}/usr/bin" "${TARGET}-${x}" + atomic_ln "${BINPATH_LINKS}/${x}" "${EROOT}/usr/bin" "${TARGET}-${x}" if [[ ${TARGET} == ${HOST} ]] ; then - atomic_ln "${TARGET}-${x}" "${ROOT}/usr/bin" "${x}" + atomic_ln "${TARGET}-${x}" "${EROOT}/usr/bin" "${x}" fi done # # Generate library / ldscripts symlinks # - : ${LIBPATH:=/usr/lib/binutils/${TARGET}/${VER}} + : ${LIBPATH:=${EPREFIX}/usr/lib/binutils/${TARGET}/${VER}} cd "${ROOT}/${LIBPATH}" || exit 1 if [[ ${TARGET} == ${HOST} ]] ; then - dstlib=${ROOT}/usr/${HOST}/lib + dstlib=${EROOT}/usr/${HOST}/lib else - dstlib=${ROOT}/usr/${HOST}/${TARGET}/lib + dstlib=${EROOT}/usr/${HOST}/${TARGET}/lib fi # When upgrading, we need to clean up ldscripts and libs. # Don't symlink back in the libs -- the binutils-lib package handles @@ -149,16 +156,7 @@ switch_profile() { mkdir -p "${dstlib}" rm -rf "${ROOT}/${BINPATH_LINKS}"/ldscripts atomic_ln "${LIBPATH}/ldscripts" "${dstlib}" "ldscripts" - find -L "${dstlib}" -xtype l -name 'lib*' -delete - # Detect older binutils w/broken rpaths. #562460 - # We can hardcode the "/lib" part since that's what the binutils - # configure scripts have. They did not include any other path. - if [[ $(scanelf -qF '%r#F' "${ROOT}/${BINPATH}/as") == */lib ]] ; then - ewarn "Old cross-binutils detected; please re-emerge to fix (see bug #562460)." - for x in lib* ; do - atomic_ln "${LIBPATH}/${x}" "${dstlib}" "${x}" - done - fi + find -L "${dstlib}" -xtype l -name 'lib*' -exec rm -f {} + # # Clean out old generated include symlinks @@ -169,17 +167,17 @@ switch_profile() { if [[ ${HOST} == ${TARGET} ]] ; then # The binutils-lib package handles these files now. for x in libiberty "${HEADERS[@]}" ; do - x="${ROOT}/usr/include/${x}" + x="${EROOT}/usr/include/${x}" if [[ -L ${x} ]] ; then rm "${x}" fi done else # Clean out old path -- cannot use '-exec {} +' syntax here - find . -type f -exec rm -f "${ROOT}/usr/${TARGET}/usr/include/{}" \; - rmdir "${ROOT}/usr/${TARGET}/usr/include" >& /dev/null - rmdir "${ROOT}/usr/${TARGET}/usr" >& /dev/null - rmdir "${ROOT}/usr/${TARGET}" >& /dev/null + find . -type f -exec rm -f "${EROOT}/usr/${TARGET}/usr/include/{}" \; + rmdir "${EROOT}/usr/${TARGET}/usr/include" >& /dev/null + rmdir "${EROOT}/usr/${TARGET}/usr" >& /dev/null + rmdir "${EROOT}/usr/${TARGET}" >& /dev/null fi fi @@ -192,14 +190,14 @@ switch_profile() { # Note: This skips ldconfig update if env.d had LDPATH, but meh. # Most people have upgraded to ld.so.conf.d, and someone else will # eventually re-run ldconfig for us. - x="${ROOT}"/etc/ld.so.conf.d/05binutils.conf + x="${EROOT}"/etc/ld.so.conf.d/05binutils.conf if [[ -e ${x} ]]; then rm -f "${x}" env_update_flag="" fi - DATAPATH=/usr/share/binutils-data/${TARGET}/${VER} - local e="${ROOT}"/etc/env.d/05binutils + DATAPATH="${EPREFIX}"/usr/share/binutils-data/${TARGET}/${VER} + local e="${EROOT}"/etc/env.d/05binutils local ee="${e}.tmp" rm -f "${ee}" [[ -d ${ROOT}/${DATAPATH}/man ]] && echo "MANPATH=${DATAPATH}/man" >> "${ee}" @@ -222,7 +220,7 @@ switch_profile() { echo ewarn "Please remember to run:" echo - ewarn " # . /etc/profile" + ewarn " # . ${EPREFIX}/etc/profile" echo fi @@ -251,33 +249,33 @@ uninstall_target() { local x for x in \ - addr2line ar as c++filt dwp elf2flt elfedit flthdr gprof \ + addr2line ar as c++filt elf2flt elfedit flthdr gprof \ ld ld.{bfd,gold,real} \ nm objcopy objdump ranlib readelf size strings strip do x=( - "${ROOT}"/usr/bin/${TARGET}-${x} - "${ROOT}"/usr/{${HOST}/,}${TARGET}/bin/${x} - "${ROOT}"/usr/libexec/gcc/${TARGET}/${x} + "${EROOT}"/usr/bin/${TARGET}-${x} + "${EROOT}"/usr/{${HOST}/,}${TARGET}/bin/${x} + "${EROOT}"/usr/libexec/gcc/${TARGET}/${x} ) rm -f "${x[@]}" done for x in "${HEADERS[@]}" ; do - rm -f "${ROOT}"/usr/{${HOST}/,}${TARGET}/{usr/,}include/${x} + rm -f "${EROOT}"/usr/{${HOST}/,}${TARGET}/{usr/,}include/${x} done for x in bfd iberty opcodes ; do - rm -f "${ROOT}"/usr/${HOST}/${TARGET}/lib/lib${x}{{-*,}.so,.a,.la} + rm -f "${EROOT}"/usr/${HOST}/${TARGET}/lib/lib${x}{{-*,}.so,.a,.la} done # Delete broken symlinks - local destdir="${ROOT}/usr/${HOST}/${TARGET}" + local destdir="${EROOT}/usr/${HOST}/${TARGET}" rm -f "${destdir}"/lib/ldscripts find -L "${destdir}"/lib -type l -exec rm {} + rmdir \ "${destdir}"/{bin,include,lib,usr} \ "${destdir}" \ - "${ROOT}"/var/db/pkg/cross-${TARGET} \ - "${ROOT}"/usr/{${HOST}/,}${TARGET}/bin \ - "${ROOT}"/usr/libexec/gcc/${TARGET} \ + "${EROOT}"/var/db/pkg/cross-${TARGET} \ + "${EROOT}"/usr/{${HOST}/,}${TARGET}/bin \ + "${EROOT}"/usr/libexec/gcc/${TARGET} \ 2>/dev/null rm -f "${ENV_D}"/${TARGET}-* @@ -376,7 +374,7 @@ set_HOST() { : ${HOST:=${CHOST:-$(portageq envvar CHOST)}} } -ENV_D="${ROOT}etc/env.d/binutils" +ENV_D="${EROOT}etc/env.d/binutils" DEBUG="no" NEED_ACTION="yes" |