mirror of
https://git.rtems.org/rtems-source-builder
synced 2024-10-09 07:15:10 +08:00
sb: Clean up the bootstrap error handling.
This commit is contained in:
parent
b09fde006c
commit
467cace5ba
@ -47,7 +47,7 @@ def _grep(file, pattern):
|
|||||||
matches = [rege.match(l) != None for l in f.readlines()]
|
matches = [rege.match(l) != None for l in f.readlines()]
|
||||||
f.close()
|
f.close()
|
||||||
except IOError, err:
|
except IOError, err:
|
||||||
raise error.general('error reading: %s' % (file))
|
raise error.general('reading: %s' % (file))
|
||||||
return True in matches
|
return True in matches
|
||||||
|
|
||||||
class command:
|
class command:
|
||||||
@ -58,6 +58,7 @@ class command:
|
|||||||
self.output = None
|
self.output = None
|
||||||
self.cmd = cmd
|
self.cmd = cmd
|
||||||
self.cwd = cwd
|
self.cwd = cwd
|
||||||
|
self.result = None
|
||||||
|
|
||||||
def runner(self):
|
def runner(self):
|
||||||
|
|
||||||
@ -83,6 +84,7 @@ class command:
|
|||||||
|
|
||||||
self.start_time = datetime.datetime.now()
|
self.start_time = datetime.datetime.now()
|
||||||
self.exit_code = 0
|
self.exit_code = 0
|
||||||
|
try:
|
||||||
try:
|
try:
|
||||||
self.output = subprocess.check_output(self.cmd, cwd = self.cwd)
|
self.output = subprocess.check_output(self.cmd, cwd = self.cwd)
|
||||||
except subprocess.CalledProcessError, cpe:
|
except subprocess.CalledProcessError, cpe:
|
||||||
@ -91,6 +93,12 @@ class command:
|
|||||||
except OSError, ose:
|
except OSError, ose:
|
||||||
raise error.general('bootstrap failed: %s in %s: %s' % \
|
raise error.general('bootstrap failed: %s in %s: %s' % \
|
||||||
(' '.join(self.cmd), self.cwd, (str(ose))))
|
(' '.join(self.cmd), self.cwd, (str(ose))))
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
pass
|
||||||
|
except:
|
||||||
|
raise
|
||||||
|
except:
|
||||||
|
self.result = sys.exc_info()
|
||||||
self.end_time = datetime.datetime.now()
|
self.end_time = datetime.datetime.now()
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
@ -100,6 +108,10 @@ class command:
|
|||||||
def is_alive(self):
|
def is_alive(self):
|
||||||
return self.thread and self.thread.is_alive()
|
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:
|
class autoreconf:
|
||||||
|
|
||||||
def __init__(self, topdir, configure):
|
def __init__(self, topdir, configure):
|
||||||
@ -130,13 +142,14 @@ class autoreconf:
|
|||||||
b.write('])' + os.linesep)
|
b.write('])' + os.linesep)
|
||||||
b.close()
|
b.close()
|
||||||
except IOError, err:
|
except IOError, err:
|
||||||
raise error.general('error writing: %s' % (acinclude))
|
raise error.general('writing: %s' % (acinclude))
|
||||||
|
|
||||||
def is_alive(self):
|
def is_alive(self):
|
||||||
return self.command.is_alive()
|
return self.command.is_alive()
|
||||||
|
|
||||||
def post_process(self):
|
def post_process(self):
|
||||||
if self.command is not None:
|
if self.command is not None:
|
||||||
|
self.command.reraise()
|
||||||
if self.command.exit_code != 0:
|
if self.command.exit_code != 0:
|
||||||
raise error.general('error: autoreconf: %s' % (' '.join(self.command.cmd)))
|
raise error.general('error: autoreconf: %s' % (' '.join(self.command.cmd)))
|
||||||
makefile = path.join(self.cwd, 'Makefile.am')
|
makefile = path.join(self.cwd, 'Makefile.am')
|
||||||
@ -148,7 +161,7 @@ class autoreconf:
|
|||||||
t.write('timestamp')
|
t.write('timestamp')
|
||||||
t.close()
|
t.close()
|
||||||
except IOError, err:
|
except IOError, err:
|
||||||
raise error.general('error writing: %s' % (stamp_h))
|
raise error.general('writing: %s' % (stamp_h))
|
||||||
|
|
||||||
def generate(topdir, jobs):
|
def generate(topdir, jobs):
|
||||||
if type(jobs) is str:
|
if type(jobs) is str:
|
||||||
@ -196,7 +209,7 @@ class ampolish3:
|
|||||||
p.write(l)
|
p.write(l)
|
||||||
p.close()
|
p.close()
|
||||||
except IOError, err:
|
except IOError, err:
|
||||||
raise error.general('error writing: %s' % (self.preinstall))
|
raise error.general('writing: %s' % (self.preinstall))
|
||||||
|
|
||||||
def preinstall(topdir, jobs):
|
def preinstall(topdir, jobs):
|
||||||
if type(jobs) is str:
|
if type(jobs) is str:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user