* In doebuild(), don't create directories for the "clean" or "unmerge".
authorZac Medico <zmedico@gentoo.org>
Mon, 26 Nov 2007 19:02:05 +0000 (19:02 -0000)
committerZac Medico <zmedico@gentoo.org>
Mon, 26 Nov 2007 19:02:05 +0000 (19:02 -0000)
* Fix dyn_clean() to clean the status file and return early when appropriate.

svn path=/main/trunk/; revision=8692

bin/ebuild.sh
pym/portage/__init__.py

index b8ca584d4487684c95137f6d011deb621132a276..9c4436697371978c45d2c7b0a5118151eb0c3c4d 100755 (executable)
@@ -659,8 +659,9 @@ dyn_clean() {
        if [ -z "${PORTAGE_BUILDDIR}" ]; then
                echo "Aborting clean phase because PORTAGE_BUILDDIR is unset!"
                return 1
+       elif [ ! -d "${PORTAGE_BUILDDIR}" ] ; then
+               return 0
        fi
-
        if type -P chflags > /dev/null ; then
                chflags -R noschg,nouchg,nosappnd,nouappnd "${PORTAGE_BUILDDIR}"
                chflags -R nosunlnk,nouunlnk "${PORTAGE_BUILDDIR}" 2>/dev/null
@@ -675,6 +676,7 @@ dyn_clean() {
        fi
 
        if ! hasq keepwork $FEATURES; then
+               rm -rf "${PORTAGE_BUILDDIR}/.exit_status"
                rm -rf "${PORTAGE_BUILDDIR}/.logid"
                rm -rf "${PORTAGE_BUILDDIR}/.unpacked"
                rm -rf "${PORTAGE_BUILDDIR}/.compiled"
index 29fcbda54e4db459fbe5dc8356f1a45d28651251..67b461db22c607aabf90224e15d58aed0b0de09a 100644 (file)
@@ -4261,9 +4261,13 @@ def doebuild(myebuild, mydo, myroot, mysettings, debug=0, listonly=0,
                                "correct your PORTAGE_TMPDIR setting.\n", noiselevel=-1)
                        return 1
 
+               if mydo == "unmerge":
+                       return unmerge(mysettings["CATEGORY"],
+                               mysettings["PF"], myroot, mysettings, vartree=vartree)
+
                # Build directory creation isn't required for any of these.
                have_build_dirs = False
-               if mydo not in ("digest", "fetch", "help", "manifest"):
+               if mydo not in ("clean", "digest", "fetch", "help", "manifest"):
                        mystatus = prepare_build_dirs(myroot, mysettings, cleanup)
                        if mystatus:
                                return mystatus
@@ -4272,15 +4276,11 @@ def doebuild(myebuild, mydo, myroot, mysettings, debug=0, listonly=0,
                        logfile = mysettings.get("PORTAGE_LOG_FILE")
                        if logfile and not os.access(os.path.dirname(logfile), os.W_OK):
                                logfile = None
-                               
                if have_build_dirs:
                        _doebuild_exit_status_unlink(
                                mysettings.get("EBUILD_EXIT_STATUS_FILE"))
                else:
                        mysettings.pop("EBUILD_EXIT_STATUS_FILE", None)
-               if mydo == "unmerge":
-                       return unmerge(mysettings["CATEGORY"],
-                               mysettings["PF"], myroot, mysettings, vartree=vartree)
 
                # if any of these are being called, handle them -- running them out of
                # the sandbox -- and stop now.