Refactor EbuildMetadataPhase._output_handler() and _set_returncode().
authorZac Medico <zmedico@gentoo.org>
Thu, 25 Dec 2008 05:30:18 +0000 (05:30 -0000)
committerZac Medico <zmedico@gentoo.org>
Thu, 25 Dec 2008 05:30:18 +0000 (05:30 -0000)
(trunk r12339)

svn path=/main/branches/2.1.6/; revision=12340

pym/_emerge/__init__.py

index 71ea7ca6d4b0d758a16f16807689726f7e120e2d..48bd9bc1fce84d7206ac6aed4c8704daf36917bb 100644 (file)
@@ -2885,28 +2885,25 @@ class EbuildMetadataPhase(SubProcess):
 
                if event & PollConstants.POLLIN:
                        self._raw_metadata.append(self._files.ebuild.read())
-
-               if not self._raw_metadata[-1] or event & PollConstants.POLLHUP:
-                       # 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, self._raw_metadata)
-                               self.metadata_callback(self.cpv, self.ebuild_path,
-                                       self.repo_path, metadata, self.ebuild_mtime)
+                       if not self._raw_metadata[-1]:
+                               self._unregister()
+                               self.wait()
 
                self._unregister_if_appropriate(event)
                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
+               if self.returncode == os.EX_OK:
+                       metadata_lines = "".join(self._raw_metadata).splitlines()
+                       if len(portage.auxdbkeys) != len(metadata_lines):
+                               # Don't trust bash's returncode if the
+                               # number of lines is incorrect.
+                               self.returncode = 1
+                       else:
+                               metadata = izip(portage.auxdbkeys, metadata_lines)
+                               self.metadata_callback(self.cpv, self.ebuild_path,
+                                       self.repo_path, metadata, self.ebuild_mtime)
 
 class EbuildProcess(SpawnProcess):