diff options
author | Zac Medico <zmedico@gentoo.org> | 2009-10-17 05:36:16 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2009-10-17 05:36:16 +0000 |
commit | fb15e6806685fa8937b4c99d24b48cc7fb62e852 (patch) | |
tree | 3257d481caa99fdf7016d164c365b9cbc5aae288 | |
parent | 4212f58a4607eb73d6b36f725b736ed549623712 (diff) | |
download | portage-fb15e6806685fa8937b4c99d24b48cc7fb62e852.tar.gz portage-fb15e6806685fa8937b4c99d24b48cc7fb62e852.tar.bz2 portage-fb15e6806685fa8937b4c99d24b48cc7fb62e852.zip |
Bug #273648 - EAPI 3 - the following condtions must be met:
1. The A variable contains no items.
2. The phase function in question is not in DEFINED_PHASES.
3. None of the phase functions unpack, prepare, configure, compile or install,
if supported by the EAPI in question and occurring prior to the phase about
to be executed, are in DEFINED_PHASES.
Thanks to Jonathan Callen <abcd@g.o> for this patch.
svn path=/main/trunk/; revision=14616
-rwxr-xr-x | bin/ebuild.sh | 62 |
1 files changed, 49 insertions, 13 deletions
diff --git a/bin/ebuild.sh b/bin/ebuild.sh index e2e6f7783..1c864b04f 100755 --- a/bin/ebuild.sh +++ b/bin/ebuild.sh @@ -905,13 +905,17 @@ dyn_prepare() { return 0 fi - local srcdir if [[ -d $S ]] ; then - srcdir=$S + cd "${S}" + elif hasq $EAPI 0 1 2; then + cd "${WORKDIR}" + elif [[ -z ${A} ]] && \ + ! hasq unpack ${DEFINED_PHASES} && \ + ! hasq prepare ${DEFINED_PHASES} ; then + cd "${WORKDIR}" else - srcdir=$WORKDIR + die "The source directory '${S}' doesn't exist" fi - cd "$srcdir" trap abort_prepare SIGINT SIGQUIT @@ -934,6 +938,19 @@ dyn_configure() { return 0 fi + if [[ -d $S ]] ; then + cd "${S}" + elif hasq $EAPI 0 1 2; then + cd "${WORKDIR}" + elif [[ -z ${A} ]] && \ + ! hasq unpack ${DEFINED_PHASES} && \ + ! hasq prepare ${DEFINED_PHASES} && \ + ! hasq configure ${DEFINED_PHASES} ; then + cd "${WORKDIR}" + else + die "The source directory '${S}' doesn't exist" + fi + trap abort_configure SIGINT SIGQUIT [ -n "$EBUILD_PHASE" ] && rm -f "$T/logging/$EBUILD_PHASE" @@ -957,6 +974,20 @@ dyn_compile() { return 0 fi + if [[ -d $S ]] ; then + cd "${S}" + elif hasq $EAPI 0 1 2; then + cd "${WORKDIR}" + elif [[ -z ${A} ]] && \ + ! hasq unpack ${DEFINED_PHASES} && \ + ! hasq prepare ${DEFINED_PHASES} && \ + ! hasq configure ${DEFINED_PHASES} && \ + ! hasq compile ${DEFINED_PHASES} ; then + cd "${WORKDIR}" + else + die "The source directory '${S}' doesn't exist" + fi + trap abort_compile SIGINT SIGQUIT [ -n "$EBUILD_PHASE" ] && rm -f "$T/logging/$EBUILD_PHASE" @@ -989,6 +1020,7 @@ dyn_test() { else cd "${WORKDIR}" fi + if ! hasq test $FEATURES && [ "${EBUILD_FORCE_TEST}" != "1" ]; then vecho ">>> Test phase [not enabled]: ${CATEGORY}/${PF}" elif hasq test $RESTRICT; then @@ -1023,11 +1055,22 @@ dyn_install() { ebuild_phase pre_src_install rm -rf "${PORTAGE_BUILDDIR}/image" mkdir "${PORTAGE_BUILDDIR}/image" - if [ -d "${S}" ]; then + local srcdir + if [[ -d $S ]] ; then cd "${S}" - else + elif hasq $EAPI 0 1 2; then cd "${WORKDIR}" + elif [[ -z ${A} ]] && \ + ! hasq unpack ${DEFINED_PHASES} && \ + ! hasq prepare ${DEFINED_PHASES} && \ + ! hasq configure ${DEFINED_PHASES} && \ + ! hasq compile ${DEFINED_PHASES} && \ + ! hasq install ${DEFINED_PHASES}; then + cd "${WORKDIR}" + else + die "The source directory '${S}' doesn't exist" fi + vecho vecho ">>> Install ${PF} into ${D} category ${CATEGORY}" #our custom version of libtool uses $S and $D to fix @@ -2014,13 +2057,6 @@ ebuild_main() { cp "$EBUILD" "build-info/$PF.ebuild" fi - local srcdir - if [[ -d $S ]] ; then - srcdir=$S - else - srcdir=$WORKDIR - fi - cd "$srcdir" #our custom version of libtool uses $S and $D to fix #invalid paths in .la files export S D |