aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2010-11-13 09:09:29 -0800
committerZac Medico <zmedico@gentoo.org>2010-11-13 09:09:29 -0800
commit475b2c19abf9911c7d104ac9b40e366fccafd7a3 (patch)
treec4f81df43f7f1499626d3ac7c2001c80b1546c71 /pym/_emerge/EbuildFetcher.py
parentrepoman: add wxwidgets.eclassnotused (bug 305469) (diff)
downloadportage-475b2c19abf9911c7d104ac9b40e366fccafd7a3.tar.gz
portage-475b2c19abf9911c7d104ac9b40e366fccafd7a3.tar.bz2
portage-475b2c19abf9911c7d104ac9b40e366fccafd7a3.zip
EbuildFetcher: suppress finally blocks after fork
This should fix bug #345289.
Diffstat (limited to 'pym/_emerge/EbuildFetcher.py')
-rw-r--r--pym/_emerge/EbuildFetcher.py17
1 files changed, 13 insertions, 4 deletions
diff --git a/pym/_emerge/EbuildFetcher.py b/pym/_emerge/EbuildFetcher.py
index 96f295f3b..bfac5a6c0 100644
--- a/pym/_emerge/EbuildFetcher.py
+++ b/pym/_emerge/EbuildFetcher.py
@@ -1,6 +1,8 @@
# Copyright 1999-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
+import traceback
+
from _emerge.SpawnProcess import SpawnProcess
import sys
import portage
@@ -95,10 +97,17 @@ class EbuildFetcher(SpawnProcess):
not in ('yes', 'true')
rval = 1
- if fetch(self._uri_map, self._settings, fetchonly=self.fetchonly):
- rval = os.EX_OK
-
- os._exit(rval)
+ try:
+ if fetch(self._uri_map, self._settings, fetchonly=self.fetchonly):
+ rval = os.EX_OK
+ except SystemExit:
+ raise
+ except:
+ traceback.print_exc()
+ finally:
+ # Call os._exit() from finally block, in order to suppress any
+ # finally blocks from earlier in the call stack. See bug #345289.
+ os._exit(rval)
def _get_uri_map(self, portdb, ebuild_path):
"""