diff options
author | Zac Medico <zmedico@gentoo.org> | 2011-11-01 19:17:19 -0700 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2011-11-01 19:17:19 -0700 |
commit | 1af0c40b1300651ca03a7509f49f152c1e595736 (patch) | |
tree | 6d967ae665bf98c9ba8219fb812a9678a127a57e /bin | |
parent | 889853171246ab1063bb5015caf41a41761f5424 (diff) | |
download | portage-1af0c40b1300651ca03a7509f49f152c1e595736.tar.gz portage-1af0c40b1300651ca03a7509f49f152c1e595736.tar.bz2 portage-1af0c40b1300651ca03a7509f49f152c1e595736.zip |
Add EPREFIX and ED support in all ebuild helpers.
This allows our prefix tests to use helpers like insinto, doins, and dosym.
Diffstat (limited to 'bin')
30 files changed, 284 insertions, 189 deletions
diff --git a/bin/dohtml.py b/bin/dohtml.py index 00258ec9e..122daf3f5 100755 --- a/bin/dohtml.py +++ b/bin/dohtml.py @@ -56,9 +56,9 @@ def install(basename, dirname, options, prefix=""): fullpath = dirname + "/" + fullpath if options.DOCDESTTREE: - destdir = options.D + "usr/share/doc/" + options.PF + "/" + options.DOCDESTTREE + "/" + options.doc_prefix + "/" + prefix + destdir = options.ED + "usr/share/doc/" + options.PF + "/" + options.DOCDESTTREE + "/" + options.doc_prefix + "/" + prefix else: - destdir = options.D + "usr/share/doc/" + options.PF + "/html/" + options.doc_prefix + "/" + prefix + destdir = options.ED + "usr/share/doc/" + options.PF + "/html/" + options.doc_prefix + "/" + prefix if not os.path.exists(fullpath): sys.stderr.write("!!! dohtml: %s does not exist\n" % fullpath) @@ -86,13 +86,15 @@ def install(basename, dirname, options, prefix=""): class OptionsClass: def __init__(self): self.PF = "" - self.D = "" + self.ED = "" self.DOCDESTTREE = "" if "PF" in os.environ: self.PF = os.environ["PF"] - if "D" in os.environ: - self.D = os.environ["D"] + if os.environ.get("EAPI", "0") in ("0", "1", "2"): + self.ED = os.environ.get("D", "") + else: + self.ED = os.environ.get("ED", "") if "_E_DOCDESTTREE_" in os.environ: self.DOCDESTTREE = os.environ["_E_DOCDESTTREE_"] diff --git a/bin/ebuild-helpers/dobin b/bin/ebuild-helpers/dobin index e385455d7..af3af0d84 100755 --- a/bin/ebuild-helpers/dobin +++ b/bin/ebuild-helpers/dobin @@ -9,15 +9,17 @@ if [[ $# -lt 1 ]] ; then exit 1 fi -if [[ ! -d ${D}${DESTTREE}/bin ]] ; then - install -d "${D}${DESTTREE}/bin" || { helpers_die "${0##*/}: failed to install ${D}${DESTTREE}/bin"; exit 2; } +case "$EAPI" in 0|1|2) ED=${D} ;; esac + +if [[ ! -d ${ED}${DESTTREE}/bin ]] ; then + install -d "${ED}${DESTTREE}/bin" || { helpers_die "${0##*/}: failed to install ${ED}${DESTTREE}/bin"; exit 2; } fi ret=0 for x in "$@" ; do if [[ -e ${x} ]] ; then - install -m0755 -o ${PORTAGE_INST_UID:-0} -g ${PORTAGE_INST_GID:-0} "${x}" "${D}${DESTTREE}/bin" + install -m0755 -o ${PORTAGE_INST_UID:-0} -g ${PORTAGE_INST_GID:-0} "${x}" "${ED}${DESTTREE}/bin" else echo "!!! ${0##*/}: $x does not exist" 1>&2 false diff --git a/bin/ebuild-helpers/dodir b/bin/ebuild-helpers/dodir index f40bee7e4..7db7cafb1 100755 --- a/bin/ebuild-helpers/dodir +++ b/bin/ebuild-helpers/dodir @@ -1,10 +1,12 @@ #!/bin/bash -# Copyright 1999-2010 Gentoo Foundation +# Copyright 1999-2011 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 source "${PORTAGE_BIN_PATH:-/usr/lib/portage/bin}"/isolated-functions.sh -install -d ${DIROPTIONS} "${@/#/${D}/}" +case "$EAPI" in 0|1|2) ED=${D} ;; esac + +install -d ${DIROPTIONS} "${@/#/${ED}/}" ret=$? [[ $ret -ne 0 ]] && helpers_die "${0##*/} failed" exit $ret diff --git a/bin/ebuild-helpers/dodoc b/bin/ebuild-helpers/dodoc index 65713db1a..37bbc79d0 100755 --- a/bin/ebuild-helpers/dodoc +++ b/bin/ebuild-helpers/dodoc @@ -9,7 +9,9 @@ if [ $# -lt 1 ] ; then exit 1 fi -dir="${D}usr/share/doc/${PF}/${_E_DOCDESTTREE_}" +case "$EAPI" in 0|1|2) ED=${D} ;; esac + +dir="${ED}usr/share/doc/${PF}/${_E_DOCDESTTREE_}" if [ ! -d "${dir}" ] ; then install -d "${dir}" fi diff --git a/bin/ebuild-helpers/doexe b/bin/ebuild-helpers/doexe index 360800e02..a5b9af0eb 100755 --- a/bin/ebuild-helpers/doexe +++ b/bin/ebuild-helpers/doexe @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright 1999-2010 Gentoo Foundation +# Copyright 1999-2011 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 source "${PORTAGE_BIN_PATH:-/usr/lib/portage/bin}"/isolated-functions.sh @@ -9,8 +9,10 @@ if [[ $# -lt 1 ]] ; then exit 1 fi -if [[ ! -d ${D}${_E_EXEDESTTREE_} ]] ; then - install -d "${D}${_E_EXEDESTTREE_}" +case "$EAPI" in 0|1|2) ED=${D} ;; esac + +if [[ ! -d ${ED}${_E_EXEDESTTREE_} ]] ; then + install -d "${ED}${_E_EXEDESTTREE_}" fi TMP=$T/.doexe_tmp @@ -29,7 +31,7 @@ for x in "$@" ; do mysrc="${x}" fi if [ -e "$mysrc" ] ; then - install $EXEOPTIONS "$mysrc" "$D$_E_EXEDESTTREE_" + install $EXEOPTIONS "$mysrc" "$ED$_E_EXEDESTTREE_" else echo "!!! ${0##*/}: $mysrc does not exist" 1>&2 false diff --git a/bin/ebuild-helpers/dohard b/bin/ebuild-helpers/dohard index 22704876c..cf6fb112d 100755 --- a/bin/ebuild-helpers/dohard +++ b/bin/ebuild-helpers/dohard @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright 1999-2007 Gentoo Foundation +# Copyright 1999-2011 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 if [[ $# -ne 2 ]] ; then @@ -7,7 +7,9 @@ if [[ $# -ne 2 ]] ; then exit 1 fi +case "$EAPI" in 0|1|2) ED=${D} ;; esac + destdir=${2%/*} -[[ ! -d ${D}${destdir} ]] && dodir "${destdir}" +[[ ! -d ${ED}${destdir} ]] && dodir "${destdir}" -exec ln -f "${D}$1" "${D}$2" +exec ln -f "${ED}$1" "${ED}$2" diff --git a/bin/ebuild-helpers/doinfo b/bin/ebuild-helpers/doinfo index 54fb8dac2..a922ef1be 100755 --- a/bin/ebuild-helpers/doinfo +++ b/bin/ebuild-helpers/doinfo @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright 1999-2010 Gentoo Foundation +# Copyright 1999-2011 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 source "${PORTAGE_BIN_PATH:-/usr/lib/portage/bin}"/isolated-functions.sh @@ -9,11 +9,13 @@ if [[ -z $1 ]] ; then exit 1 fi -if [[ ! -d ${D}usr/share/info ]] ; then - install -d "${D}usr/share/info" || { helpers_die "${0##*/}: failed to install ${D}usr/share/info"; exit 1; } +case "$EAPI" in 0|1|2) ED=${D} ;; esac + +if [[ ! -d ${ED}usr/share/info ]] ; then + install -d "${ED}usr/share/info" || { helpers_die "${0##*/}: failed to install ${ED}usr/share/info"; exit 1; } fi -install -m0644 "$@" "${D}usr/share/info" +install -m0644 "$@" "${ED}usr/share/info" rval=$? if [ $rval -ne 0 ] ; then for x in "$@" ; do diff --git a/bin/ebuild-helpers/doins b/bin/ebuild-helpers/doins index 7dec14682..b9189d5ed 100755 --- a/bin/ebuild-helpers/doins +++ b/bin/ebuild-helpers/doins @@ -27,12 +27,14 @@ else DOINSRECUR=n fi -if [[ ${INSDESTTREE#${D}} != "${INSDESTTREE}" ]]; then +case "$EAPI" in 0|1|2) export ED="${D}" ;; esac + +if [[ ${INSDESTTREE#${ED}} != "${INSDESTTREE}" ]]; then vecho "-------------------------------------------------------" 1>&2 - vecho "You should not use \${D} with helpers." 1>&2 + vecho "You should not use \${D} or \${ED} with helpers." 1>&2 vecho " --> ${INSDESTTREE}" 1>&2 vecho "-------------------------------------------------------" 1>&2 - helpers_die "${0##*/} used with \${D}" + helpers_die "${0##*/} used with \${D} or \${ED}" exit 1 fi @@ -49,7 +51,7 @@ export TMP=$T/.doins_tmp # Use separate directories to avoid potential name collisions. mkdir -p "$TMP"/{1,2} -[[ ! -d ${D}${INSDESTTREE} ]] && dodir "${INSDESTTREE}" +[[ ! -d ${ED}${INSDESTTREE} ]] && dodir "${INSDESTTREE}" _doins() { local mysrc="$1" mydir="$2" cleanup="" rval @@ -63,8 +65,8 @@ _doins() { # $PORTAGE_ACTUAL_DISTDIR/. if [ $PRESERVE_SYMLINKS = y ] && \ ! [[ $(readlink "$mysrc") == "$PORTAGE_ACTUAL_DISTDIR"/* ]] ; then - rm -rf "$D$INSDESTTREE/$mydir/${mysrc##*/}" || return $? - cp -P "$mysrc" "$D$INSDESTTREE/$mydir/${mysrc##*/}" + rm -rf "${ED}$INSDESTTREE/$mydir/${mysrc##*/}" || return $? + cp -P "$mysrc" "${ED}$INSDESTTREE/$mydir/${mysrc##*/}" return $? else cp "$mysrc" "$TMP/2/${mysrc##*/}" || return $? @@ -73,7 +75,7 @@ _doins() { fi fi - install ${INSOPTIONS} "${mysrc}" "${D}${INSDESTTREE}/${mydir}" + install ${INSOPTIONS} "${mysrc}" "${ED}${INSDESTTREE}/${mydir}" rval=$? [[ -n ${cleanup} ]] && rm -f "${cleanup}" [ $rval -ne 0 ] && echo "!!! ${0##*/}: $mysrc does not exist" 1>&2 diff --git a/bin/ebuild-helpers/dolib b/bin/ebuild-helpers/dolib index 87ade425a..9dd11d857 100755 --- a/bin/ebuild-helpers/dolib +++ b/bin/ebuild-helpers/dolib @@ -1,9 +1,11 @@ #!/bin/bash -# Copyright 1999-2010 Gentoo Foundation +# Copyright 1999-2011 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 source "${PORTAGE_BIN_PATH:-/usr/lib/portage/bin}"/isolated-functions.sh +case "$EAPI" in 0|1|2) ED=${D} ;; esac + # Setup ABI cruft LIBDIR_VAR="LIBDIR_${ABI}" if [[ -n ${ABI} && -n ${!LIBDIR_VAR} ]] ; then @@ -12,7 +14,7 @@ fi unset LIBDIR_VAR # we need this to default to lib so that things dont break CONF_LIBDIR=${CONF_LIBDIR:-lib} -libdir="${D}${DESTTREE}/${CONF_LIBDIR}" +libdir="${ED}${DESTTREE}/${CONF_LIBDIR}" if [[ $# -lt 1 ]] ; then diff --git a/bin/ebuild-helpers/doman b/bin/ebuild-helpers/doman index 4561bef18..27401f3b3 100755 --- a/bin/ebuild-helpers/doman +++ b/bin/ebuild-helpers/doman @@ -9,6 +9,8 @@ if [[ $# -lt 1 ]] ; then exit 1 fi +case "$EAPI" in 0|1|2) ED=${D} ;; esac + i18n="" ret=0 @@ -44,11 +46,11 @@ for x in "$@" ; do if [[ ${mandir} == *man[0-9n] ]] ; then if [[ -s ${x} ]] ; then - if [[ ! -d ${D}/usr/share/man/${mandir} ]] ; then - install -d "${D}/usr/share/man/${mandir}" + if [[ ! -d ${ED}/usr/share/man/${mandir} ]] ; then + install -d "${ED}/usr/share/man/${mandir}" fi - install -m0644 "${x}" "${D}/usr/share/man/${mandir}/${name}" + install -m0644 "${x}" "${ED}/usr/share/man/${mandir}/${name}" ((ret|=$?)) elif [[ ! -e ${x} ]] ; then echo "!!! ${0##*/}: $x does not exist" 1>&2 diff --git a/bin/ebuild-helpers/domo b/bin/ebuild-helpers/domo index 4737f44e1..0e3656d58 100755 --- a/bin/ebuild-helpers/domo +++ b/bin/ebuild-helpers/domo @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright 1999-2010 Gentoo Foundation +# Copyright 1999-2011 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 source "${PORTAGE_BIN_PATH:-/usr/lib/portage/bin}"/isolated-functions.sh @@ -9,8 +9,11 @@ if [ ${mynum} -lt 1 ] ; then helpers_die "${0}: at least one argument needed" exit 1 fi -if [ ! -d "${D}${DESTTREE}/share/locale" ] ; then - install -d "${D}${DESTTREE}/share/locale/" + +case "$EAPI" in 0|1|2) ED=${D} ;; esac + +if [ ! -d "${ED}${DESTTREE}/share/locale" ] ; then + install -d "${ED}${DESTTREE}/share/locale/" fi ret=0 @@ -18,7 +21,7 @@ ret=0 for x in "$@" ; do if [ -e "${x}" ] ; then mytiny="${x##*/}" - mydir="${D}${DESTTREE}/share/locale/${mytiny%.*}/LC_MESSAGES" + mydir="${ED}${DESTTREE}/share/locale/${mytiny%.*}/LC_MESSAGES" if [ ! -d "${mydir}" ] ; then install -d "${mydir}" fi diff --git a/bin/ebuild-helpers/dosbin b/bin/ebuild-helpers/dosbin index 87a30914a..d0783ed33 100755 --- a/bin/ebuild-helpers/dosbin +++ b/bin/ebuild-helpers/dosbin @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright 1999-2010 Gentoo Foundation +# Copyright 1999-2011 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 source "${PORTAGE_BIN_PATH:-/usr/lib/portage/bin}"/isolated-functions.sh @@ -9,15 +9,17 @@ if [[ $# -lt 1 ]] ; then exit 1 fi -if [[ ! -d ${D}${DESTTREE}/sbin ]] ; then - install -d "${D}${DESTTREE}/sbin" || { helpers_die "${0##*/}: failed to install ${D}${DESTTREE}/sbin"; exit 2; } +case "$EAPI" in 0|1|2) ED=${D} ;; esac + +if [[ ! -d ${ED}${DESTTREE}/sbin ]] ; then + install -d "${ED}${DESTTREE}/sbin" || { helpers_die "${0##*/}: failed to install ${ED}${DESTTREE}/sbin"; exit 2; } fi ret=0 for x in "$@" ; do if [[ -e ${x} ]] ; then - install -m0755 -o ${PORTAGE_INST_UID:-0} -g ${PORTAGE_INST_GID:-0} "${x}" "${D}${DESTTREE}/sbin" + install -m0755 -o ${PORTAGE_INST_UID:-0} -g ${PORTAGE_INST_GID:-0} "${x}" "${ED}${DESTTREE}/sbin" else echo "!!! ${0##*/}: ${x} does not exist" 1>&2 false diff --git a/bin/ebuild-helpers/dosed b/bin/ebuild-helpers/dosed index afc949ba5..00cf5da17 100755 --- a/bin/ebuild-helpers/dosed +++ b/bin/ebuild-helpers/dosed @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright 1999-2006 Gentoo Foundation +# Copyright 1999-2011 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 if [[ $# -lt 1 ]] ; then @@ -7,12 +7,14 @@ if [[ $# -lt 1 ]] ; then exit 1 fi +case "$EAPI" in 0|1|2) ED=${D} ;; esac + ret=0 file_found=0 -mysed="s:${D}::g" +mysed="s:${ED}::g" for x in "$@" ; do - y=$D${x#/} + y=$ED${x#/} if [ -e "${y}" ] ; then if [ -f "${y}" ] ; then file_found=1 diff --git a/bin/ebuild-helpers/dosym b/bin/ebuild-helpers/dosym index 7dd4c6d51..8b7b304ee 100755 --- a/bin/ebuild-helpers/dosym +++ b/bin/ebuild-helpers/dosym @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright 1999-2010 Gentoo Foundation +# Copyright 1999-2011 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 source "${PORTAGE_BIN_PATH:-/usr/lib/portage/bin}"/isolated-functions.sh @@ -9,16 +9,18 @@ if [[ $# -ne 2 ]] ; then exit 1 fi +case "$EAPI" in 0|1|2) ED=${D} ;; esac + if [[ ${2} == */ ]] || \ - [[ -d ${D}${2} && ! -L ${D}${2} ]] ; then + [[ -d ${ED}${2} && ! -L ${ED}${2} ]] ; then # implicit basename not allowed by PMS (bug #379899) eqawarn "QA Notice: dosym target omits basename: '${2}'" fi destdir=${2%/*} -[[ ! -d ${D}${destdir} ]] && dodir "${destdir}" +[[ ! -d ${ED}${destdir} ]] && dodir "${destdir}" -ln -snf "$1" "${D}$2" +ln -snf "$1" "${ED}$2" ret=$? [[ $ret -ne 0 ]] && helpers_die "${0##*/} failed" exit $ret diff --git a/bin/ebuild-helpers/ecompressdir b/bin/ebuild-helpers/ecompressdir index 7a95120a9..76c271861 100755 --- a/bin/ebuild-helpers/ecompressdir +++ b/bin/ebuild-helpers/ecompressdir @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright 1999-2010 Gentoo Foundation +# Copyright 1999-2011 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 source "${PORTAGE_BIN_PATH:-/usr/lib/portage/bin}"/isolated-functions.sh @@ -9,19 +9,21 @@ if [[ -z $1 ]] ; then exit 1 fi +case "$EAPI" in 0|1|2) ED=${D} ;; esac + case $1 in --ignore) shift for skip in "$@" ; do - [[ -d ${D}${skip} || -f ${D}${skip} ]] \ - && >> "${D}${skip}.ecompress.skip" + [[ -d ${ED}${skip} || -f ${ED}${skip} ]] \ + && >> "${ED}${skip}.ecompress.skip" done exit 0 ;; --queue) shift set -- "${@/%/.ecompress.dir}" - set -- "${@/#/${D}}" + set -- "${@/#/${ED}}" ret=0 for x in "$@" ; do >> "$x" @@ -32,10 +34,10 @@ case $1 in ;; --dequeue) [[ -n $2 ]] && vecho "${0##*/}: --dequeue takes no additional arguments" 1>&2 - find "${D}" -name '*.ecompress.dir' -print0 \ - | sed -e 's:\.ecompress\.dir::g' -e "s:${D}:/:g" \ + find "${ED}" -name '*.ecompress.dir' -print0 \ + | sed -e 's:\.ecompress\.dir::g' -e "s:${ED}:/:g" \ | ${XARGS} -0 ecompressdir - find "${D}" -name '*.ecompress.skip' -print0 | ${XARGS} -0 rm -f + find "${ED}" -name '*.ecompress.skip' -print0 | ${XARGS} -0 rm -f exit 0 ;; --*) @@ -95,8 +97,8 @@ _relocate_skip_dirs() { mv "${src}.ecompress.skip" "${dst}.ecompress.skip" done } -hide_skip_dirs() { _relocate_skip_dirs "${D}" "${T}"/ecompress-skip/ ; } -restore_skip_dirs() { _relocate_skip_dirs "${T}"/ecompress-skip/ "${D}" ; } +hide_skip_dirs() { _relocate_skip_dirs "${ED}" "${T}"/ecompress-skip/ ; } +restore_skip_dirs() { _relocate_skip_dirs "${T}"/ecompress-skip/ "${ED}" ; } ret=0 @@ -104,9 +106,9 @@ rm -rf "${T}"/ecompress-skip for dir in "$@" ; do dir=${dir#/} - dir="${D}${dir}" + dir="${ED}${dir}" if [[ ! -d ${dir} ]] ; then - vecho "${0##*/}: /${dir#${D}} does not exist!" + vecho "${0##*/}: /${dir#${ED}} does not exist!" continue fi cd "${dir}" @@ -132,7 +134,7 @@ for dir in "$@" ; do # now lets do our work [[ -z ${suffix} ]] && continue - vecho "${0##*/}: $(ecompress --bin) /${actual_dir#${D}}" + vecho "${0##*/}: $(ecompress --bin) /${actual_dir#${ED}}" funk_up_dir "compress" "${suffix}" "ecompress" # finally, restore the skipped stuff diff --git a/bin/ebuild-helpers/fowners b/bin/ebuild-helpers/fowners index 4cc6bfacc..3f51b4e54 100755 --- a/bin/ebuild-helpers/fowners +++ b/bin/ebuild-helpers/fowners @@ -1,13 +1,15 @@ #!/bin/bash -# Copyright 1999-2010 Gentoo Foundation +# Copyright 1999-2011 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 source "${PORTAGE_BIN_PATH:-/usr/lib/portage/bin}"/isolated-functions.sh +case "$EAPI" in 0|1|2) ED=${D} ;; esac + # we can't prefix all arguments because # chown takes random options slash="/" -chown "${@/#${slash}/${D}${slash}}" +chown "${@/#${slash}/${ED}${slash}}" ret=$? [[ $ret -ne 0 ]] && helpers_die "${0##*/} failed" exit $ret diff --git a/bin/ebuild-helpers/fperms b/bin/ebuild-helpers/fperms index 0260bdc47..9a2971ae5 100755 --- a/bin/ebuild-helpers/fperms +++ b/bin/ebuild-helpers/fperms @@ -1,13 +1,14 @@ #!/bin/bash -# Copyright 1999-2010 Gentoo Foundation +# Copyright 1999-2011 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 source "${PORTAGE_BIN_PATH:-/usr/lib/portage/bin}"/isolated-functions.sh +case "$EAPI" in 0|1|2) ED=${D} ;; esac # we can't prefix all arguments because # chmod takes random options slash="/" -chmod "${@/#${slash}/${D}${slash}}" +chmod "${@/#${slash}/${ED}${slash}}" ret=$? [[ $ret -ne 0 ]] && helpers_die "${0##*/} failed" exit $ret diff --git a/bin/ebuild-helpers/prepall b/bin/ebuild-helpers/prepall index 701ecba21..611c4ce79 100755 --- a/bin/ebuild-helpers/prepall +++ b/bin/ebuild-helpers/prepall @@ -4,12 +4,14 @@ source "${PORTAGE_BIN_PATH:-/usr/lib/portage/bin}"/isolated-functions.sh +case "$EAPI" in 0|1|2) ED=${D} ;; esac + if has chflags $FEATURES ; then # Save all the file flags for restoration at the end of prepall. - mtree -c -p "${D}" -k flags > "${T}/bsdflags.mtree" + mtree -c -p "${ED}" -k flags > "${T}/bsdflags.mtree" # Remove all the file flags so that prepall can do anything necessary. - chflags -R noschg,nouchg,nosappnd,nouappnd "${D}" - chflags -R nosunlnk,nouunlnk "${D}" 2>/dev/null + chflags -R noschg,nouchg,nosappnd,nouappnd "${ED}" + chflags -R nosunlnk,nouunlnk "${ED}" 2>/dev/null fi prepallman @@ -19,5 +21,5 @@ prepallstrip if has chflags $FEATURES ; then # Restore all the file flags that were saved at the beginning of prepall. - mtree -U -e -p "${D}" -k flags < "${T}/bsdflags.mtree" &> /dev/null + mtree -U -e -p "${ED}" -k flags < "${T}/bsdflags.mtree" &> /dev/null fi diff --git a/bin/ebuild-helpers/prepalldocs b/bin/ebuild-helpers/prepalldocs index fdc735d6f..540d02500 100755 --- a/bin/ebuild-helpers/prepalldocs +++ b/bin/ebuild-helpers/prepalldocs @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright 1999-2010 Gentoo Foundation +# Copyright 1999-2011 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 source "${PORTAGE_BIN_PATH:-/usr/lib/portage/bin}"/isolated-functions.sh @@ -8,8 +8,9 @@ if [[ -n $1 ]] ; then vecho "${0##*/}: invalid usage; takes no arguments" 1>&2 fi -cd "${D}" -[[ -d usr/share/doc ]] || exit 0 +case "$EAPI" in 0|1|2) ED=${D} ;; esac + +[[ -d ${ED}usr/share/doc ]] || exit 0 ecompressdir --ignore /usr/share/doc/${PF}/html ecompressdir --queue /usr/share/doc diff --git a/bin/ebuild-helpers/prepallinfo b/bin/ebuild-helpers/prepallinfo index 0d978034b..e351f878b 100755 --- a/bin/ebuild-helpers/prepallinfo +++ b/bin/ebuild-helpers/prepallinfo @@ -1,9 +1,11 @@ #!/bin/bash -# Copyright 1999-2006 Gentoo Foundation +# Copyright 1999-2011 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 source "${PORTAGE_BIN_PATH:-/usr/lib/portage/bin}"/isolated-functions.sh -[[ ! -d ${D}usr/share/info ]] && exit 0 +case "$EAPI" in 0|1|2) ED=${D} ;; esac + +[[ -d ${ED}usr/share/info ]] || exit 0 exec prepinfo diff --git a/bin/ebuild-helpers/prepallman b/bin/ebuild-helpers/prepallman index e50de6d67..be7f19453 100755 --- a/bin/ebuild-helpers/prepallman +++ b/bin/ebuild-helpers/prepallman @@ -7,11 +7,13 @@ source "${PORTAGE_BIN_PATH:-/usr/lib/portage/bin}"/isolated-functions.sh # replaced by controllable compression in EAPI 4 has "${EAPI}" 0 1 2 3 || exit 0 +case "$EAPI" in 0|1|2) ED=${D} ;; esac + ret=0 -find "${D}" -type d -name man > "${T}"/prepallman.filelist +find "${ED}" -type d -name man > "${T}"/prepallman.filelist while read -r mandir ; do - mandir=${mandir#${D}} + mandir=${mandir#${ED}} prepman "${mandir%/man}" ((ret|=$?)) done < "${T}"/prepallman.filelist diff --git a/bin/ebuild-helpers/prepallstrip b/bin/ebuild-helpers/prepallstrip index ec12ce663..e9f5f8e3e 100755 --- a/bin/ebuild-helpers/prepallstrip +++ b/bin/ebuild-helpers/prepallstrip @@ -1,5 +1,7 @@ #!/bin/bash -# Copyright 1999-2006 Gentoo Foundation +# Copyright 1999-2011 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -exec prepstrip "${D}" +case "$EAPI" in 0|1|2) ED=${D} ;; esac + +exec prepstrip "${ED}" diff --git a/bin/ebuild-helpers/prepinfo b/bin/ebuild-helpers/prepinfo index 691fd1372..afe214c6b 100755 --- a/bin/ebuild-helpers/prepinfo +++ b/bin/ebuild-helpers/prepinfo @@ -4,17 +4,19 @@ source "${PORTAGE_BIN_PATH:-/usr/lib/portage/bin}"/isolated-functions.sh +case "$EAPI" in 0|1|2) ED=${D} ;; esac + if [[ -z $1 ]] ; then infodir="/usr/share/info" else - if [[ -d ${D}$1/share/info ]] ; then + if [[ -d ${ED}$1/share/info ]] ; then infodir="$1/share/info" else infodir="$1/info" fi fi -if [[ ! -d ${D}${infodir} ]] ; then +if [[ ! -d ${ED}${infodir} ]] ; then if [[ -n $1 ]] ; then vecho "${0##*/}: '${infodir}' does not exist!" exit 1 @@ -23,7 +25,7 @@ if [[ ! -d ${D}${infodir} ]] ; then fi fi -find "${D}${infodir}" -type d -print0 | while read -r -d $'\0' x ; do +find "${ED}${infodir}" -type d -print0 | while read -r -d $'\0' x ; do for f in "${x}"/.keepinfodir*; do [[ -e ${f} ]] && continue 2 done diff --git a/bin/ebuild-helpers/preplib b/bin/ebuild-helpers/preplib index 76aabe64c..8c6292101 100755 --- a/bin/ebuild-helpers/preplib +++ b/bin/ebuild-helpers/preplib @@ -1,11 +1,13 @@ #!/bin/bash -# Copyright 1999-2006 Gentoo Foundation +# Copyright 1999-2011 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 source "${PORTAGE_BIN_PATH:-/usr/lib/portage/bin}"/isolated-functions.sh eqawarn "QA Notice: Deprecated call to 'preplib'" +case "$EAPI" in 0|1|2) ED=${D} ;; esac + LIBDIR_VAR="LIBDIR_${ABI}" if [ -n "${ABI}" -a -n "${!LIBDIR_VAR}" ]; then CONF_LIBDIR="${!LIBDIR_VAR}" @@ -18,9 +20,9 @@ if [ -z "${CONF_LIBDIR}" ]; then fi if [ -z "$1" ] ; then - z="${D}usr/${CONF_LIBDIR}" + z="${ED}usr/${CONF_LIBDIR}" else - z="${D}$1/${CONF_LIBDIR}" + z="${ED}$1/${CONF_LIBDIR}" fi if [ -d "${z}" ] ; then diff --git a/bin/ebuild-helpers/prepman b/bin/ebuild-helpers/prepman index c9add8a30..8ea7607df 100755 --- a/bin/ebuild-helpers/prepman +++ b/bin/ebuild-helpers/prepman @@ -4,14 +4,16 @@ source "${PORTAGE_BIN_PATH:-/usr/lib/portage/bin}"/isolated-functions.sh +case "$EAPI" in 0|1|2) ED=${D} ;; esac + if [[ -z $1 ]] ; then - mandir="${D}usr/share/man" + mandir="${ED}usr/share/man" else - mandir="${D}$1/man" + mandir="${ED}$1/man" fi if [[ ! -d ${mandir} ]] ; then - eqawarn "QA Notice: prepman called with non-existent dir '${mandir#${D}}'" + eqawarn "QA Notice: prepman called with non-existent dir '${mandir#${ED}}'" exit 0 fi @@ -27,6 +29,6 @@ for subdir in "${mandir}"/man* "${mandir}"/*/man* ; do [[ -d ${subdir} ]] && really_is_mandir=1 && break done -[[ ${really_is_mandir} == 1 ]] && exec ecompressdir --queue "${mandir#${D}}" +[[ ${really_is_mandir} == 1 ]] && exec ecompressdir --queue "${mandir#${ED}}" exit 0 diff --git a/bin/ebuild-helpers/prepstrip b/bin/ebuild-helpers/prepstrip index 8c2ca4839..fac20b24f 100755 --- a/bin/ebuild-helpers/prepstrip +++ b/bin/ebuild-helpers/prepstrip @@ -18,6 +18,8 @@ exp_tf() { exp_tf FEATURES installsources nostrip splitdebug exp_tf RESTRICT binchecks installsources strip +case "$EAPI" in 0|1|2) ED=${D} ;; esac + banner=false SKIP_STRIP=false if ${RESTRICT_strip} || ${FEATURES_nostrip} ; then @@ -99,7 +101,7 @@ save_elf_debug() { ${FEATURES_splitdebug} || return 0 local x=$1 - local y="${D}usr/lib/debug/${x:${#D}}.debug" + local y="${ED}usr/lib/debug/${x:${#ED}}.debug" # dont save debug info twice [[ ${x} == *".debug" ]] && return 0 @@ -108,7 +110,7 @@ save_elf_debug() { local inode=$(inode_var_name "$x") if [[ -n ${!inode} ]] ; then - ln "${D}usr/lib/debug/${!inode:${#D}}.debug" "$y" + ln "${ED}usr/lib/debug/${!inode:${#ED}}.debug" "$y" else eval $inode=\$x if [[ -e ${T}/prepstrip.split.debug ]] ; then @@ -129,18 +131,18 @@ save_elf_debug() { | awk '$NF ~ /GNU/ { getline; printf $2$3$4$5; getline; print $2 }') fi if [[ -n ${buildid} ]] ; then - local buildid_dir="${D}usr/lib/debug/.build-id/${buildid:0:2}" + local buildid_dir="${ED}usr/lib/debug/.build-id/${buildid:0:2}" local buildid_file="${buildid_dir}/${buildid:2}" mkdir -p "${buildid_dir}" - ln -s "../../${x:${#D}}.debug" "${buildid_file}.debug" - ln -s "/${x:${#D}}" "${buildid_file}" + ln -s "../../${x:${#ED}}.debug" "${buildid_file}.debug" + ln -s "/${x:${#ED}}" "${buildid_file}" fi } process_elf() { local x=$1 strip_flags=${*:2} - vecho " ${x:${#D}}" + vecho " ${x:${#ED}}" save_elf_sources "${x}" if ${strip_this} ; then @@ -165,7 +167,7 @@ if ! ${RESTRICT_binchecks} && ! ${RESTRICT_strip} ; then log=$T/scanelf-already-stripped.log qa_var="QA_PRESTRIPPED_${ARCH/-/_}" [[ -n ${!qa_var} ]] && QA_PRESTRIPPED="${!qa_var}" - scanelf -yqRBF '#k%F' -k '!.symtab' "$@" | sed -e "s#^$D##" > "$log" + scanelf -yqRBF '#k%F' -k '!.symtab' "$@" | sed -e "s#^${ED}##" > "$log" if [[ -n $QA_PRESTRIPPED && -s $log && \ ${QA_STRICT_PRESTRIPPED-unset} = unset ]] ; then shopts=$- @@ -206,7 +208,7 @@ do set -o noglob strip_this=true for m in $(eval echo ${STRIP_MASK}) ; do - [[ /${x#${D}} == ${m} ]] && strip_this=false && break + [[ /${x#${ED}} == ${m} ]] && strip_this=false && break done set +o noglob else @@ -221,7 +223,7 @@ do buildid= if [[ ${f} == *"current ar archive"* ]] ; then - vecho " ${x:${#D}}" + vecho " ${x:${#ED}}" if ${strip_this} ; then # hmm, can we split debug/sources for .a ? ${STRIP} -g "${x}" @@ -239,10 +241,10 @@ if [[ -s ${T}/debug.sources ]] && \ ${debugedit_found} then vecho "installsources: rsyncing source files" - [[ -d ${D}${prepstrip_sources_dir} ]] || mkdir -p "${D}${prepstrip_sources_dir}" + [[ -d ${ED}${prepstrip_sources_dir} ]] || mkdir -p "${ED}${prepstrip_sources_dir}" grep -zv '/<[^/>]*>$' "${T}"/debug.sources | \ (cd "${WORKDIR}"; LANG=C sort -z -u | \ - rsync -tL0 --files-from=- "${WORKDIR}/" "${D}${prepstrip_sources_dir}/" ) + rsync -tL0 --files-from=- "${WORKDIR}/" "${ED}${prepstrip_sources_dir}/" ) # Preserve directory structure. # Needed after running save_elf_sources. @@ -250,5 +252,5 @@ then while read -r -d $'\0' emptydir do >> "$emptydir"/.keepdir - done < <(find "${D}${prepstrip_sources_dir}/" -type d -empty -print0) + done < <(find "${ED}${prepstrip_sources_dir}/" -type d -empty -print0) fi diff --git a/bin/ebuild.sh b/bin/ebuild.sh index 7b77c1077..5648a9762 100755 --- a/bin/ebuild.sh +++ b/bin/ebuild.sh @@ -597,17 +597,19 @@ if ! has "$EBUILD_PHASE" clean cleanrm ; then PATH=$_ebuild_helpers_path:$PREROOTPATH${PREROOTPATH:+:}/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin${ROOTPATH:+:}$ROOTPATH unset _ebuild_helpers_path + _eprefix=${EPREFIX} + case "$EAPI" in 0|1|2) _eprefix= ;; esac # Use default ABI libdir in accordance with bug #355283. x=LIBDIR_${DEFAULT_ABI} [[ -n $DEFAULT_ABI && -n ${!x} ]] && x=${!x} || x=lib if has distcc $FEATURES ; then - PATH="/usr/$x/distcc/bin:$PATH" + PATH="${_eprefix}/usr/$x/distcc/bin:$PATH" [[ -n $DISTCC_LOG ]] && addwrite "${DISTCC_LOG%/*}" fi if has ccache $FEATURES ; then - PATH="/usr/$x/ccache/bin:$PATH" + PATH="${_eprefix}/usr/$x/ccache/bin:$PATH" if [[ -n $CCACHE_DIR ]] ; then addread "$CCACHE_DIR" @@ -617,7 +619,7 @@ if ! has "$EBUILD_PHASE" clean cleanrm ; then [[ -n $CCACHE_SIZE ]] && ccache -M $CCACHE_SIZE &> /dev/null fi - unset x + unset x _eprefix if [[ -n $QA_PREBUILT ]] ; then diff --git a/bin/misc-functions.sh b/bin/misc-functions.sh index 80cd0f8b6..81bae76c7 100755 --- a/bin/misc-functions.sh +++ b/bin/misc-functions.sh @@ -17,7 +17,9 @@ shift $# source "${PORTAGE_BIN_PATH:-/usr/lib/portage/bin}/ebuild.sh" install_symlink_html_docs() { - cd "${D}" || die "cd failed" + local ed=${ED} + case "$EAPI" in 0|1|2) ed=${D} ;; esac + cd "${ed}" || die "cd failed" #symlink the html documentation (if DOC_SYMLINKS_DIR is set in make.conf) if [ -n "${DOC_SYMLINKS_DIR}" ] ; then local mydocdir docdir @@ -64,11 +66,13 @@ canonicalize() { prepcompress() { local -a include exclude incl_d incl_f local f g i real_f real_d + local ed=${ED} + case "$EAPI" in 0|1|2) ed=${D} ;; esac # Canonicalize path names and check for their existence. - real_d=$(canonicalize "${D}") + real_d=$(canonicalize "${ed}") for (( i = 0; i < ${#PORTAGE_DOCOMPRESS[@]}; i++ )); do - real_f=$(canonicalize "${D}${PORTAGE_DOCOMPRESS[i]}") + real_f=$(canonicalize "${ed}${PORTAGE_DOCOMPRESS[i]}") f=${real_f#"${real_d}"} if [[ ${real_f} != "${f}" ]] && [[ -d ${real_f} || -f ${real_f} ]] then @@ -79,7 +83,7 @@ prepcompress() { fi done for (( i = 0; i < ${#PORTAGE_DOCOMPRESS_SKIP[@]}; i++ )); do - real_f=$(canonicalize "${D}${PORTAGE_DOCOMPRESS_SKIP[i]}") + real_f=$(canonicalize "${ed}${PORTAGE_DOCOMPRESS_SKIP[i]}") f=${real_f#"${real_d}"} if [[ ${real_f} != "${f}" ]] && [[ -d ${real_f} || -f ${real_f} ]] then @@ -128,7 +132,7 @@ prepcompress() { # Split the include list into directories and files for f in "${include[@]}"; do - if [[ -d ${D}${f} ]]; then + if [[ -d ${ed}${f} ]]; then incl_d[${#incl_d[@]}]=${f} else incl_f[${#incl_f[@]}]=${f} @@ -138,15 +142,17 @@ prepcompress() { # Queue up for compression. # ecompress{,dir} doesn't like to be called with empty argument lists. [[ ${#incl_d[@]} -gt 0 ]] && ecompressdir --queue "${incl_d[@]}" - [[ ${#incl_f[@]} -gt 0 ]] && ecompress --queue "${incl_f[@]/#/${D}}" + [[ ${#incl_f[@]} -gt 0 ]] && ecompress --queue "${incl_f[@]/#/${ed}}" [[ ${#exclude[@]} -gt 0 ]] && ecompressdir --ignore "${exclude[@]}" return 0 } install_qa_check() { local f i x + local ed=${ED} + case "$EAPI" in 0|1|2) ed=${D} ;; esac - cd "${D}" || die "cd failed" + cd "${ed}" || die "cd failed" export STRIP_MASK prepall @@ -154,15 +160,12 @@ install_qa_check() { ecompressdir --dequeue ecompress --dequeue - local ed=${ED} - case "$EAPI" in 0|1|2) ed=${D} ;; esac - # Prefix specific checks [[ ${ed} != ${D} ]] && install_qa_check_prefix f= for x in etc/app-defaults usr/man usr/info usr/X11R6 usr/doc usr/locale ; do - [[ -d $D/$x ]] && f+=" $x\n" + [[ -d $ed/$x ]] && f+=" $x\n" done if [[ -n $f ]] ; then @@ -172,7 +175,7 @@ install_qa_check() { fi # Now we look for all world writable files. - local unsafe_files=$(find "${D}" -type f -perm -2 | sed -e "s:^${D}:- :") + local unsafe_files=$(find "${ed}" -type f -perm -2 | sed -e "s:^${ed}:- :") if [[ -n ${unsafe_files} ]] ; then vecho "QA Security Notice: world writable file(s):" vecho "${unsafe_files}" @@ -202,7 +205,7 @@ install_qa_check() { if [[ -n "${ROOT}" && "${ROOT}" != "/" ]]; then forbidden_dirs+=" ${ROOT}" fi - local dir l rpath_files=$(scanelf -F '%F:%r' -qBR "${D}") + local dir l rpath_files=$(scanelf -F '%F:%r' -qBR "${ed}") f="" for dir in ${forbidden_dirs}; do for l in $(echo "${rpath_files}" | grep -E ":${dir}|::|: "); do @@ -216,7 +219,7 @@ install_qa_check() { # Reject set*id binaries with $ORIGIN in RPATH #260331 x=$( - find "${D}" -type f \( -perm -u+s -o -perm -g+s \) -print0 | \ + find "${ed}" -type f \( -perm -u+s -o -perm -g+s \) -print0 | \ xargs -0 scanelf -qyRF '%r %p' | grep '$ORIGIN' ) @@ -242,7 +245,7 @@ install_qa_check() { [[ -n ${!qa_var} ]] && QA_TEXTRELS=${!qa_var} [[ -n ${QA_STRICT_TEXTRELS} ]] && QA_TEXTRELS="" export QA_TEXTRELS="${QA_TEXTRELS} lib*/modules/*.ko" - f=$(scanelf -qyRF '%t %p' "${D}" | grep -v 'usr/lib/debug/') + f=$(scanelf -qyRF '%t %p' "${ed}" | grep -v 'usr/lib/debug/') if [[ -n ${f} ]] ; then scanelf -qyRAF '%T %p' "${PORTAGE_BUILDDIR}"/ &> "${T}"/scanelf-textrel.log vecho -ne '\n' @@ -282,7 +285,7 @@ install_qa_check() { [[ -n ${QA_STRICT_WX_LOAD} ]] && QA_WX_LOAD="" export QA_EXECSTACK="${QA_EXECSTACK} lib*/modules/*.ko" export QA_WX_LOAD="${QA_WX_LOAD} lib*/modules/*.ko" - f=$(scanelf -qyRAF '%e %p' "${D}" | grep -v 'usr/lib/debug/') + f=$(scanelf -qyRAF '%e %p' "${ed}" | grep -v 'usr/lib/debug/') ;; esac ;; @@ -309,7 +312,7 @@ install_qa_check() { if [[ "${LDFLAGS}" == *,--hash-style=gnu* ]] && [[ "${PN}" != *-bin ]] ; then qa_var="QA_DT_HASH_${ARCH/-/_}" eval "[[ -n \${!qa_var} ]] && QA_DT_HASH=(\"\${${qa_var}[@]}\")" - f=$(scanelf -qyRF '%k %p' -k .hash "${D}" | sed -e "s:\.hash ::") + f=$(scanelf -qyRF '%k %p' -k .hash "${ed}" | sed -e "s:\.hash ::") if [[ -n ${f} ]] ; then echo "${f}" > "${T}"/scanelf-ignored-LDFLAGS.log if [ "${QA_STRICT_DT_HASH-unset}" == unset ] ; then @@ -391,7 +394,7 @@ install_qa_check() { # Check for shared libraries lacking SONAMEs qa_var="QA_SONAME_${ARCH/-/_}" eval "[[ -n \${!qa_var} ]] && QA_SONAME=(\"\${${qa_var}[@]}\")" - f=$(scanelf -ByF '%S %p' "${D}"{,usr/}lib*/lib*.so* | gawk '$2 == "" { print }' | sed -e "s:^[[:space:]]${D}:/:") + f=$(scanelf -ByF '%S %p' "${ed}"{,usr/}lib*/lib*.so* | gawk '$2 == "" { print }' | sed -e "s:^[[:space:]]${ed}:/:") if [[ -n ${f} ]] ; then echo "${f}" > "${T}"/scanelf-missing-SONAME.log if [[ "${QA_STRICT_SONAME-unset}" == unset ]] ; then @@ -425,7 +428,7 @@ install_qa_check() { # Check for shared libraries lacking NEEDED entries qa_var="QA_DT_NEEDED_${ARCH/-/_}" eval "[[ -n \${!qa_var} ]] && QA_DT_NEEDED=(\"\${${qa_var}[@]}\")" - f=$(scanelf -ByF '%n %p' "${D}"{,usr/}lib*/lib*.so* | gawk '$2 == "" { print }' | sed -e "s:^[[:space:]]${D}:/:") + f=$(scanelf -ByF '%n %p' "${ed}"{,usr/}lib*/lib*.so* | gawk '$2 == "" { print }' | sed -e "s:^[[:space:]]${ed}:/:") if [[ -n ${f} ]] ; then echo "${f}" > "${T}"/scanelf-missing-NEEDED.log if [[ "${QA_STRICT_DT_NEEDED-unset}" == unset ]] ; then @@ -459,7 +462,7 @@ install_qa_check() { PORTAGE_QUIET=${tmp_quiet} fi - local unsafe_files=$(find "${D}" -type f '(' -perm -2002 -o -perm -4002 ')') + local unsafe_files=$(find "${ed}" -type f '(' -perm -2002 -o -perm -4002 ')' | sed -e "s:^${ed}:/:") if [[ -n ${unsafe_files} ]] ; then eqawarn "QA Notice: Unsafe files detected (set*id and world writable)" eqawarn "${unsafe_files}" @@ -479,8 +482,8 @@ install_qa_check() { # Sanity check syntax errors in init.d scripts local d for d in /etc/conf.d /etc/init.d ; do - [[ -d ${D}/${d} ]] || continue - for i in "${D}"/${d}/* ; do + [[ -d ${ed}/${d} ]] || continue + for i in "${ed}"/${d}/* ; do [[ -L ${i} ]] && continue # if empty conf.d/init.d dir exists (baselayout), then i will be "/etc/conf.d/*" and not exist [[ ! -e ${i} ]] && continue @@ -491,17 +494,17 @@ install_qa_check() { # this should help to ensure that all (most?) shared libraries are executable # and that all libtool scripts / static libraries are not executable local j - for i in "${D}"opt/*/lib{,32,64} \ - "${D}"lib{,32,64} \ - "${D}"usr/lib{,32,64} \ - "${D}"usr/X11R6/lib{,32,64} ; do + for i in "${ed}"opt/*/lib{,32,64} \ + "${ed}"lib{,32,64} \ + "${ed}"usr/lib{,32,64} \ + "${ed}"usr/X11R6/lib{,32,64} ; do [[ ! -d ${i} ]] && continue for j in "${i}"/*.so.* "${i}"/*.so ; do [[ ! -e ${j} ]] && continue [[ -L ${j} ]] && continue [[ -x ${j} ]] && continue - vecho "making executable: ${j#${D}}" + vecho "making executable: ${j#${ed}}" chmod +x "${j}" done @@ -509,7 +512,7 @@ install_qa_check() { [[ ! -e ${j} ]] && continue [[ -L ${j} ]] && continue [[ ! -x ${j} ]] && continue - vecho "removing executable bit: ${j#${D}}" + vecho "removing executable bit: ${j#${ed}}" chmod -x "${j}" done @@ -533,7 +536,7 @@ install_qa_check() { # http://bugs.gentoo.org/4411 abort="no" local a s - for a in "${D}"usr/lib*/*.a ; do + for a in "${ed}"usr/lib*/*.a ; do s=${a%.a}.so if [[ ! -e ${s} ]] ; then s=${s%usr/*}${s##*/usr/} @@ -547,7 +550,7 @@ install_qa_check() { [[ ${abort} == "yes" ]] && die "add those ldscripts" # Make sure people don't store libtool files or static libs in /lib - f=$(ls "${D}"lib*/*.{a,la} 2>/dev/null) + f=$(ls "${ed}"lib*/*.{a,la} 2>/dev/null) if [[ -n ${f} ]] ; then vecho -ne '\n' eqawarn "QA Notice: Excessive files found in the / partition" @@ -558,9 +561,9 @@ install_qa_check() { # Verify that the libtool files don't contain bogus $D entries. local abort=no gentoo_bug=no always_overflow=no - for a in "${D}"usr/lib*/*.la ; do + for a in "${ed}"usr/lib*/*.la ; do s=${a##*/} - if grep -qs "${D}" "${a}" ; then + if grep -qs "${ed}" "${a}" ; then vecho -ne '\n' eqawarn "QA Notice: ${s} appears to contain PORTAGE_TMPDIR paths" abort="yes" @@ -702,7 +705,7 @@ install_qa_check() { fi # Portage regenerates this on the installed system. - rm -f "${D}"/usr/share/info/dir{,.gz,.bz2} + rm -f "${ed}"/usr/share/info/dir{,.gz,.bz2} if has multilib-strict ${FEATURES} && \ [[ -x /usr/bin/file && -x /usr/bin/find ]] && \ @@ -711,15 +714,15 @@ install_qa_check() { local abort=no dir file firstrun=yes MULTILIB_STRICT_EXEMPT=$(echo ${MULTILIB_STRICT_EXEMPT} | sed -e 's:\([(|)]\):\\\1:g') for dir in ${MULTILIB_STRICT_DIRS} ; do - [[ -d ${D}/${dir} ]] || continue - for file in $(find ${D}/${dir} -type f | grep -v "^${D}/${dir}/${MULTILIB_STRICT_EXEMPT}"); do + [[ -d ${ed}/${dir} ]] || continue + for file in $(find ${ed}/${dir} -type f | grep -v "^${ed}/${dir}/${MULTILIB_STRICT_EXEMPT}"); do if file ${file} | egrep -q "${MULTILIB_STRICT_DENY}" ; then if [[ ${firstrun} == yes ]] ; then echo "Files matching a file type that is not allowed:" firstrun=no fi abort=yes - echo " ${file#${D}//}" + echo " ${file#${ed}//}" fi done done @@ -728,7 +731,7 @@ install_qa_check() { # ensure packages don't install systemd units automagically if ! has systemd ${INHERITED} && \ - [[ -d "${D}"/lib/systemd/system ]] + [[ -d "${ed}"/lib/systemd/system ]] then eqawarn "QA Notice: package installs systemd unit files (/lib/systemd/system)" eqawarn " but does not inherit systemd.eclass." @@ -886,6 +889,9 @@ preinst_mask() { return 1 fi + local ed=${ED} + case "$EAPI" in 0|1|2) ed=${D} ;; esac + # Make sure $PWD is not ${D} so that we don't leave gmon.out files # in there in case any tools were built with -pg in CFLAGS. cd "${T}" @@ -898,11 +904,11 @@ preinst_mask() { fi done - install_mask "${D}" "${INSTALL_MASK}" + install_mask "${ed}" "${INSTALL_MASK}" # remove share dir if unnessesary if has nodoc $FEATURES || has noman $FEATURES || has noinfo $FEATURES; then - rmdir "${D}usr/share" &> /dev/null + rmdir "${ed}usr/share" &> /dev/null fi } @@ -911,29 +917,33 @@ preinst_sfperms() { eerror "${FUNCNAME}: D is unset" return 1 fi + + local ed=${ED} + case "$EAPI" in 0|1|2) ed=${D} ;; esac + # Smart FileSystem Permissions if has sfperms $FEATURES; then local i - find "${D}" -type f -perm -4000 -print0 | \ + find "${ed}" -type f -perm -4000 -print0 | \ while read -r -d $'\0' i ; do if [ -n "$(find "$i" -perm -2000)" ] ; then - ebegin ">>> SetUID and SetGID: [chmod o-r] /${i#${D}}" + ebegin ">>> SetUID and SetGID: [chmod o-r] /${i#${ed}}" chmod o-r "$i" eend $? else - ebegin ">>> SetUID: [chmod go-r] /${i#${D}}" + ebegin ">>> SetUID: [chmod go-r] /${i#${ed}}" chmod go-r "$i" eend $? fi done - find "${D}" -type f -perm -2000 -print0 | \ + find "${ed}" -type f -perm -2000 -print0 | \ while read -r -d $'\0' i ; do if [ -n "$(find "$i" -perm -4000)" ] ; then # This case is already handled # by the SetUID check above. true else - ebegin ">>> SetGID: [chmod o-r] /${i#${D}}" + ebegin ">>> SetGID: [chmod o-r] /${i#${ed}}" chmod o-r "$i" eend $? fi @@ -946,6 +956,10 @@ preinst_suid_scan() { eerror "${FUNCNAME}: D is unset" return 1 fi + + local ed=${ED} + case "$EAPI" in 0|1|2) ed=${D} ;; esac + # total suid control. if has suidctl $FEATURES; then local i sfconf x @@ -954,10 +968,10 @@ preinst_suid_scan() { # to files outside of the sandbox, but this # can easly be bypassed using the addwrite() function addwrite "${sfconf}" - vecho ">>> Performing suid scan in ${D}" - for i in $(find "${D}" -type f \( -perm -4000 -o -perm -2000 \) ); do + vecho ">>> Performing suid scan in ${ed}" + for i in $(find "${ed}" -type f \( -perm -4000 -o -perm -2000 \) ); do if [ -s "${sfconf}" ]; then - install_path=/${i#${D}} + install_path=/${i#${ed}} if grep -q "^${install_path}\$" "${sfconf}" ; then vecho "- ${install_path} is an approved suid file" else @@ -967,7 +981,7 @@ preinst_suid_scan() { chmod ugo-s "${i}" grep "^#${install_path}$" "${sfconf}" > /dev/null || { vecho ">>> Appending commented out entry to ${sfconf} for ${PF}" - echo "## ${ls_ret%${D}*}${install_path}" >> "${sfconf}" + echo "## ${ls_ret%${ed}*}${install_path}" >> "${sfconf}" echo "#${install_path}" >> "${sfconf}" # no delwrite() eh? # delwrite ${sconf} @@ -1008,10 +1022,14 @@ preinst_selinux_labels() { } dyn_package() { + + local ed=${ED} + case "$EAPI" in 0|1|2) ed=${D} ;; esac + # Make sure $PWD is not ${D} so that we don't leave gmon.out files # in there in case any tools were built with -pg in CFLAGS. cd "${T}" - install_mask "${PORTAGE_BUILDDIR}/image" "${PKG_INSTALL_MASK}" + install_mask "${ed}" "${PKG_INSTALL_MASK}" local tar_options="" [[ $PORTAGE_VERBOSE = 1 ]] && tar_options+=" -v" # Sandbox is disabled in case the user wants to use a symlink @@ -1085,10 +1103,14 @@ __END1__ } dyn_rpm() { + + local eprefix=${EPREFIX} + case "$EAPI" in 0|1|2) eprefix= ;; esac + cd "${T}" || die "cd failed" local machine_name=$(uname -m) - local dest_dir=/usr/src/rpm/RPMS/${machine_name} - addwrite /usr/src/rpm + local dest_dir=${eprefix}/usr/src/rpm/RPMS/${machine_name} + addwrite ${eprefix}/usr/src/rpm addwrite "${RPMDIR}" dyn_spec rpmbuild -bb --clean --rmsource "${PF}.spec" || die "Failed to integrate rpm spec file" diff --git a/bin/phase-functions.sh b/bin/phase-functions.sh index 164b309e8..9dcbf76f8 100644 --- a/bin/phase-functions.sh +++ b/bin/phase-functions.sh @@ -498,8 +498,13 @@ dyn_install() { fi trap "abort_install" SIGINT SIGQUIT ebuild_phase pre_src_install - rm -rf "${PORTAGE_BUILDDIR}/image" - mkdir "${PORTAGE_BUILDDIR}/image" + + _x=${ED} + case "$EAPI" in 0|1|2) _x=${D} ;; esac + rm -rf "${D}" + mkdir -p "${_x}" + unset _x + if [[ -d $S ]] ; then cd "${S}" elif has $EAPI 0 1 2 3 3_pre2 ; then diff --git a/bin/phase-helpers.sh b/bin/phase-helpers.sh index a033fa837..8a2f381c3 100644 --- a/bin/phase-helpers.sh +++ b/bin/phase-helpers.sh @@ -19,8 +19,10 @@ into() { export DESTTREE="" else export DESTTREE=$1 - if [ ! -d "${D}${DESTTREE}" ]; then - install -d "${D}${DESTTREE}" + local ed=${ED} + case "$EAPI" in 0|1|2) ed=${D} ;; esac + if [ ! -d "${ed}${DESTTREE}" ]; then + install -d "${ed}${DESTTREE}" local ret=$? if [[ $ret -ne 0 ]] ; then helpers_die "${FUNCNAME[0]} failed" @@ -35,8 +37,10 @@ insinto() { export INSDESTTREE="" else export INSDESTTREE=$1 - if [ ! -d "${D}${INSDESTTREE}" ]; then - install -d "${D}${INSDESTTREE}" + local ed=${ED} + case "$EAPI" in 0|1|2) ed=${D} ;; esac + if [ ! -d "${ed}${INSDESTTREE}" ]; then + install -d "${ed}${INSDESTTREE}" local ret=$? if [[ $ret -ne 0 ]] ; then helpers_die "${FUNCNAME[0]} failed" @@ -51,8 +55,10 @@ exeinto() { export _E_EXEDESTTREE_="" else export _E_EXEDESTTREE_="$1" - if [ ! -d "${D}${_E_EXEDESTTREE_}" ]; then - install -d "${D}${_E_EXEDESTTREE_}" + local ed=${ED} + case "$EAPI" in 0|1|2) ed=${D} ;; esac + if [ ! -d "${ed}${_E_EXEDESTTREE_}" ]; then + install -d "${ed}${_E_EXEDESTTREE_}" local ret=$? if [[ $ret -ne 0 ]] ; then helpers_die "${FUNCNAME[0]} failed" @@ -67,8 +73,10 @@ docinto() { export _E_DOCDESTTREE_="" else export _E_DOCDESTTREE_="$1" - if [ ! -d "${D}usr/share/doc/${PF}/${_E_DOCDESTTREE_}" ]; then - install -d "${D}usr/share/doc/${PF}/${_E_DOCDESTTREE_}" + local ed=${ED} + case "$EAPI" in 0|1|2) ed=${D} ;; esac + if [ ! -d "${ed}usr/share/doc/${PF}/${_E_DOCDESTTREE_}" ]; then + install -d "${ed}usr/share/doc/${PF}/${_E_DOCDESTTREE_}" local ret=$? if [[ $ret -ne 0 ]] ; then helpers_die "${FUNCNAME[0]} failed" @@ -133,9 +141,11 @@ docompress() { keepdir() { dodir "$@" local x + local ed=${ED} + case "$EAPI" in 0|1|2) ed=${D} ;; esac if [ "$1" == "-R" ] || [ "$1" == "-r" ]; then shift - find "$@" -type d -printf "${D}%p/.keep_${CATEGORY}_${PN}-${SLOT}\n" \ + find "$@" -type d -printf "${ed}%p/.keep_${CATEGORY}_${PN}-${SLOT}\n" \ | tr "\n" "\0" | \ while read -r -d $'\0' ; do >> "$REPLY" || \ @@ -143,8 +153,8 @@ keepdir() { done else for x in "$@"; do - >> "${D}${x}/.keep_${CATEGORY}_${PN}-${SLOT}" || \ - die "Failed to create .keep in ${D}${x}" + >> "${ed}${x}/.keep_${CATEGORY}_${PN}-${SLOT}" || \ + die "Failed to create .keep in ${ed}${x}" done fi } @@ -369,6 +379,9 @@ unpack() { econf() { local x + local eprefix=${EPREFIX} + case "$EAPI" in 0|1|2) eprefix= ;; esac + _hasg() { local x s=$1 shift @@ -398,12 +411,12 @@ econf() { sed -e "1s:^#![[:space:]]*/bin/sh:#!$CONFIG_SHELL:" -i "$ECONF_SOURCE/configure" || \ die "Substition of shebang in '$ECONF_SOURCE/configure' failed" fi - if [ -e /usr/share/gnuconfig/ ]; then + if [ -e "${eprefix}"/usr/share/gnuconfig/ ]; then find "${WORKDIR}" -type f '(' \ -name config.guess -o -name config.sub ')' -print0 | \ while read -r -d $'\0' x ; do - vecho " * econf: updating ${x/${WORKDIR}\/} with /usr/share/gnuconfig/${x##*/}" - cp -f /usr/share/gnuconfig/"${x##*/}" "${x}" + vecho " * econf: updating ${x/${WORKDIR}\/} with ${eprefix}/usr/share/gnuconfig/${x##*/}" + cp -f "${eprefix}"/usr/share/gnuconfig/"${x##*/}" "${x}" done fi @@ -423,7 +436,7 @@ econf() { if [[ -n ${CONF_LIBDIR} ]] && ! _hasgq --libdir=\* "$@" ; then export CONF_PREFIX=$(_hasg --exec-prefix=\* "$@") [[ -z ${CONF_PREFIX} ]] && CONF_PREFIX=$(_hasg --prefix=\* "$@") - : ${CONF_PREFIX:=/usr} + : ${CONF_PREFIX:=${eprefix}/usr} CONF_PREFIX=${CONF_PREFIX#*=} [[ ${CONF_PREFIX} != /* ]] && CONF_PREFIX="/${CONF_PREFIX}" [[ ${CONF_LIBDIR} != /* ]] && CONF_LIBDIR="/${CONF_LIBDIR}" @@ -431,15 +444,15 @@ econf() { fi set -- \ - --prefix=/usr \ + --prefix="${eprefix}"/usr \ ${CBUILD:+--build=${CBUILD}} \ --host=${CHOST} \ ${CTARGET:+--target=${CTARGET}} \ - --mandir=/usr/share/man \ - --infodir=/usr/share/info \ - --datadir=/usr/share \ - --sysconfdir=/etc \ - --localstatedir=/var/lib \ + --mandir="${eprefix}"/usr/share/man \ + --infodir="${eprefix}"/usr/share/info \ + --datadir="${eprefix}"/usr/share \ + --sysconfdir="${eprefix}"/etc \ + --localstatedir="${eprefix}"/var/lib \ "$@" \ ${EXTRA_ECONF} vecho "${ECONF_SOURCE}/configure" "$@" @@ -463,6 +476,8 @@ econf() { einstall() { # CONF_PREFIX is only set if they didn't pass in libdir above. local LOCAL_EXTRA_EINSTALL="${EXTRA_EINSTALL}" + local ed=${ED} + case "$EAPI" in 0|1|2) ed=${D} ;; esac LIBDIR_VAR="LIBDIR_${ABI}" if [ -n "${ABI}" -a -n "${!LIBDIR_VAR}" ]; then CONF_LIBDIR="${!LIBDIR_VAR}" @@ -477,22 +492,22 @@ einstall() { if [ -f ./[mM]akefile -o -f ./GNUmakefile ] ; then if [ "${PORTAGE_DEBUG}" == "1" ]; then - ${MAKE:-make} -n prefix="${D}usr" \ - datadir="${D}usr/share" \ - infodir="${D}usr/share/info" \ - localstatedir="${D}var/lib" \ - mandir="${D}usr/share/man" \ - sysconfdir="${D}etc" \ + ${MAKE:-make} -n prefix="${ed}usr" \ + datadir="${ed}usr/share" \ + infodir="${ed}usr/share/info" \ + localstatedir="${ed}var/lib" \ + mandir="${ed}usr/share/man" \ + sysconfdir="${ed}etc" \ ${LOCAL_EXTRA_EINSTALL} \ ${MAKEOPTS} ${EXTRA_EMAKE} -j1 \ "$@" install fi - ${MAKE:-make} prefix="${D}usr" \ - datadir="${D}usr/share" \ - infodir="${D}usr/share/info" \ - localstatedir="${D}var/lib" \ - mandir="${D}usr/share/man" \ - sysconfdir="${D}etc" \ + ${MAKE:-make} prefix="${ed}usr" \ + datadir="${ed}usr/share" \ + infodir="${ed}usr/share/info" \ + localstatedir="${ed}var/lib" \ + mandir="${ed}usr/share/man" \ + sysconfdir="${ed}etc" \ ${LOCAL_EXTRA_EINSTALL} \ ${MAKEOPTS} ${EXTRA_EMAKE} -j1 \ "$@" install || die "einstall failed" |