summaryrefslogtreecommitdiffstats
path: root/pym/_emerge
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2008-12-12 21:29:26 +0000
committerZac Medico <zmedico@gentoo.org>2008-12-12 21:29:26 +0000
commitd113b772b6a015616c0fd911ed6c8f95513d9ffb (patch)
tree552abcfee5079df8a2797d79016e8dcc547d709f /pym/_emerge
parente21955d45f7269ecac144ffecb0a20c5af3c1768 (diff)
downloadportage-d113b772b6a015616c0fd911ed6c8f95513d9ffb.tar.gz
portage-d113b772b6a015616c0fd911ed6c8f95513d9ffb.tar.bz2
portage-d113b772b6a015616c0fd911ed6c8f95513d9ffb.zip
When processing output from the "depend" phase, use the number of lines as
a sanity check so that bash's returncode doesn't have to be trusted. (trunk r12191) svn path=/main/branches/2.1.6/; revision=12224
Diffstat (limited to 'pym/_emerge')
-rw-r--r--pym/_emerge/__init__.py13
1 files changed, 11 insertions, 2 deletions
diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py
index 559894bc6..4349459fe 100644
--- a/pym/_emerge/__init__.py
+++ b/pym/_emerge/__init__.py
@@ -2848,17 +2848,26 @@ class EbuildMetadataPhase(SubProcess):
files = self._files
self._raw_metadata.append(files.ebuild.read())
if not self._raw_metadata[-1]:
+ # Split lines here so they can be counted inside _set_returncode().
+ self._raw_metadata = "".join(self._raw_metadata).splitlines()
self._unregister()
self.wait()
if self.returncode == os.EX_OK:
- metadata = izip(portage.auxdbkeys,
- "".join(self._raw_metadata).splitlines())
+ metadata = izip(portage.auxdbkeys, self._raw_metadata)
self.metadata_callback(self.cpv, self.ebuild_path,
self.repo_path, metadata, self.ebuild_mtime)
return self._registered
+ def _set_returncode(self, wait_retval):
+ SubProcess._set_returncode(self, wait_retval)
+ if self.returncode == os.EX_OK and \
+ len(portage.auxdbkeys) != len(self._raw_metadata):
+ # Don't trust bash's returncode if the
+ # number of lines is incorrect.
+ self.returncode = 1
+
class EbuildProcess(SpawnProcess):
__slots__ = ("phase", "pkg", "settings", "tree")