summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2006-12-09 20:45:48 +0000
committerZac Medico <zmedico@gentoo.org>2006-12-09 20:45:48 +0000
commit33d566acc5ca42de1e6eef190ed8e75c7621eeb4 (patch)
treedeb29c6f1ae2ef32bebcbf4b85eccec490733184 /bin/ebuild.sh
parentClean up depstring/atom splitting and filtering. (diff)
downloadportage-multirepo-33d566acc5ca42de1e6eef190ed8e75c7621eeb4.tar.gz
portage-multirepo-33d566acc5ca42de1e6eef190ed8e75c7621eeb4.tar.bz2
portage-multirepo-33d566acc5ca42de1e6eef190ed8e75c7621eeb4.zip
For bug #157369, clean when cleanup has been triggered by changed timestamps. Also, allow FEATURES=keepwork to override the ebuild mtime check.
svn path=/main/trunk/; revision=5244
Diffstat (limited to 'bin/ebuild.sh')
-rwxr-xr-xbin/ebuild.sh15
1 files changed, 11 insertions, 4 deletions
diff --git a/bin/ebuild.sh b/bin/ebuild.sh
index 697ef494..fcb7438e 100755
--- a/bin/ebuild.sh
+++ b/bin/ebuild.sh
@@ -679,18 +679,25 @@ dyn_unpack() {
if [ "${PORTAGE_ACTUAL_DISTDIR:-${DISTDIR}}/${x}" -nt "${WORKDIR}" ]; then
vecho ">>> ${x} has been updated; recreating WORKDIR..."
newstuff="yes"
- rm -rf "${WORKDIR}"
break
fi
done
- if [ "${EBUILD}" -nt "${WORKDIR}" ]; then
+ if [ "${EBUILD}" -nt "${WORKDIR}" ] && ! hasq keepwork ${FEATURES} ; then
vecho ">>> ${EBUILD} has been updated; recreating WORKDIR..."
newstuff="yes"
- rm -rf "${WORKDIR}"
elif [ ! -f "${PORTAGE_BUILDDIR}/.unpacked" ]; then
vecho ">>> Not marked as unpacked; recreating WORKDIR..."
newstuff="yes"
- rm -rf "${WORKDIR}"
+ fi
+ fi
+ if [ "${newstuff}" == "yes" ]; then
+ # We don't necessarily have privileges to do a full dyn_clean here.
+ rm -rf "${WORKDIR}"
+ if [ -d "${T}" ] && ! hasq keeptemp ${FEATURES} ; then
+ rm -rf "${T}" && mkdir "${T}"
+ else
+ [ -e "${T}/environment" ] && \
+ mv "${T}/environment" "${T}/environment.keeptemp"
fi
fi
if [ -e "${WORKDIR}" ]; then