diff options
Diffstat (limited to 'sys-devel/binutils-config')
24 files changed, 1956 insertions, 385 deletions
diff --git a/sys-devel/binutils-config/.pc/.quilt_patches b/sys-devel/binutils-config/.pc/.quilt_patches new file mode 100644 index 0000000..4baccb8 --- /dev/null +++ b/sys-devel/binutils-config/.pc/.quilt_patches @@ -0,0 +1 @@ +patches diff --git a/sys-devel/binutils-config/.pc/.quilt_series b/sys-devel/binutils-config/.pc/.quilt_series new file mode 100644 index 0000000..c206706 --- /dev/null +++ b/sys-devel/binutils-config/.pc/.quilt_series @@ -0,0 +1 @@ +series diff --git a/sys-devel/binutils-config/.pc/.version b/sys-devel/binutils-config/.pc/.version new file mode 100644 index 0000000..0cfbf08 --- /dev/null +++ b/sys-devel/binutils-config/.pc/.version @@ -0,0 +1 @@ +2 diff --git a/sys-devel/binutils-config/.pc/applied-patches b/sys-devel/binutils-config/.pc/applied-patches new file mode 100644 index 0000000..f304ad7 --- /dev/null +++ b/sys-devel/binutils-config/.pc/applied-patches @@ -0,0 +1 @@ +binutils-config-prefix.patch diff --git a/sys-devel/binutils-config/.pc/binutils-config-prefix.patch/.timestamp b/sys-devel/binutils-config/.pc/binutils-config-prefix.patch/.timestamp new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/sys-devel/binutils-config/.pc/binutils-config-prefix.patch/.timestamp diff --git a/sys-devel/binutils-config/.pc/binutils-config-prefix.patch/binutils-config-3-r3.ebuild b/sys-devel/binutils-config/.pc/binutils-config-prefix.patch/binutils-config-3-r3.ebuild new file mode 100644 index 0000000..25c41a5 --- /dev/null +++ b/sys-devel/binutils-config/.pc/binutils-config-prefix.patch/binutils-config-3-r3.ebuild @@ -0,0 +1,19 @@ +# Copyright 1999-2012 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sys-devel/binutils-config/binutils-config-3-r3.ebuild,v 1.9 2012/07/29 18:36:13 armin76 Exp $ + +DESCRIPTION="Utility to change the binutils version being used" +HOMEPAGE="http://www.gentoo.org/" +SRC_URI="" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="alpha amd64 arm hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd" +IUSE="" + +RDEPEND="userland_GNU? ( !<sys-apps/findutils-4.2 )" + +src_install() { + newbin "${FILESDIR}"/${PN}-${PV} ${PN} || die + doman "${FILESDIR}"/${PN}.8 +} diff --git a/sys-devel/binutils-config/.pc/binutils-config-prefix.patch/files/binutils-config-3 b/sys-devel/binutils-config/.pc/binutils-config-prefix.patch/files/binutils-config-3 new file mode 100755 index 0000000..5f21878 --- /dev/null +++ b/sys-devel/binutils-config/.pc/binutils-config-prefix.patch/files/binutils-config-3 @@ -0,0 +1,509 @@ +#!/bin/bash +# Copyright 1999-2013 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sys-devel/binutils-config/files/binutils-config-3,v 1.11 2013/05/05 05:20:42 vapier Exp $ + +# Format of /etc/env.d/binutils/: +# config-TARGET: CURRENT=version for TARGET +# TARGET-VER: has a TARGET and VER variable + +: ${ROOT:=/} +[[ ${ROOT} != */ ]] && ROOT="${ROOT}/" +[[ ${ROOT} != /* ]] && ROOT="${PWD%/}/${ROOT}" + +cd / + +trap ":" INT QUIT TSTP + +argv0=${0##*/} +source /etc/init.d/functions.sh || { + echo "${argv0}: Could not source /etc/init.d/functions.sh!" 1>&2 + exit 1 +} +esyslog() { :; } +die() { eerror "${argv0}: $*"; exit 1; } +umask 022 + +usage() { +cat << USAGE_END +Usage: ${HILITE}binutils-config${NORMAL} ${GOOD}[options]${NORMAL} ${BRACKET}[binutils profile]${NORMAL} + +${HILITE}General Options:${NORMAL} + ${GOOD}-c, --get-current-profile${NORMAL} Print current profile + ${GOOD}-l, --list-profiles${NORMAL} Print a list of available profiles + ${GOOD}-u, --uninstall${NORMAL} Remove all signs of specified target + ${GOOD}-d, --debug${NORMAL} Execute with debug output + +${HILITE}General Cruft:${NORMAL} + ${GOOD}--linker${NORMAL} <linker> Switch to specified linker (if supported) + +${HILITE}Arch Specific Cruft:${NORMAL} + ${GOOD}--amd64${NORMAL} Install extra amd64 links (x86_64) + ${GOOD}--arm${NORMAL} Install extra arm links (arm/armeb) + ${GOOD}--mips${NORMAL} Install extra mips links (mips/mipsel) + ${GOOD}--x86${NORMAL} Install extra x86 links (i[3-6]86) + +Profile names are of the form: ${BRACKET}<CTARGET>-<binutils version>${NORMAL} +For example: ${BRACKET}i686-pc-linux-gnu-2.15.92.0.2${NORMAL} + +For more info, please see ${HILITE}binutils-config${NORMAL}(8). +USAGE_END + + exit ${1:-1} +} + +mv_if_diff() { + if cmp -s "$1" "$2" ; then + rm -f "$1" + else + mv -f "$1" "$2" + fi +} +atomic_ln() { + local target=$1 linkdir=$2 linkname=$3 linktmp linkfull + linktmp="${linkdir}/.binutils-config.tmp.${linkname}" + linkfull="${linkdir}/${linkname}" + if [[ -d ${linkfull} ]] ; then + # if linking to a dir, we need a little magic to + # make it atomic since `mv -T` is not portable + rm -rf "${linktmp}" + mkdir -p "${linktmp}" + ln -sf "${target}" "${linktmp}/${linkname}" + mv "${linktmp}/${linkname}" "${linktmp}/../" + rmdir "${linktmp}" + else + # `ln` will expand into unlink();symlink(); which + # is not atomic for a small amount of time, but + # `mv` is a single rename() call + ln -sf "${target}" "${linktmp}" + mv "${linktmp}" "${linkfull}" + fi +} + +setup_env() { + unset TARGET VER LIBPATH FAKE_TARGETS + source "${ENV_D}/${PROFILE}" + if [[ -z ${TARGET} ]] ; then + eerror "${PROFILE} is invalid (no \$TARGET defined) :(" + return 1 + fi + if [[ -z ${VER} ]] ; then + eerror "${PROFILE} is invalid (no \$VER defined) :(" + return 1 + fi + + # + # Older installs don't have 'FAKE_TARGETS' defined, so lets + # update these env.d entries so that we don't force the poor + # user to re-emerge their binutils just for 1 envvar :/ + # + if [[ ${FAKE_TARGETS-poor user} == "poor user" ]] ; then + local targ=${TARGET/-*} + local FAKE_TARGETS=${TARGET} + case ${targ} in + mips|powerpc|sparc) + FAKE_TARGETS="${FAKE_TARGETS} ${TARGET/-/64-}";; + mips64|powerpc64|sparc64) + FAKE_TARGETS="${FAKE_TARGETS} ${TARGET/64-/-}";; + esac + echo "FAKE_TARGETS=\"${FAKE_TARGETS}\"" >> "${ENV_D}/${PROFILE}" + fi + local fake_targ_append="${TARGET#*-}" + FAKE_TARGETS="${FAKE_TARGETS} ${FAKE_TARGETS_USER// /-${fake_targ_append} }" + + # + # Generate binary symlinks + # On systems that do 32bit/64bit, we need to fake an + # extra set of binary names (${FAKE_TARGETS}) + # + BINPATH="" + BINPATH_LINKS="" + if [[ ${TARGET} != ${HOST} ]] ; then + # + # 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} + fi + fi + if [[ -z ${BINPATH} ]] ; then + BINPATH=/usr/${TARGET}/binutils-bin/${VER} + BINPATH_LINKS=/usr/${TARGET}/bin + fi +} + +switch_profile() { + ebegin "Switching to ${PROFILE}" + + setup_env || return 1 + + cd "${ROOT}/${BINPATH}" || exit 1 + mkdir -p "${ROOT}/${BINPATH_LINKS}" "${ROOT}/usr/bin" + for x in * ; do + atomic_ln "${BINPATH}/${x}" "${ROOT}/${BINPATH_LINKS}" "${x}" + atomic_ln "${BINPATH_LINKS}/${x}" "${ROOT}/usr/bin/" "${TARGET}-${x}" + for fake in ${FAKE_TARGETS} ; do + [[ -f ${ENV_D}/config-${fake} ]] && continue + atomic_ln "${BINPATH_LINKS}/${x}" "${ROOT}/usr/bin" "${fake}-${x}" + done + if [[ ${TARGET} == ${HOST} ]] ; then + atomic_ln "${TARGET}-${x}" "${ROOT}/usr/bin" "${x}" + fi + done + + # + # Generate library / ldscripts symlinks + # + : ${LIBPATH:=/usr/lib/binutils/${TARGET}/${VER}} + cd "${ROOT}/${LIBPATH}" || exit 1 + if [[ ${TARGET} == ${HOST} ]] ; then + dstlib=${ROOT}/usr/${HOST}/lib + else + dstlib=${ROOT}/usr/${HOST}/${TARGET}/lib + fi + # When upgrading, we need to clean up ldscripts and libs + mkdir -p "${dstlib}" + rm -rf "${ROOT}/${BINPATH_LINKS}"/ldscripts + atomic_ln "${LIBPATH}/ldscripts" "${dstlib}" "ldscripts" + find -L "${dstlib}" -type l -exec rm -v {} + + for x in lib* ; do + atomic_ln "${LIBPATH}/${x}" "${dstlib}" "${x}" + done + + # + # Generate include symlinks + # + INCPATH=${LIBPATH}/include + if [[ -d ${ROOT}/${INCPATH} ]] ; then + cd "${ROOT}/${INCPATH}" || exit 1 + if [[ ${HOST} == ${TARGET} ]] ; then + mkdir -p "${ROOT}/usr/include" + for x in * ; do + atomic_ln "${INCPATH}/${x}" "${ROOT}/usr/include" "${x}" + 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 + fi + fi + + # + # Make sure proper paths get updated + # + if [[ ${TARGET} == ${HOST} ]] ; then + DATAPATH=/usr/share/binutils-data/${TARGET}/${VER} + local e="${ROOT}"/etc/env.d/05binutils + local ee="${e}.tmp" + rm -f "${ee}" + [[ -d ${DATAPATH}/man ]] && echo "MANPATH=${DATAPATH}/man" >> "${ee}" + [[ -d ${DATAPATH}/info ]] && echo "INFOPATH=${DATAPATH}/info" >> "${ee}" + # hmm, `ld` has this in SEARCH_DIR(), but ld.so does not ... + if [[ -d ${ROOT}/etc/ld.so.conf.d ]] ; then + local l="${ROOT}"/etc/ld.so.conf.d/05binutils.conf + local ll="${l}.tmp" + echo "/usr/${TARGET}/lib" > "${ll}" + mv_if_diff "${ll}" "${l}" + else + echo "LDPATH=/usr/${TARGET}/lib" >> "${ee}" + fi + mv_if_diff "${ee}" "${e}" + fi + + local c="${ENV_D}/config-${TARGET}" + local cc="${c}.tmp" + echo "CURRENT=${VER}" > "${cc}" + mv_if_diff "${cc}" "${c}" + + eend 0 + + # + # Regen env.d if need/can be + # + if [[ ${ROOT} == "/" ]] && [[ ${TARGET} == ${HOST} ]] ; then + env-update + echo + ewarn "Please remember to run:" + echo + ewarn " # . /etc/profile" + echo + fi + + return 0 +} + +uninstall_target() { + : ${TARGET:=${UARG}} + + if [[ ${TARGET} == ${HOST} ]] ; then + die "refusing to uninstall native binutils" + fi + + shopt -s nullglob + PROFILE="" + + for PROFILE in "${ENV_D}"/${TARGET}-* ; do + ewarn "Removing all signs of ${PROFILE##*/}" + rm -f "${ENV_D}"/${PROFILE} + done + if [[ -z ${PROFILE} ]] && [[ ! -e ${ENV_D}/config-${TARGET} ]] ; then + die "no profiles exist for '${TARGET}'" + fi + + rm -f "${ENV_D}"/config-${TARGET} "${ROOT}"/etc/ld.so.conf.d/05binutils.conf + + # XXX: we still leave behind FAKE_TARGETS in /usr/bin ... + local x + for x in \ + 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} + ) + rm -f "${x[@]}" + done + for x in ansidecl.h bfd.h bfdlink.h dis-asm.h symcat.h ; do + rm -f "${ROOT}"/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} + done + # Delete broken symlinks + local destdir="${ROOT}/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} \ + 2>/dev/null + + rm -f "${ENV_D}"/${TARGET}-* +} + +set_current_profile() { + if [[ ! -f ${ENV_D}/config-${TARGET} ]] ; then + eerror "${argv0}: unable to locate a profile for target: ${TARGET}" + return 1 + fi + + source "${ENV_D}/config-${TARGET}" + + if [[ -z ${CURRENT} ]] ; then + eerror "${argv0}: no binutils profile is active!" + return 1 + fi + + echo "${TARGET}-${CURRENT}" + + return 0 +} +get_current_profile() { echo "${PROFILE}" ; } + +list_profiles() { + local x i target + + if [[ ${ROOT} != / ]] ; then + echo "Using binutils-config info in ${ROOT}" + fi + + set -- "${ENV_D}"/* + target= + i=1 + + for x ; do + # skip broken links and config files + [[ -f ${x} ]] || continue + [[ ${x} == */config-* ]] && continue + + source "${x}" + if [[ ${target} != ${TARGET} ]] ; then + [[ -n ${target} ]] && echo + target=${TARGET} + fi + + x=${x##*/} + if [[ -e ${ENV_D}/config-${TARGET} ]] ; then + source "${ENV_D}/config-${TARGET}" + if [[ ${VER} == ${CURRENT} ]] ; then + [[ ${TARGET} == ${HOST} ]] \ + && x="${x} ${GOOD}*${NORMAL}" \ + || x="${x} ${HILITE}*${NORMAL}" + fi + fi + + # We would align the [...] field like so: + #printf ' [%*ss] %s\n' ${##} "${i}" "${x}" + # but this breaks simple scripting: `binutils -l | awk '{print $2}'` + + # Or we could align the target col like so: + #printf ' [%s]%*s %s\n' "${i}" $(( ${##} - ${#i} )) "" "${x}" + # but i'm not sold that it looks better + + # So keep it simple ... only makes a diff anyways for crazy people + # like me which have 100+ binutils packages installed ... + echo " [$i] ${x}" + ((++i)) + done +} + +switch_linker() { + local bpath ld=$1 + + case ${ld} in + ld.*) ;; + *) die "not supported: linker must start with 'ld.'" ;; + esac + + setup_env || return 1 + bpath="${ROOT}/${BINPATH}" + + # does this binutils even support the requested linker ? + if [[ ! -e ${bpath}/${ld} ]] ; then + die "sorry, but ${PROFILE} doesn't support the ${ld} linker" + fi + + # switch it up + ebegin "Setting default linker to ${ld} for ${PROFILE}" + atomic_ln ${ld} "${bpath}" ld + eend $? +} + +set_HOST() { + # Set HOST to CHOST if it isn't already set + : ${HOST:=${CHOST:-$(portageq envvar CHOST)}} +} + +ENV_D="${ROOT}etc/env.d/binutils" + +DEBUG="no" +NEED_ACTION="yes" +DOIT="switch_profile" +PROFILE="current" +FAKE_TARGETS_USER="" +HOST="" +TARGET="" +unset UARG + +select_action() { + if [[ ${NEED_ACTION} != "no" ]] ; then + NEED_ACTION="no" + DOIT=$1 + else + die "one action at a time!" + fi +} + +while [[ $# -gt 0 ]] ; do + x=$1 + shift + case ${x} in + -c|--get-current-profile) select_action get_current_profile ;; + -l|--list|--list-profiles) select_action list_profiles ;; + -u|--uninstall) select_action uninstall_target ;; + --linker) select_action "switch_linker $1"; shift ;; + -d|--debug) DEBUG="yes" ;; + -h|--help) usage 0 ;; + -V|--version) + unset Header + cvsver="$Header: /var/cvsroot/gentoo-x86/sys-devel/binutils-config/files/binutils-config-3,v 1.11 2013/05/05 05:20:42 vapier Exp $" + cvsver=${cvsver##*binutils-config-} + bver=${cvsver%%,v *} + cvsver=${cvsver#* } + echo "binutils-config-${bver} (r${cvsver%% *})" + exit 0 + ;; + --amd64|--arm|--mips|--x86) + if [[ ${NEED_ACTION} == "yes" ]] ; then + # Make sure we have a space after each target + NEED_ACTION="no" + case ${x} in + --amd64) FAKE_TARGETS_USER="x86_64 ";; + --arm) FAKE_TARGETS_USER="arm armeb ";; + --x86) FAKE_TARGETS_USER="i386 i486 i586 i686 ";; + --mips) FAKE_TARGETS_USER="mips mips64 mipsel mipsel64 ";; + esac + fi + ;; + -*) + die "invalid switch! Try '--help'." + ;; + *) + if [[ ${UARG+set} == "set" ]] ; then + die "only one profile/target at a time please" + fi + NEED_ACTION="maybe" + UARG=${x} + ;; + esac +done + +[[ ${NEED_ACTION} == "yes" ]] && usage 1 +[[ ${DEBUG} == "yes" ]] && set -x + +# All operations need to know the current HOST to figure out +# what is a native target and what is a cross target +set_HOST + +# All operations need to know the profile the user wants +case ${DOIT} in +switch_profile|switch_linker_*) + # decode user's profile choice + x=${UARG:-$(TARGET=${HOST} set_current_profile)} + PROFILE="" + if [[ -z $(echo ${x} | tr -d '[:digit:]') ]] ; then + # User gave us a # representing the profile + i=1 + for y in "${ENV_D}"/* ; do + [[ ${y/config-} != ${y} ]] && continue + + if [[ -f ${y} ]] && [[ ${x} -eq ${i} ]] ; then + PROFILE=${y##*/} + break + fi + ((++i)) + done + fi + + if [[ -z ${PROFILE} ]] ; then + # User gave us a full HOST-ver + x=${x##*/} + if [[ -f ${ENV_D}/${x} ]] ; then + # Valid HOST-ver yeah! + PROFILE=${x} + else + # Not a valid HOST-ver ... + if [[ ! -f ${ENV_D}/config-${x} ]] ; then + # Maybe they just gave us a ver ... + if [[ -f ${ENV_D}/${HOST}-${x} ]] ; then + x=${HOST}-${x} + else + die "could not locate '$x' in '${ENV_D}/'!" + fi + PROFILE=${x} + else + # Maybe they just gave us a target ... pick active profile + PROFILE=$(TARGET=${x} set_current_profile) + fi + fi + fi + ;; +*) + # lookup current profile as the user gave us a target + PROFILE=$(TARGET=${UARG:-${HOST}} set_current_profile) || exit 1 + ;; +esac + +eval ${DOIT} + +# vim:ts=4 diff --git a/sys-devel/binutils-config/ChangeLog b/sys-devel/binutils-config/ChangeLog index 3c874e0..6d6b518 100644 --- a/sys-devel/binutils-config/ChangeLog +++ b/sys-devel/binutils-config/ChangeLog @@ -1,12 +1,12 @@ # ChangeLog for sys-devel/binutils-config # Copyright 1999-2013 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/sys-devel/binutils-config/ChangeLog,v 1.62 2012/08/18 03:57:51 vapier Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-devel/binutils-config/ChangeLog,v 1.64 2013/05/05 05:20:42 vapier Exp $ -*binutils-config-3-r03.1 (10 Jan 2013) + 05 May 2013; Mike Frysinger <vapier@gentoo.org> files/binutils-config-3: + Also try to rmdir target bin/libexec paths when uninstalling. - 10 Jan 2013; Fabian Groffen <grobian@gentoo.org> - +binutils-config-3-r03.1.ebuild, -binutils-config-3-r3.ebuild: - Revbump to silence the linker about a non-existing directory on Darwin + 18 Nov 2012; Mike Frysinger <vapier@gentoo.org> files/binutils-config-3: + Add elfedit and ld.{bfd,gold} to uninstall list. 18 Aug 2012; Mike Frysinger <vapier@gentoo.org> files/binutils-config-3: Fix relative ROOT handling #431104 by Greg Turner. @@ -50,26 +50,6 @@ causing issues with newer ones, and 4.5+ upgrade time is plenty #381633 by Tim Harder. - 22 Feb 2012; Fabian Groffen <grobian@gentoo.org> - -binutils-config-1.9-r04.15.ebuild, -binutils-config-1.9-r04.16.ebuild, - -binutils-config-2-r01.1.ebuild, -files/1.9-extwrapper.patch, - -files/binutils-config-1.9, -files/binutils-config-1.9-libpath-ordering.patch, - -files/binutils-config-1.9-solaris-native-ld.patch, -files/binutils-config-2, - binutils-config-3-r01.1.ebuild: - Cleanup old ebuilds, fix harmless directory not found error. - -*binutils-config-3-r01.1 (22 Feb 2012) - - 22 Feb 2012; Fabian Groffen <grobian@gentoo.org> - +binutils-config-3-r01.1.ebuild, -binutils-config-3-r1.ebuild: - Bump, fixes a -L manipulation problem that can causes compilation/runtime - failures, details see http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo- - alt?view=revision&revision=1715 - - 15 Feb 2012; Fabian Groffen <grobian@gentoo.org> files/binutils-config-3: - Fix double Prefix problem (no revbump to prepare getting rid of - interrevisions) - 05 Dec 2011; Mike Frysinger <vapier@gentoo.org> binutils-config-3-r1.ebuild: Use a blocker dep to avoid pulling in packages we do not need. @@ -135,28 +115,6 @@ +binutils-config-2.ebuild: Touch up code a bit and add support for /etc/ld.so.conf.d/. -*binutils-config-1.9-r04.16 (23 Dec 2009) - - 23 Dec 2009; Fabian Groffen <grobian@gentoo.org> - files/binutils-config-1.9-libpath-ordering.patch, - +binutils-config-1.9-r04.16.ebuild, - files/binutils-config-1.9-solaris-native-ld.patch, metadata.xml: - Snapshot bump, setting BINUTILS_CONFIG_VERBOSE in the environment makes - the wrapper print how exactly it calls the target ld. - -*binutils-config-1.9-r04.13 (31 Jan 2009) - - 31 Jan 2009; Fabian Groffen <grobian@gentoo.org> - +binutils-config-1.9-r04.13.ebuild: - Bumped to toolchain-prefix-wrapper-0.3.1637, with support for FreeBSD, - NetBSD and OpenBSD. - -*binutils-config-1.9-r04.12 (24 Jun 2008) - - 24 Jun 2008; Michael Haubenwallner <haubi@gentoo.org> - +binutils-config-1.9-r04.12.ebuild: - bumped to toolchain-prefix-wrapper-0.3.1632, with dropped lib64 search dir. - *binutils-config-1.9-r4 (06 May 2007) 06 May 2007; Mike Frysinger <vapier@gentoo.org> files/binutils-config-1.9, diff --git a/sys-devel/binutils-config/Manifest b/sys-devel/binutils-config/Manifest index e535e6a..f3a3cd0 100644 --- a/sys-devel/binutils-config/Manifest +++ b/sys-devel/binutils-config/Manifest @@ -1,9 +1,9 @@ -AUX binutils-config-3 14659 SHA256 cbd9da3657fdf9630d060f61924c2efd84b976d4b27b39ce43cc58d7a50fd6e2 SHA512 4f5c9dd61d72a219440411ad3c41b7a6b9099f49587623522fb24047b364ed12d2b728777ae19680b979ccb036f53c4abdbf2e07966d09924ea5998d4361eca7 WHIRLPOOL b179f846c59686a680471bd3b27767aaf2f5ed8a3d7564deb812db7291eea8f3f149f6ad633e23285185918e6f76d7d037576e09820ed889ed327190b9309805 -AUX binutils-config.8 2989 SHA256 ffc462de3eaa865f77f00e36275a0a9b0b51782d9d4d5fcfad18583a13adf6e5 SHA512 7ddc50ce45e23e8c7c2828dc0c7d9e54581180e4770f38fa0bfb8ae62027fcae2f88f86a33cb9ff32828a4d951294381aa8da229d2dec60c6f07b27a2ea16ab1 WHIRLPOOL 4c93babb7ba999b622f7d1f4c2271afc4eb9e61f523d74898e16e13f78884835ebf2ac16802fd160f88bb7235ad88248ef81cc9ca026eedccbeed90feef4bd1a -AUX dynl-and-targetlib.patch 4115 SHA256 23235ba737a23a1ea5fc64454d1192c521bafc60caa3c24dce8b94cba1863d58 SHA512 9249560d2ad28fc08d71a84ad6f44d533899cc702178dcb7c5fa640b77f2e1706dd326188197b74d6398dcbd48b63ab923b849579abb87ed7633cc8aaa351dde WHIRLPOOL 6f0391561252264fff140c011cb08eb95cb10662ff313f844ddc4543562da572dc057a2be19ec9a2d7398feaed2c61d59a1498e62c12938079bd24a7512ed966 -AUX no-targetlib.patch 851 SHA256 dae50a6b02d318084d8acff4128871bd4a6185df70a35fa6a27812f3ec2a7ffb SHA512 a2908ca8408e355b066bd259d00b65ca42ee5eec254f4f39f89deb40da8c53e2284d2ae663977a4390c463cad472834f601b11cc4d05612031d5642cebd864dd WHIRLPOOL 7f10fa36b941a39e8569d84441c38dff1f33dce159085a780cef83791587abc128e8313372ec79e88f7b26700af95f6d7d362c0f73517ad1864ca682c30deebc -DIST toolchain-prefix-wrapper-0.3.1723.tar.xz 95352 SHA256 fdb4c2a82ddcee8330ea6274db02b78ddc921670f3184028f7bbc83b5054ea29 SHA512 308933057c0888bca929aedebae7b3a54cb355a31de2568ef59871d541440267c14815556b5d40e7049fc1e3d297a239dd247393248ff6413c7a8e189357ca27 WHIRLPOOL f04684e4c1717d2d2e5e3c1a86b3c68807047c83e35625bc3e99c1bc547c16b2e208a13a1e8bce5143ac2edc07b275439d0a61663ebab4e1437ea5d68d7a3db6 -EBUILD binutils-config-3-r03.1.ebuild 1458 SHA256 0f41629f030f5555b8ea1be8953524b4fcb429e16df655b96abf498d7d98d8e3 SHA512 954793db8f85603c6019cfc1c8a06dbc4462e0cb55100c7b1b6936fc84a45fb4cef235dd0929f6daa2a5c77924d206388be115fa210c1a21aa861143f1ba7f87 WHIRLPOOL 7edccf73340030c4bb15b5874782673150b15fd58b79a73b44f028e56706a5e812500ea348467e1a2a1ffdf709627c4902f6579e0c203d74de9667530447ea4f -EBUILD binutils-config-3-r03.2.ebuild 1556 SHA256 ef3702973e77f437de85d8f8b4be19a2c9081cee01f6e6b4da905fec1dfa7264 SHA512 01269d4af22f16ae704b35e2c2763aaaf3224eef8ae5abf156a9c98ee6e7c47453018cf13f82031d049b93e60a012f3b034936e310272ff14ea777c6bb25eedd WHIRLPOOL a91bfb6717919ddec3c8a5157e5023484c8bf841cebaadd980cd4862b8a7d79568a65f9a4f840fca16c3f42e3bb455e715b4c6d79ea4efb6327c8a682577a8fc -MISC ChangeLog 12381 SHA256 77944c6c899e025849c6d5dc86723dfc590412eb983c8202b46390ea75511ca3 SHA512 0117eae44920d70646834e0e29250610b93cef2bcfb51224a6e6854019480f4600fe5419802455d1ca03cc306782e01ec5656214991a0dc33f33441f3a7c0def WHIRLPOOL a205fc810e90abe0d7e197a6914ea245dda0ac5a952d324c4ad3fa3aec1d0870fed20ae9487475a7f339eb10d327dbd413a4f09cfb3d76b5ab628e1322159f5d +AUX binutils-config-1.9 11043 SHA256 20becd27cd1161d3afcd079ebff883b8eba3e698171937d82a9575dfa19a2373 SHA512 d0366bd547d7c2adddf30975a361b2f25d008f0203db9e53cd81e635fd081e0ce13940a1df511f6edc7a11d6c4e641567cb750006cbbaa7b5bfd118bf6f87464 WHIRLPOOL d2c06206ffb351226db6db89e305042c03cf3cfa628c440fd3fd7274bf0c62c8ba61599f4997714075dc9f61b57a46709824eded2a31678bc2668e43c982ce91 +AUX binutils-config-2 11440 SHA256 5e923d1445910b9b9d1e455e52313087098689359846db0dc3fa52d33b63b192 SHA512 16b8bc2277bb50fb803377b192368a7abf7c97b5959bdd0d67fcf508220164d29ee2cfc1526ecfce7125b7492a0a5e4f094e948fa5ba9af44487229af3d91197 WHIRLPOOL 3acedb96e6c0c97e2223aa5fffcfb59f7e7b311c883e1557191db14b166a01d14ecd6eafbd4a4dbd33ceb2ca388fa7bf54d8291a24bb5e26a5634e2c8fb2a2df +AUX binutils-config-3 13874 SHA256 d4395a6480a179165098433235726f416aea4029474ecf93534c4ec844422788 SHA512 8c486629109fd67bebc248a629d38bc2ad0546c70fe42e82ccb609932ec2cdbe32545486f437bb15c81318ad7d9f962fdd63fe1156ea844c31ba2812362a792c WHIRLPOOL 8555808ff549955ba93b9331ccf5424056817339745309b6f5b3064f594f22ae44eeab0cd3b9724b67fe1860cfb5048b8c95792075b6b4423659a75ef6633783 +AUX binutils-config.8 4113 SHA256 ec7cb82331c80e15581e0936a5bf5edb3cde78bec3c3ede647926821086a1e6f SHA512 608e32ca64a82e0975cb247d30914db25668f637e30fd486f7322566065cc420470d237415da53ba7eb12daf4389b049b5ec8b2f8af598bf03803f48fd77f933 WHIRLPOOL d1ec82404f639718c51a1f983c1d60212ee6e943c6225c16bf4a2a24a8e7aa22093cce0fefa0f331ae7480b7b03ef10931d516e7ecf0a051415565eb583145a0 +EBUILD binutils-config-1.9-r4.ebuild 626 SHA256 4445f3282acda5b7c96146974adefc47315c437b5eb008daab9ac5f87a18d99d SHA512 82089adb1b63b386280f512a096836189bcd42995f7058cb211c7b01860788be24a4112c3345dd4042ed7b2311bc7b5a40248e55ad2e958519d6b8fd7e341d5e WHIRLPOOL b4409b6e396e42bf0dea54a1cc8aa912d7f1f215d7143d955ead38b1dea883d95b0b518fe198df72f21af8a954b148b7d18d292d6965a82417856fffccaa0ac7 +EBUILD binutils-config-2-r1.ebuild 627 SHA256 06d97c5306e671ccf55fcad8eec8dcd20e1c6c3bb8e4646771d62af5f1e1754f SHA512 856c552643f31f3df0218442c0290f7cb090c5088e0796ad03e5e07f5bdf0f8d3233b1659556e5768909a557971e5e5ebc702ba4a39658c7a862c4d5336364e6 WHIRLPOOL e5af63fd41361217f60dcfa84a605616a7bb0037fb986f00f3f866dff19bfa3fb96365b10be4854b6a27d643ccb2d682910644df5941e7f4d88f341ae2e6ad3c +EBUILD binutils-config-3-r3.ebuild 707 SHA256 8968f1bffb5833a1c07218cd58a22d916b3893595bc9a3fb35c7cde5e3723430 SHA512 5c186730e338c9e323d791d18a620c25b9c4bddf33bf022b49aad41ee0f21a260ef8faa195e93ece8b8073b74676e78d88a7dfd5d2df9cc19afabddf0e699625 WHIRLPOOL 859523cfdd14f969490b5612a59dfe6f4310b41d892dc0358aa55ed9c3c862ef70ac660192b1f85a1d2b39100b59ab73995d2ffd675a81c1268327aeb759c74f +MISC ChangeLog 10639 SHA256 a8af81fa54be4a7b190f0bcda2dd76e4f0fa8a7ce378137905c6651e14812789 SHA512 5459aef57257c30e1d11d1fdbda8250212d8ed279eae39a05af0608e182dca1711587c0e9b1278300ac68124528fc76b4554d3b71c1c99d9ce623e275d89faf5 WHIRLPOOL 2789b5b110eb6332e0fc4f006c1aadd4763fd34b6deea857e9d6f399fbbbb18b1ec8819d2d7d10dd05e1565b2b42ddb32746ab8787679f6d2727676d766f0350 MISC metadata.xml 162 SHA256 65a915d44de1f01d4b7f72d313b4192c38374a9835d24988c00c1e73dca5805a SHA512 2a857e10b277827773a6c7967e070d7bfff23d75f44fa4d4fa8a7339df3225e6dba512a865d91c9c55bdb013dafdce85dface1b845acfbb5473e232666cdda45 WHIRLPOOL f7586c1570803b3e646f0be89ba6c767e82ec6889ef92d15f62a38f1410ed9d82c36892e5e83f694471959783d0d5ad667f1a39b7eb51f2080c269d5fa23d819 diff --git a/sys-devel/binutils-config/a.out b/sys-devel/binutils-config/a.out Binary files differnew file mode 100755 index 0000000..6f77b45 --- /dev/null +++ b/sys-devel/binutils-config/a.out diff --git a/sys-devel/binutils-config/binutils-config-1.9-r4.ebuild b/sys-devel/binutils-config/binutils-config-1.9-r4.ebuild new file mode 100644 index 0000000..38fbf8f --- /dev/null +++ b/sys-devel/binutils-config/binutils-config-1.9-r4.ebuild @@ -0,0 +1,19 @@ +# Copyright 1999-2011 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sys-devel/binutils-config/binutils-config-1.9-r4.ebuild,v 1.2 2011/02/06 11:30:43 leio Exp $ + +DESCRIPTION="Utility to change the binutils version being used" +HOMEPAGE="http://www.gentoo.org/" +SRC_URI="" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="alpha amd64 arm hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc x86 ~sparc-fbsd ~x86-fbsd" +IUSE="" + +RDEPEND="userland_GNU? ( >=sys-apps/findutils-4.2 )" + +src_install() { + newbin "${FILESDIR}"/${PN}-${PV} ${PN} || die + doman "${FILESDIR}"/${PN}.8 +} diff --git a/sys-devel/binutils-config/binutils-config-2-r1.ebuild b/sys-devel/binutils-config/binutils-config-2-r1.ebuild new file mode 100644 index 0000000..8edda86 --- /dev/null +++ b/sys-devel/binutils-config/binutils-config-2-r1.ebuild @@ -0,0 +1,19 @@ +# Copyright 1999-2011 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sys-devel/binutils-config/binutils-config-2-r1.ebuild,v 1.7 2011/07/10 23:39:04 halcy0n Exp $ + +DESCRIPTION="Utility to change the binutils version being used" +HOMEPAGE="http://www.gentoo.org/" +SRC_URI="" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="alpha amd64 arm hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc x86 ~sparc-fbsd ~x86-fbsd" +IUSE="" + +RDEPEND="userland_GNU? ( >=sys-apps/findutils-4.2 )" + +src_install() { + newbin "${FILESDIR}"/${PN}-${PV} ${PN} || die + doman "${FILESDIR}"/${PN}.8 +} diff --git a/sys-devel/binutils-config/binutils-config-3-r03.1.ebuild b/sys-devel/binutils-config/binutils-config-3-r03.1.ebuild deleted file mode 100644 index 753ed32..0000000 --- a/sys-devel/binutils-config/binutils-config-3-r03.1.ebuild +++ /dev/null @@ -1,44 +0,0 @@ -# Copyright 1999-2013 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/sys-devel/binutils-config/binutils-config-3-r3.ebuild,v 1.9 2012/07/29 18:36:13 armin76 Exp $ - -EAPI=3 - -inherit eutils toolchain-funcs prefix - -DESCRIPTION="Utility to change the binutils version being used - prefix version" -HOMEPAGE="http://www.gentoo.org/" -W_VER="0.3.1723" -SRC_URI="http://dev.gentoo.org/~grobian/distfiles/toolchain-prefix-wrapper-${W_VER}.tar.xz" - -LICENSE="GPL-2" -SLOT="0" -KEYWORDS="~ppc-aix ~x64-freebsd ~x86-freebsd ~hppa-hpux ~ia64-hpux ~x86-interix ~amd64-linux ~ia64-linux ~x86-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris" -IUSE="sunld" - -RDEPEND="userland_GNU? ( !<sys-apps/findutils-4.2 )" - -S=${WORKDIR}/toolchain-prefix-wrapper-${W_VER} - -src_prepare() { - cp "${FILESDIR}"/${P} ./${PN} || die - eprefixify ${PN} || die "eprefixify failed." -} - -src_configure() { - econf --with-macosx-version-min=${MACOSX_DEPLOYMENT_TARGET} \ - $(use_with sunld native-ld) -} - -src_install() { - emake install DESTDIR="${D}" || die "emake install failed." - dobin ${PN} || die "cannot install ${PN} script." -} - -pkg_postinst() { - # refresh all links and the wrapper - if [[ ${ROOT%/} == "" ]] ; then - [[ -f ${EROOT}/etc/env.d/binutils/config-${CHOST} ]] \ - && binutils-config $(${EROOT}/usr/bin/binutils-config --get-current-profile) - fi -} diff --git a/sys-devel/binutils-config/binutils-config-3-r03.2.ebuild b/sys-devel/binutils-config/binutils-config-3-r03.2.ebuild deleted file mode 100644 index 0d321da..0000000 --- a/sys-devel/binutils-config/binutils-config-3-r03.2.ebuild +++ /dev/null @@ -1,49 +0,0 @@ -# Copyright 1999-2013 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/sys-devel/binutils-config/binutils-config-3-r3.ebuild,v 1.9 2012/07/29 18:36:13 armin76 Exp $ - -EAPI=4 - -inherit eutils toolchain-funcs prefix autotools - -DESCRIPTION="Utility to change the binutils version being used - prefix version" -HOMEPAGE="http://www.gentoo.org/" -W_VER="0.3.1723" -SRC_URI="http://dev.gentoo.org/~grobian/distfiles/toolchain-prefix-wrapper-${W_VER}.tar.xz" - -LICENSE="GPL-2" -SLOT="0" -KEYWORDS="~ppc-aix ~x64-freebsd ~x86-freebsd ~hppa-hpux ~ia64-hpux ~x86-interix ~amd64-linux ~ia64-linux ~x86-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris" -IUSE="sunld dynl targetlib" - -RDEPEND="userland_GNU? ( !<sys-apps/findutils-4.2 )" - -S=${WORKDIR}/toolchain-prefix-wrapper-${W_VER} - -src_prepare() { - cp "${FILESDIR}"/${P} ./${PN} - epatch "${FILESDIR}"/dynl-and-targetlib.patch - eprefixify ${PN} - eautoreconf - use targetlib || epatch "${FILESDIR}"/no-targetlib.patch -} - -src_configure() { - econf --with-macosx-version-min=${MACOSX_DEPLOYMENT_TARGET} \ - $(use_with sunld native-ld) \ - $(use_with dynl prefix-dynl) \ - $(use_with targetlib) -} - -src_install() { - emake install DESTDIR="${D}" - dobin ${PN} -} - -pkg_postinst() { - # refresh all links and the wrapper - if [[ ${ROOT%/} == "" ]] ; then - [[ -f ${EROOT}/etc/env.d/binutils/config-${CHOST} ]] \ - && binutils-config $(${EROOT}/usr/bin/binutils-config --get-current-profile) - fi -} diff --git a/sys-devel/binutils-config/binutils-config-3-r3.ebuild b/sys-devel/binutils-config/binutils-config-3-r3.ebuild new file mode 100644 index 0000000..5ceaf2d --- /dev/null +++ b/sys-devel/binutils-config/binutils-config-3-r3.ebuild @@ -0,0 +1,26 @@ +# Copyright 1999-2012 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sys-devel/binutils-config/binutils-config-3-r3.ebuild,v 1.9 2012/07/29 18:36:13 armin76 Exp $ + +DESCRIPTION="Utility to change the binutils version being used" +HOMEPAGE="http://www.gentoo.org/" +SRC_URI="" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="alpha amd64 arm hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd" +IUSE="" + +RDEPEND="userland_GNU? ( !<sys-apps/findutils-4.2 )" + +inherit prefix + +src_unpack() { + cp "${FILESDIR}"/${P} ${PN} || die + eprefixify ${PN} || die +} + +src_install() { + dobin ${PN} || die + doman "${FILESDIR}"/${PN}.8 +} diff --git a/sys-devel/binutils-config/files/binutils-config-1.9 b/sys-devel/binutils-config/files/binutils-config-1.9 new file mode 100755 index 0000000..f7e03a7 --- /dev/null +++ b/sys-devel/binutils-config/files/binutils-config-1.9 @@ -0,0 +1,410 @@ +#!/bin/bash +# Copyright 1999-2007 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sys-devel/binutils-config/files/binutils-config-1.9,v 1.10 2007/05/06 09:04:01 vapier Exp $ + +# Format of /etc/env.d/binutils/: +# config-TARGET: CURRENT=version for TARGET +# TARGET-VER: has a TARGET and VER variable + +[[ -z ${ROOT} ]] && ROOT="/" +[[ ${ROOT} != */ ]] && ROOT="${ROOT}/" +[[ ${ROOT} != /* ]] && ROOT="${PWD}${ROOT}" + +cd / + +trap ":" INT QUIT TSTP + +argv0=${0##*/} +source /etc/init.d/functions.sh || { + echo "${argv0}: Could not source /etc/init.d/functions.sh!" 1>&2 + exit 1 +} +esyslog() { :; } +umask 022 + +usage() { +cat << USAGE_END + +Usage: ${HILITE}binutils-config${NORMAL} ${GOOD}[options]${NORMAL} ${BRACKET}[binutils profile]${NORMAL} + +${HILITE}General Options:${NORMAL} + ${GOOD}-c, --get-current-profile${NORMAL} Print current profile + ${GOOD}-l, --list-profiles${NORMAL} Print a list of available profiles + ${GOOD}-u, --uninstall${NORMAL} Remove all signs of specified target + ${GOOD}-d, --debug${NORMAL} Execute with debug output + +${HILITE}Arch Specific Cruft:${NORMAL} + ${GOOD}--amd64${NORMAL} Install extra amd64 links (x86_64) + ${GOOD}--arm${NORMAL} Install extra arm links (arm/armeb) + ${GOOD}--mips${NORMAL} Install extra mips links (mips/mipsel) + ${GOOD}--x86${NORMAL} Install extra x86 links (i[3-6]86) + +Profile names are of the form: ${BRACKET}<CTARGET>-<binutils version>${NORMAL} +For example: ${BRACKET}i686-pc-linux-gnu-2.15.92.0.2${NORMAL} + +For more info, please see ${HILITE}binutils-config${NORMAL}(8). +USAGE_END +} + +switch_profile() { + unset TARGET VER LIBPATH FAKE_TARGETS + source "${ENV_D}/${PROFILE}" + if [[ -z ${TARGET} ]] ; then + eerror "${PROFILE} is invalid (no \$TARGET defined) :(" + return 1 + fi + if [[ -z ${VER} ]] ; then + eerror "${PROFILE} is invalid (no \$VER defined) :(" + return 1 + fi + + # + # Older installs don't have 'FAKE_TARGETS' defined, so lets + # update these env.d entries so that we don't force the poor + # user to re-emerge their binutils just for 1 envvar :/ + # + if [[ ${FAKE_TARGETS-poor user} == "poor user" ]] ; then + local targ=${TARGET/-*} + local FAKE_TARGETS=${TARGET} + case ${targ} in + mips|powerpc|sparc) + FAKE_TARGETS="${FAKE_TARGETS} ${TARGET/-/64-}";; + mips64|powerpc64|sparc64) + FAKE_TARGETS="${FAKE_TARGETS} ${TARGET/64-/-}";; + esac + echo "FAKE_TARGETS=\"${FAKE_TARGETS}\"" >> "${ENV_D}/${PROFILE}" + fi + local fake_targ_append="${TARGET#*-}" + FAKE_TARGETS="${FAKE_TARGETS} ${FAKE_TARGETS_USER// /-${fake_targ_append} }" + + ebegin "Switching to ${PROFILE}" + + # + # Generate binary symlinks + # On systems that do 32bit/64bit, we need to fake an + # extra set of binary names (${FAKE_TARGETS}) + # + BINPATH="" + BINPATH_LINKS="" + if [[ ${TARGET} != ${HOST} ]] ; then + # + # 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} + fi + fi + if [[ -z ${BINPATH} ]] ; then + BINPATH=/usr/${TARGET}/binutils-bin/${VER} + BINPATH_LINKS=/usr/${TARGET}/bin + fi + cd "${ROOT}/${BINPATH}" || exit 1 + mkdir -p "${ROOT}/${BINPATH_LINKS}" "${ROOT}/usr/bin" + for x in * ; do + ln -sf "${BINPATH}/${x}" "${ROOT}/${BINPATH_LINKS}/${x}" + ln -sf "${BINPATH_LINKS}/${x}" "${ROOT}"/usr/bin/${TARGET}-${x} + for fake in ${FAKE_TARGETS} ; do + [[ -f ${ENV_D}/config-${fake} ]] && continue + ln -sf "${BINPATH_LINKS}/${x}" "${ROOT}"/usr/bin/${fake}-${x} + done + if [[ ${TARGET} == ${HOST} ]] ; then + ln -sf ${TARGET}-${x} "${ROOT}"/usr/bin/${x} + fi + done + + # + # Generate library / ldscripts symlinks + # + LIBPATH=${LIBPATH:-/usr/lib/binutils/${TARGET}/${VER}} + cd "${ROOT}/${LIBPATH}" || exit 1 + if [[ ${TARGET} == ${HOST} ]] ; then + dstlib=${ROOT}/usr/${HOST}/lib + else + dstlib=${ROOT}/usr/${HOST}/${TARGET}/lib + # Clean out old path + rm -rf "${ROOT}"/usr/${TARGET}/lib/ldscripts + rmdir "${ROOT}"/usr/${TARGET}/lib >& /dev/null + fi + # When upgrading, we need to clean up ldscripts and libs + rm -rf "${dstlib}/ldscripts" "${ROOT}/${BINPATH_LINKS}"/ldscripts + mkdir -p "${dstlib}" + ln -sf "${LIBPATH}/ldscripts" "${dstlib}"/ldscripts + find -L "${dstlib}" -type l -exec rm {} \; + for x in lib* ; do + ln -sf "${LIBPATH}/${x}" "${dstlib}/${x}" + done + + # + # Generate include symlinks + # + INCPATH=${LIBPATH}/include + if [[ -d ${ROOT}/${INCPATH} ]] ; then + cd "${ROOT}/${INCPATH}" || exit 1 + if [[ ${HOST} == ${TARGET} ]] ; then + mkdir -p "${ROOT}/usr/include" + for x in * ; do + ln -sf "${INCPATH}/${x}" "${ROOT}/usr/include/${x}" + done + else + # Clean out old path + 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 + fi + fi + + # + # Make sure proper paths get updated + # + if [[ ${TARGET} == ${HOST} ]] ; then + DATAPATH=/usr/share/binutils-data/${TARGET}/${VER} + [[ -d ${DATAPATH}/man ]] && \ + echo "MANPATH=${DATAPATH}/man" > "${ROOT}"/etc/env.d/05binutils + [[ -d ${DATAPATH}/info ]] && \ + echo "INFOPATH=${DATAPATH}/info" >> "${ROOT}"/etc/env.d/05binutils + # hmm, `ld` has this in SEARCH_DIR(), but ld.so does not ... + echo "LDPATH=/usr/${TARGET}/lib" >> "${ROOT}"/etc/env.d/05binutils + fi + + eend 0 + + echo "CURRENT=${VER}" > "${ENV_D}/config-${TARGET}" + + # + # Regen env.d if need/can be + # + if [[ ${ROOT} == "/" ]] && [[ ${TARGET} == ${HOST} ]] ; then + env-update + echo + ewarn "Please remember to run:" + echo + ewarn " # source /etc/profile" + echo + fi + + return 0 +} + +uninstall_target() { + if [[ ${TARGET} == ${HOST} ]] ; then + eerror "${argv0}: Refusing to uninstall native binutils" + exit 1 + fi + + shopt -s nullglob + PROFILE="" + + for PROFILE in "${ENV_D}"/${TARGET}-* ; do + ewarn "Removing all signs of ${PROFILE##*/}" + rm -f "${ENV_D}"/${PROFILE} + done + if [[ -z ${PROFILE} ]] && [[ ! -e ${ENV_D}/config-${TARGET} ]] ; then + eerror "${argv0}: No profiles exist for '${TARGET}'" + exit 1 + fi + + rm -f "${ENV_D}"/config-${TARGET} + + # XXX: we still leave behind FAKE_TARGETS in /usr/bin ... + for x in addr2line ar as c++filt elf2flt flthdr gprof ld ld.real \ + nm objcopy objdump ranlib readelf size strings strip ; do + rm -f "${ROOT}"/usr/bin/${TARGET}-${x} + rm -f "${ROOT}"/usr/{${HOST}/,}${TARGET}/bin/${x} + rm -f "${ROOT}"/usr/libexec/gcc/${TARGET}/${x} + done + for x in ansidecl.h bfd.h bfdlink.h dis-asm.h symcat.h ; do + rm -f "${ROOT}"/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} + done + # Delete broken symlinks + local destdir="${ROOT}/usr/${HOST}/${TARGET}" + rm -f "${destdir}"/lib/ldscripts + find -L "${destdir}"/lib -type l -exec rm {} \; + rmdir "${destdir}"/lib "${destdir}" 2>/dev/null + rmdir "${destdir}"/{bin,include,lib,usr} "${destdir}" 2>/dev/null + rmdir "${ROOT}"/var/db/pkg/cross-${TARGET} 2>/dev/null + + rm -f "${ENV_D}"/${TARGET}-* +} + +get_current_profile() { + if [[ ! -f ${ENV_D}/config-${PROFILE} ]] ; then + eerror "${argv0}: No binutils profile is active!" + return 1 + fi + + source "${ENV_D}/config-${PROFILE}" + + if [[ -z ${CURRENT} ]] ; then + eerror "${argv0}: No binutils profile is active!" + return 1 + fi + + echo "${PROFILE}-${CURRENT}" + + return 0 +} + +list_profiles() { + local i=1 + + set_HOST + + if [[ ${ROOT} != / ]] ; then + echo "Using binutils-config info in ${ROOT}" + fi + target= + for x in "${ENV_D}"/* ; do + if [[ -f ${x} ]] && [[ ${x/\/config-} == ${x} ]] ; then + source "${x}" + if [[ ${target} != ${TARGET} ]] ; then + [[ -n ${target} ]] && echo + target=${TARGET} + fi + + x=${x##*/} + if [[ -e ${ENV_D}/config-${TARGET} ]] ; then + source "${ENV_D}/config-${TARGET}" + if [[ ${VER} == ${CURRENT} ]] ; then + [[ ${TARGET} == ${HOST} ]] \ + && x="${x} ${GOOD}*${NORMAL}" \ + || x="${x} ${HILITE}*${NORMAL}" + fi + fi + echo " [${i}] ${x}" + ((++i)) + fi + done +} + +set_HOST() { + [[ -n ${HOST} ]] && return 0 + + if [[ -z ${CHOST} ]] ; then + HOST=$(portageq envvar CHOST) + else + HOST=${CHOST} + fi +} + +ENV_D="${ROOT}etc/env.d/binutils" + +DEBUG="no" +NEED_ACTION="yes" +DOIT="switch_profile" +PROFILE="" +FAKE_TARGETS_USER="" +HOST="" + +while [[ $# -gt 0 ]] ; do + x=$1 + shift + case ${x} in + -c|--get-current-profile) + if [[ ${NEED_ACTION} == "yes" ]] ; then + NEED_ACTION="no" + DOIT="get_current_profile" + fi + ;; + -d|--debug) + DEBUG="yes" + ;; + -l|--list-profiles) + if [[ ${NEED_ACTION} == "yes" ]] ; then + NEED_ACTION="no" + DOIT="list_profiles" + fi + ;; + -u|--uninstall) + if [[ ${NEED_ACTION} == "yes" ]] ; then + NEED_ACTION="no" + DOIT="uninstall_target" + TARGET=$1 + shift + fi + ;; + -h|--help) + usage + exit 0 + ;; + -V|--version) + cvsver="$Header: /var/cvsroot/gentoo-x86/sys-devel/binutils-config/files/binutils-config-1.9,v 1.10 2007/05/06 09:04:01 vapier Exp $" + cvsver=${cvsver##*binutils-config-} + bver=${cvsver%%,v *} + cvsver=${cvsver#* } + echo "binutils-config-${bver} (r${cvsver%% *})" + exit 0 + ;; + --amd64|--arm|--mips|--x86) + if [[ ${NEED_ACTION} == "yes" ]] ; then + # Make sure we have a space after each target + NEED_ACTION="no" + [[ -z ${PROFILE} ]] && PROFILE="current" + case ${x} in + --amd64) FAKE_TARGETS_USER="x86_64 ";; + --arm) FAKE_TARGETS_USER="arm armeb ";; + --x86) FAKE_TARGETS_USER="i386 i486 i586 i686 ";; + --mips) FAKE_TARGETS_USER="mips mips64 mipsel mipsel64 ";; + esac + fi + ;; + -*) + eerror "${0##*/}: Invalid switch! Try '--help'." + exit 1 + ;; + *) + if [[ -n ${PROFILE} ]] && [[ ${PROFILE} != "current" ]] ; then + eerror "${argv0}: Too many arguments! Run ${argv0} without parameters for help." + exit 1 + fi + + if [[ -z $(echo ${x} | tr -d '[:digit:]') ]] ; then + # User gave us a # representing the profile + i=1 + for y in "${ENV_D}"/* ; do + [[ ${y/config-} != ${y} ]] && continue + + if [[ -f ${y} ]] && [[ ${x} -eq ${i} ]] ; then + PROFILE=${y##*/} + NEED_ACTION="no" + break + fi + ((++i)) + done + fi + + if [[ -z ${PROFILE} ]] ; then + # User gave us a full HOST-ver + x=${x##*/} + if [[ ! -f ${ENV_D}/${x} ]] && [[ ! -f ${ENV_D}/config-${x} ]] ; then + # Maybe they just gave us a ver ... + set_HOST + if [[ -f ${ENV_D}/${HOST}-${x} ]] ; then + x=${HOST}-${x} + else + eerror "${argv0}: Could not locate '$x' in '${ENV_D}/'!" + exit 1 + fi + fi + PROFILE=${x} + NEED_ACTION="no" + fi + ;; + esac +done + +[[ ${NEED_ACTION} == "yes" ]] && usage && exit 1 +[[ ${DEBUG} == "yes" ]] && set -x + +[[ ${DOIT} != "list_profiles" ]] && set_HOST +[[ -z ${PROFILE} ]] && PROFILE=${HOST} +[[ ${PROFILE} == "current" ]] && PROFILE=$(PROFILE=${HOST} get_current_profile) +eval ${DOIT} + +# vim:ts=4 diff --git a/sys-devel/binutils-config/files/binutils-config-2 b/sys-devel/binutils-config/files/binutils-config-2 new file mode 100755 index 0000000..bbb8f8d --- /dev/null +++ b/sys-devel/binutils-config/files/binutils-config-2 @@ -0,0 +1,434 @@ +#!/bin/bash +# Copyright 1999-2009 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sys-devel/binutils-config/files/binutils-config-2,v 1.3 2011/04/03 21:44:42 vapier Exp $ + +# Format of /etc/env.d/binutils/: +# config-TARGET: CURRENT=version for TARGET +# TARGET-VER: has a TARGET and VER variable + +: ${ROOT:=/} +[[ ${ROOT} != */ ]] && ROOT="${ROOT}/" +[[ ${ROOT} != /* ]] && ROOT="${PWD}${ROOT}" + +cd / + +trap ":" INT QUIT TSTP + +argv0=${0##*/} +source /etc/init.d/functions.sh || { + echo "${argv0}: Could not source /etc/init.d/functions.sh!" 1>&2 + exit 1 +} +esyslog() { :; } +umask 022 + +usage() { +cat << USAGE_END + +Usage: ${HILITE}binutils-config${NORMAL} ${GOOD}[options]${NORMAL} ${BRACKET}[binutils profile]${NORMAL} + +${HILITE}General Options:${NORMAL} + ${GOOD}-c, --get-current-profile${NORMAL} Print current profile + ${GOOD}-l, --list-profiles${NORMAL} Print a list of available profiles + ${GOOD}-u, --uninstall${NORMAL} Remove all signs of specified target + ${GOOD}-d, --debug${NORMAL} Execute with debug output + +${HILITE}Arch Specific Cruft:${NORMAL} + ${GOOD}--amd64${NORMAL} Install extra amd64 links (x86_64) + ${GOOD}--arm${NORMAL} Install extra arm links (arm/armeb) + ${GOOD}--mips${NORMAL} Install extra mips links (mips/mipsel) + ${GOOD}--x86${NORMAL} Install extra x86 links (i[3-6]86) + +Profile names are of the form: ${BRACKET}<CTARGET>-<binutils version>${NORMAL} +For example: ${BRACKET}i686-pc-linux-gnu-2.15.92.0.2${NORMAL} + +For more info, please see ${HILITE}binutils-config${NORMAL}(8). +USAGE_END + + exit ${1:-1} +} + +mv_if_diff() { + if cmp -s "$1" "$2" ; then + rm -f "$1" + else + mv -f "$1" "$2" + fi +} + +switch_profile() { + unset TARGET VER LIBPATH FAKE_TARGETS + source "${ENV_D}/${PROFILE}" + if [[ -z ${TARGET} ]] ; then + eerror "${PROFILE} is invalid (no \$TARGET defined) :(" + return 1 + fi + if [[ -z ${VER} ]] ; then + eerror "${PROFILE} is invalid (no \$VER defined) :(" + return 1 + fi + + # + # Older installs don't have 'FAKE_TARGETS' defined, so lets + # update these env.d entries so that we don't force the poor + # user to re-emerge their binutils just for 1 envvar :/ + # + if [[ ${FAKE_TARGETS-poor user} == "poor user" ]] ; then + local targ=${TARGET/-*} + local FAKE_TARGETS=${TARGET} + case ${targ} in + mips|powerpc|sparc) + FAKE_TARGETS="${FAKE_TARGETS} ${TARGET/-/64-}";; + mips64|powerpc64|sparc64) + FAKE_TARGETS="${FAKE_TARGETS} ${TARGET/64-/-}";; + esac + echo "FAKE_TARGETS=\"${FAKE_TARGETS}\"" >> "${ENV_D}/${PROFILE}" + fi + local fake_targ_append="${TARGET#*-}" + FAKE_TARGETS="${FAKE_TARGETS} ${FAKE_TARGETS_USER// /-${fake_targ_append} }" + + ebegin "Switching to ${PROFILE}" + + # + # Generate binary symlinks + # On systems that do 32bit/64bit, we need to fake an + # extra set of binary names (${FAKE_TARGETS}) + # + BINPATH="" + BINPATH_LINKS="" + if [[ ${TARGET} != ${HOST} ]] ; then + # + # 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} + fi + fi + if [[ -z ${BINPATH} ]] ; then + BINPATH=/usr/${TARGET}/binutils-bin/${VER} + BINPATH_LINKS=/usr/${TARGET}/bin + fi + cd "${ROOT}/${BINPATH}" || exit 1 + mkdir -p "${ROOT}/${BINPATH_LINKS}" "${ROOT}/usr/bin" + for x in * ; do + ln -sf "${BINPATH}/${x}" "${ROOT}/${BINPATH_LINKS}/${x}" + ln -sf "${BINPATH_LINKS}/${x}" "${ROOT}"/usr/bin/${TARGET}-${x} + for fake in ${FAKE_TARGETS} ; do + [[ -f ${ENV_D}/config-${fake} ]] && continue + ln -sf "${BINPATH_LINKS}/${x}" "${ROOT}"/usr/bin/${fake}-${x} + done + if [[ ${TARGET} == ${HOST} ]] ; then + ln -sf ${TARGET}-${x} "${ROOT}"/usr/bin/${x} + fi + done + + # + # Generate library / ldscripts symlinks + # + : ${LIBPATH:=/usr/lib/binutils/${TARGET}/${VER}} + cd "${ROOT}/${LIBPATH}" || exit 1 + if [[ ${TARGET} == ${HOST} ]] ; then + dstlib=${ROOT}/usr/${HOST}/lib + else + dstlib=${ROOT}/usr/${HOST}/${TARGET}/lib + # Clean out old path + rm -rf "${ROOT}"/usr/${TARGET}/lib/ldscripts + rmdir "${ROOT}"/usr/${TARGET}/lib >& /dev/null + fi + # When upgrading, we need to clean up ldscripts and libs + rm -rf "${dstlib}/ldscripts" "${ROOT}/${BINPATH_LINKS}"/ldscripts + mkdir -p "${dstlib}" + ln -sf "${LIBPATH}/ldscripts" "${dstlib}"/ldscripts + find -L "${dstlib}" -type l -exec rm {} + + for x in lib* ; do + ln -sf "${LIBPATH}/${x}" "${dstlib}/${x}" + done + + # + # Generate include symlinks + # + INCPATH=${LIBPATH}/include + if [[ -d ${ROOT}/${INCPATH} ]] ; then + cd "${ROOT}/${INCPATH}" || exit 1 + if [[ ${HOST} == ${TARGET} ]] ; then + mkdir -p "${ROOT}/usr/include" + for x in * ; do + ln -sf "${INCPATH}/${x}" "${ROOT}/usr/include/${x}" + 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 + fi + fi + + # + # Make sure proper paths get updated + # + if [[ ${TARGET} == ${HOST} ]] ; then + DATAPATH=/usr/share/binutils-data/${TARGET}/${VER} + local e="${ROOT}"/etc/env.d/05binutils + local ee="${e}.tmp" + rm -f "${ee}" + [[ -d ${DATAPATH}/man ]] && echo "MANPATH=${DATAPATH}/man" >> "${ee}" + [[ -d ${DATAPATH}/info ]] && echo "INFOPATH=${DATAPATH}/info" >> "${ee}" + # hmm, `ld` has this in SEARCH_DIR(), but ld.so does not ... + if [[ -d ${ROOT}/etc/ld.so.conf.d ]] ; then + local l="${ROOT}"/etc/ld.so.conf.d/05binutils.conf + local ll="${l}.tmp" + echo "/usr/${TARGET}/lib" > "${ll}" + mv_if_diff "${ll}" "${l}" + else + echo "LDPATH=/usr/${TARGET}/lib" >> "${ee}" + fi + mv_if_diff "${ee}" "${e}" + fi + + local c="${ENV_D}/config-${TARGET}" + local cc="${c}.tmp" + echo "CURRENT=${VER}" > "${cc}" + mv_if_diff "${cc}" "${c}" + + eend 0 + + # + # Regen env.d if need/can be + # + if [[ ${ROOT} == "/" ]] && [[ ${TARGET} == ${HOST} ]] ; then + env-update + echo + ewarn "Please remember to run:" + echo + ewarn " # . /etc/profile" + echo + fi + + return 0 +} + +uninstall_target() { + if [[ ${TARGET} == ${HOST} ]] ; then + eerror "${argv0}: Refusing to uninstall native binutils" + exit 1 + fi + + shopt -s nullglob + PROFILE="" + + for PROFILE in "${ENV_D}"/${TARGET}-* ; do + ewarn "Removing all signs of ${PROFILE##*/}" + rm -f "${ENV_D}"/${PROFILE} + done + if [[ -z ${PROFILE} ]] && [[ ! -e ${ENV_D}/config-${TARGET} ]] ; then + eerror "${argv0}: No profiles exist for '${TARGET}'" + exit 1 + fi + + rm -f "${ENV_D}"/config-${TARGET} "${ROOT}"/etc/ld.so.conf.d/05binutils.conf + + # XXX: we still leave behind FAKE_TARGETS in /usr/bin ... + for x in addr2line ar as c++filt elf2flt flthdr gprof ld ld.real \ + nm objcopy objdump ranlib readelf size strings strip ; do + rm -f "${ROOT}"/usr/bin/${TARGET}-${x} + rm -f "${ROOT}"/usr/{${HOST}/,}${TARGET}/bin/${x} + rm -f "${ROOT}"/usr/libexec/gcc/${TARGET}/${x} + done + for x in ansidecl.h bfd.h bfdlink.h dis-asm.h symcat.h ; do + rm -f "${ROOT}"/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} + done + # Delete broken symlinks + local destdir="${ROOT}/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} \ + 2>/dev/null + + rm -f "${ENV_D}"/${TARGET}-* +} + +get_current_profile() { + if [[ ! -f ${ENV_D}/config-${PROFILE} ]] ; then + eerror "${argv0}: No binutils profile is active!" + return 1 + fi + + source "${ENV_D}/config-${PROFILE}" + + if [[ -z ${CURRENT} ]] ; then + eerror "${argv0}: No binutils profile is active!" + return 1 + fi + + echo "${PROFILE}-${CURRENT}" + + return 0 +} + +list_profiles() { + local i=1 + + set_HOST + + if [[ ${ROOT} != / ]] ; then + echo "Using binutils-config info in ${ROOT}" + fi + target= + for x in "${ENV_D}"/* ; do + if [[ -f ${x} ]] && [[ ${x/\/config-} == ${x} ]] ; then + source "${x}" + if [[ ${target} != ${TARGET} ]] ; then + [[ -n ${target} ]] && echo + target=${TARGET} + fi + + x=${x##*/} + if [[ -e ${ENV_D}/config-${TARGET} ]] ; then + source "${ENV_D}/config-${TARGET}" + if [[ ${VER} == ${CURRENT} ]] ; then + [[ ${TARGET} == ${HOST} ]] \ + && x="${x} ${GOOD}*${NORMAL}" \ + || x="${x} ${HILITE}*${NORMAL}" + fi + fi + echo " [${i}] ${x}" + ((++i)) + fi + done +} + +set_HOST() { + [[ -n ${HOST} ]] && return 0 + + if [[ -z ${CHOST} ]] ; then + HOST=$(portageq envvar CHOST) + else + HOST=${CHOST} + fi +} + +ENV_D="${ROOT}etc/env.d/binutils" + +DEBUG="no" +NEED_ACTION="yes" +DOIT="switch_profile" +PROFILE="" +FAKE_TARGETS_USER="" +HOST="" + +while [[ $# -gt 0 ]] ; do + x=$1 + shift + case ${x} in + -c|--get-current-profile) + if [[ ${NEED_ACTION} == "yes" ]] ; then + NEED_ACTION="no" + DOIT="get_current_profile" + fi + ;; + -d|--debug) + DEBUG="yes" + ;; + -l|--list-profiles) + if [[ ${NEED_ACTION} == "yes" ]] ; then + NEED_ACTION="no" + DOIT="list_profiles" + fi + ;; + -u|--uninstall) + if [[ ${NEED_ACTION} == "yes" ]] ; then + NEED_ACTION="no" + DOIT="uninstall_target" + TARGET=$1 + shift + fi + ;; + -h|--help) + usage 0 + ;; + -V|--version) + unset Header + cvsver="$Header: /var/cvsroot/gentoo-x86/sys-devel/binutils-config/files/binutils-config-2,v 1.3 2011/04/03 21:44:42 vapier Exp $" + cvsver=${cvsver##*binutils-config-} + bver=${cvsver%%,v *} + cvsver=${cvsver#* } + echo "binutils-config-${bver} (r${cvsver%% *})" + exit 0 + ;; + --amd64|--arm|--mips|--x86) + if [[ ${NEED_ACTION} == "yes" ]] ; then + # Make sure we have a space after each target + NEED_ACTION="no" + [[ -z ${PROFILE} ]] && PROFILE="current" + case ${x} in + --amd64) FAKE_TARGETS_USER="x86_64 ";; + --arm) FAKE_TARGETS_USER="arm armeb ";; + --x86) FAKE_TARGETS_USER="i386 i486 i586 i686 ";; + --mips) FAKE_TARGETS_USER="mips mips64 mipsel mipsel64 ";; + esac + fi + ;; + -*) + eerror "${0##*/}: Invalid switch! Try '--help'." + exit 1 + ;; + *) + if [[ -n ${PROFILE} ]] && [[ ${PROFILE} != "current" ]] ; then + eerror "${argv0}: Too many arguments! Run ${argv0} without parameters for help." + exit 1 + fi + + if [[ -z $(echo ${x} | tr -d '[:digit:]') ]] ; then + # User gave us a # representing the profile + i=1 + for y in "${ENV_D}"/* ; do + [[ ${y/config-} != ${y} ]] && continue + + if [[ -f ${y} ]] && [[ ${x} -eq ${i} ]] ; then + PROFILE=${y##*/} + NEED_ACTION="no" + break + fi + ((++i)) + done + fi + + if [[ -z ${PROFILE} ]] ; then + # User gave us a full HOST-ver + x=${x##*/} + if [[ ! -f ${ENV_D}/${x} ]] && [[ ! -f ${ENV_D}/config-${x} ]] ; then + # Maybe they just gave us a ver ... + set_HOST + if [[ -f ${ENV_D}/${HOST}-${x} ]] ; then + x=${HOST}-${x} + else + eerror "${argv0}: Could not locate '$x' in '${ENV_D}/'!" + exit 1 + fi + fi + PROFILE=${x} + NEED_ACTION="no" + fi + ;; + esac +done + +[[ ${NEED_ACTION} == "yes" ]] && usage 1 +[[ ${DEBUG} == "yes" ]] && set -x + +[[ ${DOIT} != "list_profiles" ]] && set_HOST +[[ -z ${PROFILE} ]] && PROFILE=${HOST} +[[ ${PROFILE} == "current" ]] && PROFILE=$(PROFILE=${HOST} get_current_profile) +eval ${DOIT} + +# vim:ts=4 diff --git a/sys-devel/binutils-config/files/binutils-config-3 b/sys-devel/binutils-config/files/binutils-config-3 index 0dbf6d8..0b4c5ae 100755 --- a/sys-devel/binutils-config/files/binutils-config-3 +++ b/sys-devel/binutils-config/files/binutils-config-3 @@ -1,25 +1,28 @@ -#!@GENTOO_PORTAGE_EPREFIX@/bin/bash -# Copyright 1999-2012 Gentoo Foundation +#!/bin/bash +# Copyright 1999-2013 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/sys-devel/binutils-config/files/binutils-config-3,v 1.9 2012/08/18 03:57:50 vapier Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-devel/binutils-config/files/binutils-config-3,v 1.11 2013/05/05 05:20:42 vapier Exp $ # Format of /etc/env.d/binutils/: # 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}" EROOT="${ROOT%/}${EPREFIX}/" -cd ${EPREFIX} +cd "${EPREFIX}" trap ":" INT QUIT TSTP argv0=${0##*/} -source ${EPREFIX}/etc/init.d/functions.sh || { +source "${EPREFIX}"/etc/init.d/functions.sh || { echo "${argv0}: Could not source ${EPREFIX}/etc/init.d/functions.sh!" 1>&2 exit 1 } @@ -127,13 +130,13 @@ setup_env() { # Older paths: /usr/${TARGET}/... # if [[ -d ${EROOT}/usr/${HOST}/${TARGET}/binutils-bin/${VER} ]] ; then - BINPATH=/usr/${HOST}/${TARGET}/binutils-bin/${VER} - BINPATH_LINKS=/usr/libexec/gcc/${TARGET} + 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 } @@ -142,32 +145,14 @@ switch_profile() { setup_env || return 1 - cd "${EROOT}/${BINPATH}" || exit 1 - mkdir -p "${EROOT}/${BINPATH_LINKS}" "${EROOT}/usr/bin" + cd "${ROOT}/${BINPATH}" || exit 1 + mkdir -p "${ROOT}/${BINPATH_LINKS}" "${EROOT}/usr/bin" for x in * ; do - case ${x} in - ld|ld64) - # recompile the wrapper for the desired target - # not a huge fan of it, never have been - "${EROOT}"usr/lib/misc/binutils-config/create-ldwrapper \ - --wrapper-name="${x}" \ - --wrapper-source="${EROOT}usr/lib/misc/binutils-config" \ - --output-file="${EROOT}/${BINPATH_LINKS}/${x}" \ - --host="${HOST}" \ - --target="${TARGET}" \ - --binpath="${BINPATH}" \ - --debug="${DEBUG}" \ - || return 1 - touch -r "${EROOT}/${BINPATH}/${x}" "${EROOT}/${BINPATH_LINKS}/${x}" - ;; - *) - atomic_ln "${EROOT}${BINPATH}/${x}" "${EROOT}/${BINPATH_LINKS}" "${x}" - ;; - esac - atomic_ln "${EROOT}/${BINPATH_LINKS}/${x}" "${EROOT}/usr/bin/" "${TARGET}-${x}" + atomic_ln "${BINPATH}/${x}" "${ROOT}/${BINPATH_LINKS}" "${x}" + atomic_ln "${BINPATH_LINKS}/${x}" "${EROOT}/usr/bin/" "${TARGET}-${x}" for fake in ${FAKE_TARGETS} ; do [[ -f ${ENV_D}/config-${fake} ]] && continue - atomic_ln "${EROOT}/${BINPATH_LINKS}/${x}" "${EROOT}/usr/bin" "${fake}-${x}" + atomic_ln "${BINPATH_LINKS}/${x}" "${EROOT}/usr/bin" "${fake}-${x}" done if [[ ${TARGET} == ${HOST} ]] ; then atomic_ln "${TARGET}-${x}" "${EROOT}/usr/bin" "${x}" @@ -178,8 +163,7 @@ switch_profile() { # Generate library / ldscripts symlinks # : ${LIBPATH:=/usr/lib/binutils/${TARGET}/${VER}} - [[ ${LIBPATH} == ${EPREFIX}* ]] && LIBPATH=${LIBPATH#${EPREFIX}} - cd "${EROOT}/${LIBPATH}" || exit 1 + cd "${ROOT}/${LIBPATH}" || exit 1 if [[ ${TARGET} == ${HOST} ]] ; then dstlib=${EROOT}/usr/${HOST}/lib else @@ -187,28 +171,23 @@ switch_profile() { fi # When upgrading, we need to clean up ldscripts and libs mkdir -p "${dstlib}" - rm -rf "${EROOT}/${BINPATH_LINKS}"/ldscripts - # avoid pointless warning about removing non-existant ldscripts dir - if [[ -d ${EROOT}/${LIBPATH}/ldscripts ]] ; then - atomic_ln "${EROOT}/${LIBPATH}/ldscripts" "${dstlib}" "ldscripts" - find -L "${dstlib}" -type l -exec rm -v {} + - fi + rm -rf "${ROOT}/${BINPATH_LINKS}"/ldscripts + atomic_ln "${LIBPATH}/ldscripts" "${dstlib}" "ldscripts" + find -L "${dstlib}" -type l -exec rm -v {} + for x in lib* ; do - # avoid symlink 'lib*' -> '/...' when no libs (native/nongnu binutils) - [[ ${x} != 'lib*' ]] || continue - atomic_ln "${EROOT}/${LIBPATH}/${x}" "${dstlib}" "${x}" + atomic_ln "${LIBPATH}/${x}" "${dstlib}" "${x}" done # # Generate include symlinks # INCPATH=${LIBPATH}/include - if [[ -d ${EROOT}/${INCPATH} ]] ; then - cd "${EROOT}/${INCPATH}" || exit 1 + if [[ -d ${ROOT}/${INCPATH} ]] ; then + cd "${ROOT}/${INCPATH}" || exit 1 if [[ ${HOST} == ${TARGET} ]] ; then mkdir -p "${EROOT}/usr/include" for x in * ; do - atomic_ln "${EROOT}/${INCPATH}/${x}" "${EROOT}/usr/include" "${x}" + atomic_ln "${INCPATH}/${x}" "${EROOT}/usr/include" "${x}" done else # Clean out old path -- cannot use '-exec {} +' syntax here @@ -223,7 +202,7 @@ switch_profile() { # Make sure proper paths get updated # if [[ ${TARGET} == ${HOST} ]] ; then - DATAPATH=${EROOT}/usr/share/binutils-data/${TARGET}/${VER} + DATAPATH="${EPREFIX}"/usr/share/binutils-data/${TARGET}/${VER} local e="${EROOT}"/etc/env.d/05binutils local ee="${e}.tmp" rm -f "${ee}" @@ -233,7 +212,7 @@ switch_profile() { if [[ -d ${EROOT}/etc/ld.so.conf.d ]] ; then local l="${EROOT}"/etc/ld.so.conf.d/05binutils.conf local ll="${l}.tmp" - echo "${EPREFIX}/usr/${TARGET}/lib" > "${ll}" + echo "/usr/${TARGET}/lib" > "${ll}" mv_if_diff "${ll}" "${l}" else echo "LDPATH=${EPREFIX}/usr/${TARGET}/lib" >> "${ee}" @@ -251,14 +230,12 @@ switch_profile() { # # Regen env.d if need/can be # - if [[ ${ROOT} == / ]] && [[ ${TARGET} == ${HOST} ]] ; then + if [[ ${ROOT} == "/" ]] && [[ ${TARGET} == ${HOST} ]] ; then env-update echo ewarn "Please remember to run:" echo - ewarn " (bash) # . ${EPREFIX}/etc/profile" - ewarn "or" - ewarn " (tcsh) # source ${EPREFIX}/etc/csh.login" + ewarn " # . /etc/profile" echo fi @@ -283,12 +260,15 @@ uninstall_target() { die "no profiles exist for '${TARGET}'" fi - rm -f "${ENV_D}"/config-${TARGET} "${ROOT}"/etc/ld.so.conf.d/05binutils.conf + rm -f "${ENV_D}"/config-${TARGET} "${EROOT}"/etc/ld.so.conf.d/05binutils.conf # XXX: we still leave behind FAKE_TARGETS in /usr/bin ... local x - for x in addr2line ar as c++filt elf2flt flthdr gprof ld ld.real \ - nm objcopy objdump ranlib readelf size strings strip ; do + for x in \ + addr2line ar as c++filt elf2flt elfedit flthdr gprof \ + ld ld.{bfd,gold,real} \ + nm objcopy objdump ranlib readelf size strings strip + do x=( "${EROOT}"/usr/bin/${TARGET}-${x} "${EROOT}"/usr/{${HOST}/,}${TARGET}/bin/${x} @@ -310,6 +290,8 @@ uninstall_target() { "${destdir}"/{bin,include,lib,usr} \ "${destdir}" \ "${EROOT}"/var/db/pkg/cross-${TARGET} \ + "${EROOT}"/usr/{${HOST}/,}${TARGET}/bin \ + "${EROOT}"/usr/libexec/gcc/${TARGET} \ 2>/dev/null rm -f "${ENV_D}"/${TARGET}-* @@ -390,7 +372,7 @@ switch_linker() { esac setup_env || return 1 - bpath="${EROOT}/${BINPATH}" + bpath="${ROOT}/${BINPATH}" # does this binutils even support the requested linker ? if [[ ! -e ${bpath}/${ld} ]] ; then @@ -440,7 +422,7 @@ while [[ $# -gt 0 ]] ; do -h|--help) usage 0 ;; -V|--version) unset Header - cvsver="$Header: /var/cvsroot/gentoo-x86/sys-devel/binutils-config/files/binutils-config-3,v 1.9 2012/08/18 03:57:50 vapier Exp $" + cvsver="$Header: /var/cvsroot/gentoo-x86/sys-devel/binutils-config/files/binutils-config-3,v 1.11 2013/05/05 05:20:42 vapier Exp $" cvsver=${cvsver##*binutils-config-} bver=${cvsver%%,v *} cvsver=${cvsver#* } diff --git a/sys-devel/binutils-config/files/binutils-config.8 b/sys-devel/binutils-config/files/binutils-config.8 index 0872f4f..4aaaa71 100644 --- a/sys-devel/binutils-config/files/binutils-config.8 +++ b/sys-devel/binutils-config/files/binutils-config.8 @@ -3,33 +3,59 @@ binutils-config \- manage active versions of the binutils programs .SH "DESCRIPTION" The \fBbinutils-config\fR script allows you to switch between different -versions of binutils when you have installed multiple copies via portage. -It also allows you to quickly manage for multiple compiling targets. +versions of binutils when you have installed multiple copies (see +USE=multislot). It also allows you to manage multiple cross-compiling +targets simultaneously. -You may have 1 version of binutils active per target at a time. Multiple -targets is really only useful for those who wish to cross-compile code. +Remember, you may have one version of binutils active per \fICTARGET\fR, +and changing the version for one target has no bearing on any other. So +changing an active cross-compiler will not break your native compiler +(i.e. \fICHOST\fR). .SH "SYNOPSIS" -.B binutils-config --get-current-profile [TARGET] +\fBbinutils-config\fR [\fIcrufty options\fR] \fIPROFILE\fR -.B binutils-config --list-profiles +\fBbinutils-config\fR \fB--get-current-profile\fR \fI[TARGET]\fR -.B binutils-config --uninstall <TARGET> +\fBbinutils-config\fR \fB--list-profiles\fR + +\fBbinutils-config\fR \fB--uninstall\fR \fITARGET\fR .SH "GENERIC OPTIONS" .TP -\fBTARGET-VERSION\fR -Update the system to use the \fBTARGET-VERSION\fR of binutils. +\fBPROFILE\fR +Change the system to use the specified binutils version. This may take the +form of the list index number (the number shown on the left in the +\fB\-\-list\-profiles\fR output), a full \fITARGET-VERSION\fR (useful when +working with cross-compilers), just a \fITARGET\fR where the \fIVERSION\fR +is picked from the active, or just a binutils \fIVERSION\fR where the +\fITARGET\fR is assumed to be the native \fIHOST\fR value. +.TP +\fBTARGET\fR +Similiar to \fBPROFILE\fR, but this is only the target and no version info +(i.e. \fICTARGET\fR or \fICHOST\fR). .TP -\fB\-\-get\-current\-profile\fR (\fB\-c\fR) \fI[TARGET]\fR +\fB\-c\fR, \fB\-\-get\-current\-profile\fR \fI[TARGET]\fR Display the active profile for \fITARGET\fR. If none is specified, the -host system's \fITARGET\fR will be shown. +host system's \fITARGET\fR will be shown (i.e. \fICHOST\fR). .TP -\fB\-\-list\-profiles\fR (\fB\-l\fR) -Show all the profiles that your system currently has installed. +\fB\-l\fR, \fB\-\-list\-profiles\fR +Show all the profiles that your system currently has installed and what +versions are active. The active native version is noted with a bright green +asterisk while the active cross-compiler versions are noted with a light blue +asterisk. .TP -\fB\-\-uninstall\fR (\fB-u\fR) <\fBTARGET\fR> +\fB-u\fR, \fB\-\-uninstall\fR \fITARGET\fR This is really for internal use only. Used to remove all traces of the -\fBTARGET\fR binutils from your system. -.SH "SPECIFIC OPTIONS" +\fITARGET\fR binutils from your system. +.SH "CRUFTY OPTIONS" +.TP +\fB\-\-gold\fR +Change the default linker for the specified \fIPROFILE\fR to the [newer] gold +linker. This only works if the binutils actually supports gold. Note that +not all options supported by the bfd linker are supportd by the gold linker. +.TP +\fB\-\-bfd\fR +Change the default linker for the specified \fIPROFILE\fR to the [older but +stable] bfd linker. If unsure, stick to this one. .TP \fB\-\-amd64\fR A nice feature of the amd64/x86 toolchain is that each can produce code for @@ -74,5 +100,3 @@ Please report bugs via http://bugs.gentoo.org/ .fi .SH "AUTHORS" Mike Frysinger <vapier@gentoo.org> -.SH "CVS HEADER" -$Header: /var/cvsroot/gentoo-x86/sys-devel/binutils-config/files/binutils-config.8,v 1.2 2005/01/30 06:21:38 vapier Exp $ diff --git a/sys-devel/binutils-config/files/dynl-and-targetlib.patch b/sys-devel/binutils-config/files/dynl-and-targetlib.patch deleted file mode 100644 index 69c255c..0000000 --- a/sys-devel/binutils-config/files/dynl-and-targetlib.patch +++ /dev/null @@ -1,144 +0,0 @@ -Index: toolchain-prefix-wrapper-0.3.1723/ld/gnuplugin.c -=================================================================== ---- toolchain-prefix-wrapper-0.3.1723.orig/ld/gnuplugin.c -+++ toolchain-prefix-wrapper-0.3.1723/ld/gnuplugin.c -@@ -15,19 +15,27 @@ - #include <unistd.h> - #include <sys/param.h> - -+#if defined(DYNLINKER) -+#include <gnu/lib-names.h> -+#endif -+ - #if defined(__cplusplus) - extern "C" { - #endif - - int gnuplugin(LdPluginData* data) - { -+#ifdef DYNLINKER -+ const char _dynl[] = "--dynamic-linker="; -+ const int _dynl_len = strlen(_dynl); -+ String *dynlArg = NULL; -+#else - const char _rpath[] = "-rpath"; - const int _rpath_len = strlen(_rpath); - const char _R[] = "-R"; - const int _R_len = strlen(_R); - - int argc = 0; -- int err; - StringList *runpathList = NULL; - String const *argString; - String *newString = NULL; -@@ -36,10 +44,23 @@ int gnuplugin(LdPluginData* data) - char const *rpathArg = NULL; - int rpathArgLen = 0; - char str[MAXPATHLEN + 1]; -+#endif -+ int err; - - do { /* dummy loop */ - err = -1; - -+#ifdef DYNLINKER -+ if (StringListAppendList(data->out->argList, data->in->argList, 1, -1) < 0) -+ break; -+ /* add -<dlinker> /lib/LD_SO to command line */ -+ dynlArg = StringCreateConcat(_dynl, _dynl_len, -+ StringGetBuffer(data->in->target.eprefix), StringGetLength(data->in->target.eprefix), -+ "/lib/", 5, -+ LD_SO, strlen(LD_SO), -+ NULL, 0); -+ if (StringListAppendString(data->out->argList, dynlArg) < 0) break; -+#else - runpathList = StringListCreate(NULL, 0, 0); - if (runpathList == NULL) - break; -@@ -166,6 +187,7 @@ int gnuplugin(LdPluginData* data) - /* put runpath on commandline */ - if (StringListAppendString(data->out->argList, newString) < 0) break; - } -+#endif - - /* append sys libpath's with "-L" */ - if (StringListAppendListModify(data->out->argList, data->in->sysLibpath, 0, -1, "-L", 2, NULL, 0) < 0) -@@ -173,10 +195,10 @@ int gnuplugin(LdPluginData* data) - - err = 0; - } while(0); /* end dummy loop */ -- -+#ifndef DYNLINKER - if (newString != NULL) newString = StringDestroy(newString); - if (runpathList != NULL) runpathList = StringListDestroy(runpathList); -- -+#endif - return err; - } - -Index: toolchain-prefix-wrapper-0.3.1723/ld/ldwrapper.c -=================================================================== ---- toolchain-prefix-wrapper-0.3.1723.orig/ld/ldwrapper.c -+++ toolchain-prefix-wrapper-0.3.1723/ld/ldwrapper.c -@@ -1061,16 +1061,26 @@ int main(int argc, char *argv[]) - wrapper_exit("cannot create sys runpath list: %s\n", strerror(errno)); - } - -+#ifdef TARGETLIB - add_target_toolchain_libpath(&data); -+#endif - add_cross_toolchain_libpath(&data); - add_host_toolchain_libpath(&data); - -+#ifndef DYNLINKER -+#ifdef TARGETLIB - add_target_toolchain_runpath(&data); -+#endif - add_cross_toolchain_runpath(&data); -+#endif - -+#ifdef TARGETLIB - add_target_system(&data); -+#endif - -+#ifndef DYNLINKER - add_host_toolchain_runpath(&data); -+#endif - add_host_system(&data); - - /* filter out sys libpath's passed with "-L" */ -Index: toolchain-prefix-wrapper-0.3.1723/configure.ac -=================================================================== ---- toolchain-prefix-wrapper-0.3.1723.orig/configure.ac -+++ toolchain-prefix-wrapper-0.3.1723/configure.ac -@@ -116,4 +116,30 @@ AC_ARG_WITH([native-ld], - AC_MSG_RESULT([${NATIVELD}]) - AC_SUBST(NATIVELD) - -+AC_MSG_CHECKING([whether to use dynamic linker from prefix]) -+AC_ARG_WITH([prefix-dynl], -+ [AC_HELP_STRING( -+ [--with-prefix-dynl], -+ [Use the dynamic linker from prefix (Linux only)] -+ )], -+ [DYNLINKER=${withval}], -+ [DYNLINKER=no] -+) -+AC_MSG_RESULT([${DYNLINKER}]) -+AC_DEFINE([DYNLINKER], [], [use prefix dynamic linker]) -+AC_SUBST(DYNLINKER) -+ -+AC_MSG_CHECKING([whether to inject target library into libpath during cross-eprefix]) -+AC_ARG_WITH([targetlib], -+ [AC_HELP_STRING( -+ [--with-targetlib], -+ [Inject target library into libpath during cross-eprefix] -+ )], -+ [TARGETLIB=${withval}], -+ [TARGETLIB=no] -+) -+AC_MSG_RESULT([${TARGETLIB}]) -+AC_DEFINE([TARGETLIB], [], [cross-eprefix: inject target library]) -+AC_SUBST(TARGETLIB) -+ - AC_OUTPUT diff --git a/sys-devel/binutils-config/files/no-targetlib.patch b/sys-devel/binutils-config/files/no-targetlib.patch deleted file mode 100644 index 219e90b..0000000 --- a/sys-devel/binutils-config/files/no-targetlib.patch +++ /dev/null @@ -1,18 +0,0 @@ -Index: toolchain-prefix-wrapper-0.3.1723/ld/create-ldwrapper.in -=================================================================== ---- toolchain-prefix-wrapper-0.3.1723.orig/ld/create-ldwrapper.in -+++ toolchain-prefix-wrapper-0.3.1723/ld/create-ldwrapper.in -@@ -78,13 +78,6 @@ doit() { - ) > "${ctargetstem}".c || return 1 - umask ${oldumask} || return 1 - -- if [[ -z ${ROOT%/} && ${TARGET} == ${HOST} && ${EPREFIX} == ${BPREFIX} ]]; then -- # currently installed ld-wrapper config may be out-of-date, -- # so configure it by environment. -- export BINUTILS_CONFIG_LD="${EPREFIX}/${BINPATH}/${WRAPPERNAME}" -- export BINUTILS_CONFIG_LDTARGET="${HOST}" -- export BINUTILS_CONFIG_LDPLUGINS="${plugins}" -- fi - rm -f "${OUTPUT}.new" > /dev/null || return 1 - ${CC:-${HOST_CC}} ${CFLAGS} -o "${OUTPUT}.new" \ - "${ctargetstem}".c "-I${WRAPPERSOURCE}" \ diff --git a/sys-devel/binutils-config/patches/binutils-config-prefix.patch b/sys-devel/binutils-config/patches/binutils-config-prefix.patch new file mode 100644 index 0000000..b53b171 --- /dev/null +++ b/sys-devel/binutils-config/patches/binutils-config-prefix.patch @@ -0,0 +1,209 @@ +Index: binutils-config/files/binutils-config-3 +=================================================================== +--- binutils-config.orig/files/binutils-config-3 2013-07-01 00:00:01.290790244 +0900 ++++ binutils-config/files/binutils-config-3 2013-07-01 00:27:56.899099185 +0900 +@@ -7,17 +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}" ++EROOT="${ROOT%/}${EPREFIX}/" + +-cd / ++cd "${EPREFIX}" + + trap ":" INT QUIT TSTP + + argv0=${0##*/} +-source /etc/init.d/functions.sh || { +- echo "${argv0}: Could not source /etc/init.d/functions.sh!" 1>&2 ++source "${EPREFIX}"/etc/init.d/functions.sh || { ++ echo "${argv0}: Could not source ${EPREFIX}/etc/init.d/functions.sh!" 1>&2 + exit 1 + } + esyslog() { :; } +@@ -123,14 +129,14 @@ + # 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 + } + +@@ -140,16 +146,16 @@ + 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}" + for fake in ${FAKE_TARGETS} ; do + [[ -f ${ENV_D}/config-${fake} ]] && continue +- atomic_ln "${BINPATH_LINKS}/${x}" "${ROOT}/usr/bin" "${fake}-${x}" ++ atomic_ln "${BINPATH_LINKS}/${x}" "${EROOT}/usr/bin" "${fake}-${x}" + done + if [[ ${TARGET} == ${HOST} ]] ; then +- atomic_ln "${TARGET}-${x}" "${ROOT}/usr/bin" "${x}" ++ atomic_ln "${TARGET}-${x}" "${EROOT}/usr/bin" "${x}" + fi + done + +@@ -159,9 +165,9 @@ + : ${LIBPATH:=/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 + mkdir -p "${dstlib}" +@@ -179,16 +185,16 @@ + if [[ -d ${ROOT}/${INCPATH} ]] ; then + cd "${ROOT}/${INCPATH}" || exit 1 + if [[ ${HOST} == ${TARGET} ]] ; then +- mkdir -p "${ROOT}/usr/include" ++ mkdir -p "${EROOT}/usr/include" + for x in * ; do +- atomic_ln "${INCPATH}/${x}" "${ROOT}/usr/include" "${x}" ++ atomic_ln "${INCPATH}/${x}" "${EROOT}/usr/include" "${x}" + 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 + +@@ -196,20 +202,20 @@ + # Make sure proper paths get updated + # + if [[ ${TARGET} == ${HOST} ]] ; then +- 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 ${DATAPATH}/man ]] && echo "MANPATH=${DATAPATH}/man" >> "${ee}" + [[ -d ${DATAPATH}/info ]] && echo "INFOPATH=${DATAPATH}/info" >> "${ee}" + # hmm, `ld` has this in SEARCH_DIR(), but ld.so does not ... +- if [[ -d ${ROOT}/etc/ld.so.conf.d ]] ; then +- local l="${ROOT}"/etc/ld.so.conf.d/05binutils.conf ++ if [[ -d ${EROOT}/etc/ld.so.conf.d ]] ; then ++ local l="${EROOT}"/etc/ld.so.conf.d/05binutils.conf + local ll="${l}.tmp" + echo "/usr/${TARGET}/lib" > "${ll}" + mv_if_diff "${ll}" "${l}" + else +- echo "LDPATH=/usr/${TARGET}/lib" >> "${ee}" ++ echo "LDPATH=${EPREFIX}/usr/${TARGET}/lib" >> "${ee}" + fi + mv_if_diff "${ee}" "${e}" + fi +@@ -254,7 +260,7 @@ + die "no profiles exist for '${TARGET}'" + fi + +- rm -f "${ENV_D}"/config-${TARGET} "${ROOT}"/etc/ld.so.conf.d/05binutils.conf ++ rm -f "${ENV_D}"/config-${TARGET} "${EROOT}"/etc/ld.so.conf.d/05binutils.conf + + # XXX: we still leave behind FAKE_TARGETS in /usr/bin ... + local x +@@ -264,28 +270,28 @@ + 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 ansidecl.h bfd.h bfdlink.h dis-asm.h symcat.h ; 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}-* +@@ -384,7 +390,7 @@ + : ${HOST:=${CHOST:-$(portageq envvar CHOST)}} + } + +-ENV_D="${ROOT}etc/env.d/binutils" ++ENV_D="${EROOT}etc/env.d/binutils" + + DEBUG="no" + NEED_ACTION="yes" +Index: binutils-config/binutils-config-3-r3.ebuild +=================================================================== +--- binutils-config.orig/binutils-config-3-r3.ebuild 2013-06-30 23:30:54.858130147 +0900 ++++ binutils-config/binutils-config-3-r3.ebuild 2013-07-01 00:20:17.812822647 +0900 +@@ -13,7 +13,14 @@ + + RDEPEND="userland_GNU? ( !<sys-apps/findutils-4.2 )" + ++inherit prefix ++ ++src_unpack() { ++ cp "${FILESDIR}"/${P} ${PN} || die ++ eprefixify ${PN} || die ++} ++ + src_install() { +- newbin "${FILESDIR}"/${PN}-${PV} ${PN} || die ++ dobin ${PN} || die + doman "${FILESDIR}"/${PN}.8 + } diff --git a/sys-devel/binutils-config/patches/binutils-config-prefix.patch~ b/sys-devel/binutils-config/patches/binutils-config-prefix.patch~ new file mode 100644 index 0000000..62bab09 --- /dev/null +++ b/sys-devel/binutils-config/patches/binutils-config-prefix.patch~ @@ -0,0 +1,212 @@ +Index: binutils-config/files/binutils-config-3 +=================================================================== +--- binutils-config.orig/files/binutils-config-3 2013-06-30 23:57:22.650003585 +0900 ++++ binutils-config/files/binutils-config-3 2013-06-30 23:59:48.426725571 +0900 +@@ -7,17 +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}" ++EROOT="${ROOT%/}${EPREFIX}/" + +-cd / ++cd "${EPREFIX}" + + trap ":" INT QUIT TSTP + + argv0=${0##*/} +-source /etc/init.d/functions.sh || { +- echo "${argv0}: Could not source /etc/init.d/functions.sh!" 1>&2 ++source "${EPREFIX}"/etc/init.d/functions.sh || { ++ echo "${argv0}: Could not source ${EPREFIX}/etc/init.d/functions.sh!" 1>&2 + exit 1 + } + esyslog() { :; } +@@ -123,14 +129,14 @@ + # 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 + } + +@@ -139,17 +145,17 @@ + + setup_env || return 1 + +- cd "${ROOT}/${BINPATH}" || exit 1 +- mkdir -p "${ROOT}/${BINPATH_LINKS}" "${ROOT}/usr/bin" ++ cd "${EROOT}/${BINPATH}" || exit 1 ++ mkdir -p "${EROOT}/${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 "${EROOT}/${BINPATH}/${x}" "${EROOT}/${BINPATH_LINKS}" "${x}" ++ atomic_ln "${EROOT}/${BINPATH_LINKS}/${x}" "${EROOT}/usr/bin/" "${TARGET}-${x}" + for fake in ${FAKE_TARGETS} ; do + [[ -f ${ENV_D}/config-${fake} ]] && continue +- atomic_ln "${BINPATH_LINKS}/${x}" "${ROOT}/usr/bin" "${fake}-${x}" ++ atomic_ln "${EPREFIX}/${BINPATH_LINKS}/${x}" "${EROOT}/usr/bin" "${fake}-${x}" + done + if [[ ${TARGET} == ${HOST} ]] ; then +- atomic_ln "${TARGET}-${x}" "${ROOT}/usr/bin" "${x}" ++ atomic_ln "${TARGET}-${x}" "${EROOT}/usr/bin" "${x}" + fi + done + +@@ -157,38 +163,39 @@ + # Generate library / ldscripts symlinks + # + : ${LIBPATH:=/usr/lib/binutils/${TARGET}/${VER}} +- cd "${ROOT}/${LIBPATH}" || exit 1 ++ LIBPATH=${LIBPATH#${EPREFIX}} ++ cd "${EROOT}/${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 + mkdir -p "${dstlib}" +- rm -rf "${ROOT}/${BINPATH_LINKS}"/ldscripts +- atomic_ln "${LIBPATH}/ldscripts" "${dstlib}" "ldscripts" ++ rm -rf "${EROOT}/${BINPATH_LINKS}"/ldscripts ++ atomic_ln "${EROOT}/${LIBPATH}/ldscripts" "${dstlib}" "ldscripts" + find -L "${dstlib}" -type l -exec rm -v {} + + for x in lib* ; do +- atomic_ln "${LIBPATH}/${x}" "${dstlib}" "${x}" ++ atomic_ln "${EPREFIX}/${LIBPATH}/${x}" "${dstlib}" "${x}" + done + + # + # Generate include symlinks + # + INCPATH=${LIBPATH}/include +- if [[ -d ${ROOT}/${INCPATH} ]] ; then +- cd "${ROOT}/${INCPATH}" || exit 1 ++ if [[ -d ${EROOT}/${INCPATH} ]] ; then ++ cd "${EROOT}/${INCPATH}" || exit 1 + if [[ ${HOST} == ${TARGET} ]] ; then +- mkdir -p "${ROOT}/usr/include" ++ mkdir -p "${EROOT}/usr/include" + for x in * ; do +- atomic_ln "${INCPATH}/${x}" "${ROOT}/usr/include" "${x}" ++ atomic_ln "${EPREFIX}/${INCPATH}/${x}" "${EROOT}/usr/include" "${x}" + 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 + +@@ -197,14 +204,14 @@ + # + if [[ ${TARGET} == ${HOST} ]] ; then + DATAPATH=/usr/share/binutils-data/${TARGET}/${VER} +- local e="${ROOT}"/etc/env.d/05binutils ++ local e="${EROOT}"/etc/env.d/05binutils + local ee="${e}.tmp" + rm -f "${ee}" + [[ -d ${DATAPATH}/man ]] && echo "MANPATH=${DATAPATH}/man" >> "${ee}" + [[ -d ${DATAPATH}/info ]] && echo "INFOPATH=${DATAPATH}/info" >> "${ee}" + # hmm, `ld` has this in SEARCH_DIR(), but ld.so does not ... +- if [[ -d ${ROOT}/etc/ld.so.conf.d ]] ; then +- local l="${ROOT}"/etc/ld.so.conf.d/05binutils.conf ++ if [[ -d ${EROOT}/etc/ld.so.conf.d ]] ; then ++ local l="${EROOT}"/etc/ld.so.conf.d/05binutils.conf + local ll="${l}.tmp" + echo "/usr/${TARGET}/lib" > "${ll}" + mv_if_diff "${ll}" "${l}" +@@ -254,7 +261,7 @@ + die "no profiles exist for '${TARGET}'" + fi + +- rm -f "${ENV_D}"/config-${TARGET} "${ROOT}"/etc/ld.so.conf.d/05binutils.conf ++ rm -f "${ENV_D}"/config-${TARGET} "${EROOT}"/etc/ld.so.conf.d/05binutils.conf + + # XXX: we still leave behind FAKE_TARGETS in /usr/bin ... + local x +@@ -264,28 +271,28 @@ + 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 ansidecl.h bfd.h bfdlink.h dis-asm.h symcat.h ; 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}-* +@@ -366,7 +373,7 @@ + esac + + setup_env || return 1 +- bpath="${ROOT}/${BINPATH}" ++ bpath="${EROOT}/${BINPATH}" + + # does this binutils even support the requested linker ? + if [[ ! -e ${bpath}/${ld} ]] ; then +@@ -384,7 +391,7 @@ + : ${HOST:=${CHOST:-$(portageq envvar CHOST)}} + } + +-ENV_D="${ROOT}etc/env.d/binutils" ++ENV_D="${EROOT}etc/env.d/binutils" + + DEBUG="no" + NEED_ACTION="yes" diff --git a/sys-devel/binutils-config/patches/series b/sys-devel/binutils-config/patches/series new file mode 100644 index 0000000..f304ad7 --- /dev/null +++ b/sys-devel/binutils-config/patches/series @@ -0,0 +1 @@ +binutils-config-prefix.patch |