dblink.unmerge: always initialize myebuildpath
authorZac Medico <zmedico@gentoo.org>
Thu, 26 May 2011 02:32:42 +0000 (19:32 -0700)
committerZac Medico <zmedico@gentoo.org>
Thu, 26 May 2011 06:12:38 +0000 (23:12 -0700)
This is required for the doebuild_environment() call. Also, set
builddir_locked = True when appropriate.

pym/portage/dbapi/vartree.py

index b75d69a38148d8395d9e4f25291ea5a582376df6..5394895263dcbc3db105eb950b8e1d4eda005ee5 100644 (file)
@@ -1612,14 +1612,13 @@ class dblink(object):
                contents = self.getcontents()
                # Now, don't assume that the name of the ebuild is the same as the
                # name of the dir; the package may have been moved.
-               myebuildpath = None
+               myebuildpath = os.path.join(self.dbdir, self.pkg + ".ebuild")
                failures = 0
                ebuild_phase = "prerm"
                log_path = None
                mystuff = os.listdir(self.dbdir)
                for x in mystuff:
                        if x.endswith(".ebuild"):
-                               myebuildpath = os.path.join(self.dbdir, self.pkg + ".ebuild")
                                if x[:-7] != self.pkg:
                                        # Clean up after vardbapi.move_ent() breakage in
                                        # portage versions before 2.1.2
@@ -1655,6 +1654,7 @@ class dblink(object):
                                        scheduler=(scheduler or PollScheduler().sched_iface),
                                        settings=self.settings)
                                builddir_lock.lock()
+                               builddir_locked = True
                                prepare_build_dirs(settings=self.settings, cleanup=True)
                                log_path = self.settings.get("PORTAGE_LOG_FILE")
 
@@ -1668,7 +1668,7 @@ class dblink(object):
                                        level=logging.ERROR, noiselevel=-1)
                                showMessage(_unicode_decode("%s\n") % (eapi_unsupported,),
                                        level=logging.ERROR, noiselevel=-1)
-                       elif myebuildpath:
+                       elif os.path.isfile(myebuildpath):
                                if scheduler is None:
                                        retval = _spawn_phase('prerm', self.settings)
                                else:
@@ -1684,7 +1684,7 @@ class dblink(object):
                        self._unmerge_pkgfiles(pkgfiles, others_in_slot)
                        self._clear_contents_cache()
 
-                       if myebuildpath and not eapi_unsupported:
+                       if not eapi_unsupported and os.path.isfile(myebuildpath):
                                ebuild_phase = "postrm"
                                if scheduler is None:
                                        retval = _spawn_phase(ebuild_phase, self.settings)
@@ -1702,7 +1702,7 @@ class dblink(object):
                        self.vartree.dbapi._bump_mtime(self.mycpv)
                        if builddir_locked:
                                try:
-                                       if myebuildpath and not eapi_unsupported:
+                                       if not eapi_unsupported and os.path.isfile(myebuildpath):
                                                if retval != os.EX_OK:
                                                        msg_lines = []
                                                        msg = _("The '%(ebuild_phase)s' "
@@ -1746,11 +1746,6 @@ class dblink(object):
                                                        phasefilter=('prerm', 'postrm'))
 
                                        if retval == os.EX_OK and builddir_locked:
-                                               # myebuildpath might be None, so ensure
-                                               # it has a sane value for the clean phase,
-                                               # even though it won't really be sourced.
-                                               myebuildpath = os.path.join(self.dbdir,
-                                                       self.pkg + ".ebuild")
                                                try:
                                                        doebuild_environment(myebuildpath, "cleanrm",
                                                                settings=self.settings, db=self.vartree.dbapi)