diff options
Diffstat (limited to 'pym/_emerge/EbuildMetadataPhase.py')
-rw-r--r-- | pym/_emerge/EbuildMetadataPhase.py | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/pym/_emerge/EbuildMetadataPhase.py b/pym/_emerge/EbuildMetadataPhase.py index e068e8f24..d4f5bc009 100644 --- a/pym/_emerge/EbuildMetadataPhase.py +++ b/pym/_emerge/EbuildMetadataPhase.py @@ -112,16 +112,19 @@ class EbuildMetadataPhase(SubProcess): def _output_handler(self, fd, event): if event & PollConstants.POLLIN: - try: - self._raw_metadata.append( - os.read(self._files.ebuild, self._bufsize)) - except IOError as e: - if e.errno not in (errno.EAGAIN,): - raise - else: - if not self._raw_metadata[-1]: - self._unregister() - self.wait() + while True: + try: + self._raw_metadata.append( + os.read(self._files.ebuild, self._bufsize)) + except OSError as e: + if e.errno not in (errno.EAGAIN,): + raise + break + else: + if not self._raw_metadata[-1]: + self._unregister() + self.wait() + break self._unregister_if_appropriate(event) |