diff options
author | Markus Duft <mduft@gentoo.org> | 2010-07-13 09:51:24 +0000 |
---|---|---|
committer | Markus Duft <mduft@gentoo.org> | 2010-07-13 09:51:24 +0000 |
commit | 62a08defad9729dea4ee3c06205af7eaf804cf79 (patch) | |
tree | 1c6fe27659864527787ee3d0d412aba8f15a2986 /sys-apps/prefix-chain-utils | |
parent | moved to main-tree. applied modifications from private overlay. (diff) | |
download | gentoo-2-62a08defad9729dea4ee3c06205af7eaf804cf79.tar.gz gentoo-2-62a08defad9729dea4ee3c06205af7eaf804cf79.tar.bz2 gentoo-2-62a08defad9729dea4ee3c06205af7eaf804cf79.zip |
initially imported from prefix tree. applied fixes from private overlay.
(Portage version: 2.2.00.14771-prefix/cvs/Linux i686)
Diffstat (limited to 'sys-apps/prefix-chain-utils')
-rw-r--r-- | sys-apps/prefix-chain-utils/ChangeLog | 18 | ||||
-rw-r--r-- | sys-apps/prefix-chain-utils/files/prefix-chain-wrapper.in | 78 | ||||
-rw-r--r-- | sys-apps/prefix-chain-utils/files/startprefix.in | 38 | ||||
-rw-r--r-- | sys-apps/prefix-chain-utils/metadata.xml | 8 | ||||
-rw-r--r-- | sys-apps/prefix-chain-utils/prefix-chain-utils-0.2-r5.ebuild | 57 |
5 files changed, 199 insertions, 0 deletions
diff --git a/sys-apps/prefix-chain-utils/ChangeLog b/sys-apps/prefix-chain-utils/ChangeLog new file mode 100644 index 000000000000..b6472ee7102f --- /dev/null +++ b/sys-apps/prefix-chain-utils/ChangeLog @@ -0,0 +1,18 @@ +# ChangeLog for sys-apps/prefix-chain-utils +# Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2 +# $Header: /var/cvsroot/gentoo-x86/sys-apps/prefix-chain-utils/ChangeLog,v 1.1 2010/07/13 09:51:24 mduft Exp $ + +*prefix-chain-utils-0.2-r5 (13 Jul 2010) + + 13 Jul 2010; Markus Duft <mduft@gentoo.org> + +prefix-chain-utils-0.2-r5.ebuild, +files/prefix-chain-wrapper.in, + +files/startprefix.in, +metadata.xml: + initially imported from prefix tree. applied fixes from private overlay. + +*prefix-chain-utils-0.2 (26 Mar 2009) + + 26 Mar 2009; <mduft@gentoo.org> +., +files, + +files/prefix-chain-wrapper.in, +files/startprefix.in, + +prefix-chain-utils-0.2.ebuild: + initially added prefix-chain instance helper (startprefix, toolchain wrapper) + diff --git a/sys-apps/prefix-chain-utils/files/prefix-chain-wrapper.in b/sys-apps/prefix-chain-utils/files/prefix-chain-wrapper.in new file mode 100644 index 000000000000..f3439afa076a --- /dev/null +++ b/sys-apps/prefix-chain-utils/files/prefix-chain-wrapper.in @@ -0,0 +1,78 @@ +#!/usr/bin/env bash + +link_dirs=() +opts=() +chost="@GENTOO_PORTAGE_CHOST@" +prefix="@GENTOO_PORTAGE_EPREFIX@" +absprefix=${prefix} +if [[ ${CHOST} == *"-winnt"* ]]; then + # we may get called from windows binary, like pkgdata in dev-libs/icu + # in this case, PATH elements get the "/dev/fs/C/WINDOWS/SUA" prefix + absprefix=$(winpath2unix "$(unixpath2win "${absprefix}")") +fi +mode=link +orig_args=("$@") + +for opt in "$@"; do + case "$opt" in + -L) link_dirs=("${link_dirs[@]}" "-L$1"); shift ;; + -L*) link_dirs=("${link_dirs[@]}" "${opt}") ;; + *) + case "${opt}" in + -v) + # -v done right: only use mode version if -v is the _only_ + # argument on the command line. + [[ ${#orig_args[@]} -gt 1 ]] || mode=version + ;; + --version) mode=version ;; + -c|-E|-S) mode=compile ;; + -print-search-dirs) mode=dirs ;; + esac + opts=("${opts[@]}" "${opt}") + ;; + esac +done + +save_ifs=$IFS +IFS=':' +new_path= +for p in $PATH; do + IFS=$save_ifs + [[ "${p#${absprefix}}" != "${p}" ]] && continue + if [[ -z "${new_path}" ]]; then + new_path="${p}" + else + new_path="${new_path}:${p}" + fi +done +IFS=$save_ifs + +PATH=${new_path} + +# toolchain-prefix-wrapper's ld-wrapper understands '-R' for aix and hpux too. +# parity (winnt) understands -rpath only ... +case "${chost}" in +*-winnt*) rpath_opt="-Wl,-rpath," ;; +*) rpath_opt="-Wl,-R," ;; +esac + +pfx_link=("-L${prefix}/usr/lib" "-L${prefix}/lib") +pfx_link_r=("${rpath_opt}${prefix}/lib" "${rpath_opt}${prefix}/usr/lib") +pfx_comp=("-I${prefix}/include" "-I${prefix}/usr/include") + +case "$mode" in +link) exec "$(basename $0)" "${link_dirs[@]}" "${pfx_link[@]}" "${opts[@]}" "${pfx_comp[@]}" "${pfx_link_r[@]}" ;; +compile) exec "$(basename $0)" "${link_dirs[@]}" "${opts[@]}" "${pfx_comp[@]}" ;; +version) exec "$(basename $0)" "${orig_args[@]}" ;; +dirs) + "$(basename $0)" "${orig_args[@]}" | while read line; do + if [[ "${line}" == "libraries: ="* ]]; then + echo "libraries: =${prefix}/usr/lib:${prefix}/lib:${line#"libraries: ="}" + else + echo "${line}" + fi + done + ;; +*) echo "cannot infer $0's mode from comamnd line arguments"; exit 1 ;; +esac + diff --git a/sys-apps/prefix-chain-utils/files/startprefix.in b/sys-apps/prefix-chain-utils/files/startprefix.in new file mode 100644 index 000000000000..1b84ed3c28e1 --- /dev/null +++ b/sys-apps/prefix-chain-utils/files/startprefix.in @@ -0,0 +1,38 @@ +#!/usr/bin/env bash + +. "@GENTOO_PORTAGE_EPREFIX@"/sbin/functions.sh +einfo "entering chained prefix @GENTOO_PORTAGE_EPREFIX@ ..." + +# inform profiles very early of us beeing interactive (or at least, +# we will _start_ an interactive shell, so we want the according bits.) +set -i + +. "@GENTOO_PORTAGE_EPREFIX@"/etc/profile + +# if there is no local portage, foreign portage instances need to know +# where to merge to - and thus we need to set EPREFIX. +# the other way round, if there is a local portage, EPREFIX may not +# point anywhere else than to our local EPREFIX or be unset... + +# DISABLED: this is done by etc/profile now, to be able to start a +# prefix environment by sourcing etc/profile. + +#if [[ -x "@GENTOO_PORTAGE_EPREFIX@"/usr/bin/emerge ]]; then +# if [[ -n "${EPREFIX}" ]] && [[ "${EPREFIX}" != "@GENTOO_PORTAGE_EPREFIX@" ]]; then +# ewarn "EPREFIX is set. this will render portage unusable, unsetting" +# unset EPREFIX +# fi +#else +# export EPREFIX="@GENTOO_PORTAGE_EPREFIX@" +#fi + +# a common problem: the child has no less installed, but baselayout insists +# on setting PAGER to EPREFIX/usr/bin/less. everything gets back to normal +# when unsetting PAGER in this case. +if [[ ! -x "${PAGER}" ]]; then + unset PAGER +fi + +bash --noprofile +einfo "leaving chained prefix @GENTOO_PORTAGE_EPREFIX@ ..." + diff --git a/sys-apps/prefix-chain-utils/metadata.xml b/sys-apps/prefix-chain-utils/metadata.xml new file mode 100644 index 000000000000..6c02786ee18d --- /dev/null +++ b/sys-apps/prefix-chain-utils/metadata.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> +<herd></herd> +<longdescription lang="en"> +</longdescription> +</pkgmetadata> + diff --git a/sys-apps/prefix-chain-utils/prefix-chain-utils-0.2-r5.ebuild b/sys-apps/prefix-chain-utils/prefix-chain-utils-0.2-r5.ebuild new file mode 100644 index 000000000000..0db9f7c2b26c --- /dev/null +++ b/sys-apps/prefix-chain-utils/prefix-chain-utils-0.2-r5.ebuild @@ -0,0 +1,57 @@ +# Copyright 1999-2010 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sys-apps/prefix-chain-utils/prefix-chain-utils-0.2-r5.ebuild,v 1.1 2010/07/13 09:51:24 mduft Exp $ + +inherit prefix + +DESCRIPTION="Chained EPREFIX utilities and wrappers" +HOMEPAGE="http://dev.gentoo.org/~mduft" +SRC_URI="" + +LICENSE="GPL-3" +SLOT="0" +KEYWORDS="~ppc-aix ~ia64-hpux ~x86-interix ~x86-linux ~sparc-solaris ~x86-solaris ~x86-winnt" +IUSE="" + +DEPEND="" +RDEPEND="sys-devel/gcc-config" + +src_install() { + cp "${FILESDIR}"/*.in "${T}" + eprefixify "${T}"/*.in + + for x in "${T}"/*.in; do + mv ${x} ${x%.in} + done + + # install toolchain wrapper. + wrapperdir=/usr/${CHOST}/gcc-bin/${CHOST}-prefix-chain-wrapper/${PV} + wrappercfg=${CHOST}-prefix-chain-wrapper-${PV} + + exeinto $wrapperdir + sed -i -e "s,@GENTOO_PORTAGE_CHOST@,${CHOST},g" "${T}"/prefix-chain-wrapper + doexe "${T}"/prefix-chain-wrapper + + dosym $wrapperdir/prefix-chain-wrapper $wrapperdir/${CHOST}-gcc + dosym $wrapperdir/prefix-chain-wrapper $wrapperdir/${CHOST}-g++ + dosym $wrapperdir/prefix-chain-wrapper $wrapperdir/${CHOST}-cpp + dosym $wrapperdir/prefix-chain-wrapper $wrapperdir/${CHOST}-c++ + + dosym $wrapperdir/${CHOST}-gcc $wrapperdir/gcc + dosym $wrapperdir/${CHOST}-g++ $wrapperdir/g++ + dosym $wrapperdir/${CHOST}-cpp $wrapperdir/cpp + dosym $wrapperdir/${CHOST}-c++ $wrapperdir/c++ + + # LDPATH is required to keep gcc-config happy :( + cat > "${T}"/$wrappercfg <<EOF +GCC_PATH="${EPREFIX}/$wrapperdir" +LDPATH="${EPREFIX}/$wrapperdir" +EOF + + insinto /etc/env.d/gcc + doins "${T}"/$wrappercfg + + # install startprefix script. + exeinto / + doexe "${T}"/startprefix +} |