summaryrefslogtreecommitdiffstats
path: root/pym
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2008-07-13 07:30:43 +0000
committerZac Medico <zmedico@gentoo.org>2008-07-13 07:30:43 +0000
commit0cd6bf58f3a5ef752582f0cf1c2f9b9efb4441a8 (patch)
tree66a62ffb22da59a522958b3562f1852e6e4753cf /pym
parentb302a739b30811819796674a937118f57e5d09a3 (diff)
downloadportage-0cd6bf58f3a5ef752582f0cf1c2f9b9efb4441a8.tar.gz
portage-0cd6bf58f3a5ef752582f0cf1c2f9b9efb4441a8.tar.bz2
portage-0cd6bf58f3a5ef752582f0cf1c2f9b9efb4441a8.zip
Fix broken binpkg path comparison in in binarytree.inject() so that duplicate
entries are correctly from the Packages index. svn path=/main/trunk/; revision=11034
Diffstat (limited to 'pym')
-rw-r--r--pym/_emerge/__init__.py24
-rw-r--r--pym/portage/dbapi/bintree.py2
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)