diff options
-rw-r--r-- | pym/_emerge/__init__.py | 24 | ||||
-rw-r--r-- | pym/portage/dbapi/bintree.py | 2 |
2 files changed, 22 insertions, 4 deletions
diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py index ac2d63b28..d8c5347f3 100644 --- a/pym/_emerge/__init__.py +++ b/pym/_emerge/__init__.py @@ -2760,6 +2760,8 @@ class EbuildBinpkg(EbuildPhase): pkg = self.pkg bintree = pkg.root_config.trees["bintree"] binpkg_tmpfile = self._binpkg_tmpfile + writemsg("EbuildBinpkg returncode %s binpkg_tmpfile '%s'\n" % \ + (self.returncode, binpkg_tmpfile)) if self.returncode == os.EX_OK: bintree.inject(pkg.cpv, filename=binpkg_tmpfile) @@ -3361,7 +3363,23 @@ class PackageMerge(AsynchronousTask): __slots__ = ("merge",) def _start(self): - self.returncode = self.merge.merge() + + log_path = self.merge.settings.get("PORTAGE_LOG_FILE") + log_file = None + + orig_stdout = sys.stdout + + if self.background and log_path is not None: + log_file = open(log_path, 'a') + sys.stdout = log_file + + try: + self.returncode = self.merge.merge() + finally: + if log_file is not None: + sys.stdout = orig_stdout + log_file.close() + self.wait() class DependencyArg(object): @@ -8790,7 +8808,7 @@ class Scheduler(PollScheduler): def _build_exit(self, build): if build.returncode == os.EX_OK: self.curval += 1 - merge = PackageMerge(merge=build) + merge = PackageMerge(background=build.background, merge=build) merge.addExitListener(self._merge_exit) self._task_queues.merge.add(merge) else: @@ -8926,7 +8944,7 @@ class Scheduler(PollScheduler): task = self._task(pkg, background) if pkg.installed: - merge = PackageMerge(merge=task) + merge = PackageMerge(background=background, merge=task) merge.addExitListener(self._merge_exit) task_queues.merge.add(merge) elif pkg.built: diff --git a/pym/portage/dbapi/bintree.py b/pym/portage/dbapi/bintree.py index 6de9b5d87..86b8aba81 100644 --- a/pym/portage/dbapi/bintree.py +++ b/pym/portage/dbapi/bintree.py @@ -822,7 +822,7 @@ class binarytree(object): d2 = pkgindex.packages[i] if d2["CPV"] != cpv: continue - if d2.get("PATH") == d.get("PATH"): + if d2.get("PATH", "") == d.get("PATH", ""): del pkgindex.packages[i] pkgindex.packages.append(d) self._update_pkgindex_header(pkgindex.header) |