sb: Clean up the bootstrap error handling.

This commit is contained in:
Chris Johns 2014-05-20 21:55:51 +10:00
parent b09fde006c
commit 467cace5ba

View File

@ -47,7 +47,7 @@ def _grep(file, pattern):
matches = [rege.match(l) != None for l in f.readlines()]
f.close()
except IOError, err:
raise error.general('error reading: %s' % (file))
raise error.general('reading: %s' % (file))
return True in matches
class command:
@ -58,6 +58,7 @@ class command:
self.output = None
self.cmd = cmd
self.cwd = cwd
self.result = None
def runner(self):
@ -84,13 +85,20 @@ class command:
self.start_time = datetime.datetime.now()
self.exit_code = 0
try:
self.output = subprocess.check_output(self.cmd, cwd = self.cwd)
except subprocess.CalledProcessError, cpe:
self.exit_code = cpe.returncode
self.output = cpe.output
except OSError, ose:
raise error.general('bootstrap failed: %s in %s: %s' % \
(' '.join(self.cmd), self.cwd, (str(ose))))
try:
self.output = subprocess.check_output(self.cmd, cwd = self.cwd)
except subprocess.CalledProcessError, cpe:
self.exit_code = cpe.returncode
self.output = cpe.output
except OSError, ose:
raise error.general('bootstrap failed: %s in %s: %s' % \
(' '.join(self.cmd), self.cwd, (str(ose))))
except KeyboardInterrupt:
pass
except:
raise
except:
self.result = sys.exc_info()
self.end_time = datetime.datetime.now()
def run(self):
@ -100,6 +108,10 @@ class command:
def is_alive(self):
return self.thread and self.thread.is_alive()
def reraise(self):
if self.result is not None:
raise self.result[0], self.result[1], self.result[2]
class autoreconf:
def __init__(self, topdir, configure):
@ -130,13 +142,14 @@ class autoreconf:
b.write('])' + os.linesep)
b.close()
except IOError, err:
raise error.general('error writing: %s' % (acinclude))
raise error.general('writing: %s' % (acinclude))
def is_alive(self):
return self.command.is_alive()
def post_process(self):
if self.command is not None:
self.command.reraise()
if self.command.exit_code != 0:
raise error.general('error: autoreconf: %s' % (' '.join(self.command.cmd)))
makefile = path.join(self.cwd, 'Makefile.am')
@ -148,7 +161,7 @@ class autoreconf:
t.write('timestamp')
t.close()
except IOError, err:
raise error.general('error writing: %s' % (stamp_h))
raise error.general('writing: %s' % (stamp_h))
def generate(topdir, jobs):
if type(jobs) is str:
@ -196,7 +209,7 @@ class ampolish3:
p.write(l)
p.close()
except IOError, err:
raise error.general('error writing: %s' % (self.preinstall))
raise error.general('writing: %s' % (self.preinstall))
def preinstall(topdir, jobs):
if type(jobs) is str: