MergeProcess: call elog_process for replaced pkgs
authorZac Medico <zmedico@gentoo.org>
Sat, 26 Mar 2011 03:24:10 +0000 (20:24 -0700)
committerZac Medico <zmedico@gentoo.org>
Sat, 26 Mar 2011 03:24:10 +0000 (20:24 -0700)
pym/_emerge/Binpkg.py
pym/_emerge/EbuildBuild.py
pym/portage/dbapi/_MergeProcess.py

index fbd2a53acd80348574bbbc60ba677cd278ebfa1b..62d44c48f575c2f28c448a48973963565189d286 100644 (file)
@@ -304,8 +304,6 @@ class Binpkg(CompositeTask):
        def _unlock_builddir(self):
                if self.opts.pretend or self.opts.fetchonly:
                        return
-               portage.elog.elog_process(self.pkg.cpv, self.settings,
-                       phasefilter=("prerm", "postrm"))
                portage.elog.elog_process(self.pkg.cpv, self.settings)
                self._build_dir.unlock()
 
index b72b3d55e9ac90b470c9a6cf88079c6a78a19443..c7a5f5cdb7b1739d75e316c5e9e3ecc61358af52 100644 (file)
@@ -243,8 +243,6 @@ class EbuildBuild(CompositeTask):
                self.wait()
 
        def _unlock_builddir(self):
-               portage.elog.elog_process(self.pkg.cpv, self.settings,
-                       phasefilter=("prerm", "postrm"))
                portage.elog.elog_process(self.pkg.cpv, self.settings)
                self._build_dir.unlock()
 
index 809af373c502dc74c4ecc235b1b3f6c59fd922f6..10d8873ec773d461030313c7b0c10e34861e73a2 100644 (file)
@@ -21,7 +21,7 @@ class MergeProcess(SpawnProcess):
        __slots__ = ('dblink', 'mycat', 'mypkg', 'settings', 'treetype',
                'vartree', 'scheduler', 'blockers', 'pkgloc', 'infloc', 'myebuild',
                'mydbapi', 'prev_mtimes', '_elog_reader_fd', '_elog_reg_id',
-               '_buf')
+               '_buf', '_elog_keys')
 
        def _elog_output_handler(self, fd, event):
                output = None
@@ -41,6 +41,7 @@ class MergeProcess(SpawnProcess):
                                out = StringIO()
                                for line in lines:
                                        funcname, phase, key, msg = line.split(' ', 3)
+                                       self._elog_keys.add(key)
                                        reporter = getattr(portage.elog.messages, funcname)
                                        reporter(msg, phase=phase, key=key, out=out)
 
@@ -67,6 +68,7 @@ class MergeProcess(SpawnProcess):
                        os.close(elog_writer_fd)
                        self._elog_reader_fd = elog_reader_fd
                        self._buf = ""
+                       self._elog_keys = set()
                        self.vartree.dbapi._pkgs_changed = True
                        portage.process.spawned_pids.append(pid)
                        return [pid]
@@ -124,5 +126,10 @@ class MergeProcess(SpawnProcess):
                if self._elog_reader_fd:
                        os.close(self._elog_reader_fd)
                        self._elog_reader_fd = None
+               if self._elog_keys is not None:
+                       for key in self._elog_keys:
+                               portage.elog.elog_process(key, self.settings,
+                                       phasefilter=("prerm", "postrm"))
+                       self._elog_keys = None
 
                super(MergeProcess, self)._unregister()