mirror of
https://git.rtems.org/rtems-source-builder
synced 2024-10-09 07:15:10 +08:00
sb: Move error report generation to the build phase.
Generate a separate report of each package being built in a build set. This creates a better list of faults in the case of nesting build sets such as */rtems-all.
This commit is contained in:
@@ -109,6 +109,9 @@ class build:
|
||||
else:
|
||||
return name
|
||||
|
||||
def _generate_report_(self, header):
|
||||
ereport.generate('rsb-report-%s.txt' % self.macros['name'], self.opts, header)
|
||||
|
||||
def __init__(self, name, create_tar_files, opts, macros = None):
|
||||
self.opts = opts
|
||||
if macros is None:
|
||||
@@ -386,29 +389,44 @@ class build:
|
||||
if package.disabled():
|
||||
log.notice('package: nothing to build')
|
||||
else:
|
||||
name = package.name()
|
||||
if self.canadian_cross():
|
||||
log.notice('package: (Cxc) %s' % (name))
|
||||
else:
|
||||
log.notice('package: %s' % (name))
|
||||
log.trace('---- macro maps %s' % ('-' * 55))
|
||||
log.trace('%s' % (str(self.config.macros)))
|
||||
log.trace('-' * 70)
|
||||
self.script.reset()
|
||||
self.script.append(self.config.expand('%{___build_template}'))
|
||||
self.script.append('echo "=> ' + name + ':"')
|
||||
self.prep(package)
|
||||
self.build_package(package)
|
||||
if not self.opts.dry_run():
|
||||
self.builddir()
|
||||
sn = path.join(self.config.expand('%{_builddir}'), 'doit')
|
||||
log.output('write script: ' + sn)
|
||||
self.script.write(sn)
|
||||
try:
|
||||
name = package.name()
|
||||
if self.canadian_cross():
|
||||
log.notice('building: (Cxc) %s' % (name))
|
||||
log.notice('package: (Cxc) %s' % (name))
|
||||
else:
|
||||
log.notice('building: %s' % (name))
|
||||
self.run(sn)
|
||||
log.notice('package: %s' % (name))
|
||||
log.trace('---- macro maps %s' % ('-' * 55))
|
||||
log.trace('%s' % (str(self.config.macros)))
|
||||
log.trace('-' * 70)
|
||||
self.script.reset()
|
||||
self.script.append(self.config.expand('%{___build_template}'))
|
||||
self.script.append('echo "=> ' + name + ':"')
|
||||
self.prep(package)
|
||||
self.build_package(package)
|
||||
if not self.opts.dry_run():
|
||||
self.builddir()
|
||||
sn = path.join(self.config.expand('%{_builddir}'), 'doit')
|
||||
log.output('write script: ' + sn)
|
||||
self.script.write(sn)
|
||||
if self.canadian_cross():
|
||||
log.notice('building: (Cxc) %s' % (name))
|
||||
else:
|
||||
log.notice('building: %s' % (name))
|
||||
self.run(sn)
|
||||
except error.general, gerr:
|
||||
log.notice(str(gerr))
|
||||
log.stderr('Build FAILED')
|
||||
self._generate_report_('Build: %s' % (gerr))
|
||||
raise
|
||||
except error.internal, ierr:
|
||||
log.notice(str(ierr))
|
||||
log.stderr('Internal Build FAILED')
|
||||
self._generate_report_('Build: %s' % (ierr))
|
||||
raise
|
||||
except:
|
||||
raise
|
||||
if self.opts.dry_run():
|
||||
self._generate_report_('Build: dry run')
|
||||
|
||||
def name(self):
|
||||
packages = self.config.packages()
|
||||
@@ -454,9 +472,6 @@ def find_config(config, configs):
|
||||
|
||||
def run(args):
|
||||
ec = 0
|
||||
opts = None
|
||||
b = None
|
||||
erheader = None
|
||||
try:
|
||||
optargs = { '--list-configs': 'List available configurations' }
|
||||
opts = options.load(args, optargs)
|
||||
@@ -479,13 +494,9 @@ def run(args):
|
||||
b.make()
|
||||
b = None
|
||||
except error.general, gerr:
|
||||
erheader = 'Build: %s' % (gerr)
|
||||
log.notice(str(gerr))
|
||||
log.stderr('Build FAILED')
|
||||
ec = 1
|
||||
except error.internal, ierr:
|
||||
erheader = 'Build: %s' % (ierr)
|
||||
log.notice(str(ierr))
|
||||
log.stderr('Internal Build FAILED')
|
||||
ec = 1
|
||||
except error.exit, eerr:
|
||||
@@ -493,12 +504,6 @@ def run(args):
|
||||
except KeyboardInterrupt:
|
||||
log.notice('abort: user terminated')
|
||||
ec = 1
|
||||
if (ec != 0 and erheader and opts and b) or (opts and opts.dry_run()):
|
||||
if opts.dry_run():
|
||||
bname = 'dry-run'
|
||||
else:
|
||||
bname = b.name()
|
||||
ereport.generate('rsb-report-%s.txt' % (bname), opts, erheader)
|
||||
sys.exit(ec)
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
@@ -427,9 +427,6 @@ def list_bset_cfg_files(opts, configs):
|
||||
def run():
|
||||
import sys
|
||||
ec = 0
|
||||
opts = None
|
||||
b = None
|
||||
erheader = None
|
||||
try:
|
||||
optargs = { '--list-configs': 'List available configurations',
|
||||
'--list-bsets': 'List available build sets',
|
||||
@@ -464,13 +461,9 @@ def run():
|
||||
c += 1
|
||||
print 'dep[%d]: %s' % (c, d)
|
||||
except error.general, gerr:
|
||||
erheader = 'Build: %s' % (gerr)
|
||||
log.notice(str(gerr))
|
||||
log.stderr('Build FAILED')
|
||||
ec = 1
|
||||
except error.internal, ierr:
|
||||
erheader = 'Build: %s' % (ierr)
|
||||
log.notice(str(ierr))
|
||||
log.stderr('Internal Build FAILED')
|
||||
ec = 1
|
||||
except error.exit, eerr:
|
||||
@@ -478,12 +471,6 @@ def run():
|
||||
except KeyboardInterrupt:
|
||||
log.notice('abort: user terminated')
|
||||
ec = 1
|
||||
if (ec != 0 and erheader and opts and b) or (opts and opts.dry_run()):
|
||||
if opts.dry_run():
|
||||
bset = 'dry-run'
|
||||
else:
|
||||
bset = b.bset
|
||||
ereport.generate('rsb-report-%s.txt' % (bset), opts, erheader)
|
||||
sys.exit(ec)
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
Reference in New Issue
Block a user