summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Johns <chrisj@rtems.org>2016-12-01 10:21:13 +1100
committerChris Johns <chrisj@rtems.org>2016-12-01 10:21:13 +1100
commitd3d771e95f48f65897e8093a22d97317e46db052 (patch)
tree1cdb3c9d907e5a7f074cd5a2fefeb840bf1a3e70
parentbsp-bulder: Get the end time when building an architecture. (diff)
downloadrtems-tools-d3d771e95f48f65897e8093a22d97317e46db052.tar.bz2
bsp-builder: Add support for builds.
Add build support where a build is a combination of options. The default is 'all' which is a full set of build options passed to configure. You can now use 'basic' which is the standard or default configure command line. This used with the arch option lets you quickly build all BSPs in an architecture. For example: $ rtems-bsp-builder --build-path /builds/rtems/builds/arm \ --rtems-tools /opt/rtems/4.12 \ --rtems /opt/rtems/src/rtems.git \ --arch arm --build basic
-rwxr-xr-xtester/rt/check.py42
-rw-r--r--tester/rtems/rtems-bsps.ini31
2 files changed, 50 insertions, 23 deletions
diff --git a/tester/rt/check.py b/tester/rt/check.py
index 4746422..6c158ce 100755
--- a/tester/rt/check.py
+++ b/tester/rt/check.py
@@ -201,7 +201,7 @@ class configuration:
return []
return sorted(set([a.strip() for a in items.split(',')]))
- def load(self, name):
+ def load(self, name, variation):
if not path.exists(name):
raise error.general('config: cannot read configuration: %s' % (name))
self.name = name
@@ -241,9 +241,17 @@ class configuration:
builds = {}
builds['default'] = self._get_item('builds', 'default').split()
builds['variations'] = self._comma_list('builds', 'variations')
+ if variation is None:
+ variation = builds['default']
+ builds['variation'] = variation
+ builds['base'] = self._get_item('builds', 'standard').split()
+ builds['variations'] = self._comma_list('builds', variation)
builds['var_options'] = {}
for v in builds['variations']:
- builds['var_options'][v] = self._get_item('builds', v).split()
+ if v == 'base':
+ builds['var_options'][v] = self._get_item('builds', v).split()
+ else:
+ builds['var_options'][v] = []
self.builds = builds
def variations(self):
@@ -278,8 +286,8 @@ class configuration:
def bspopts(self, arch, bsp):
return self.archs[arch][bsp]['bspopts']
- def defaults(self):
- return self.builds['default']
+ def base(self):
+ return self.builds['base']
def variant_options(self, variant):
if variant in self.builds['var_options']:
@@ -370,7 +378,7 @@ class build:
def _build_set(self, variations):
build_set = { }
- bs = self.config.defaults()
+ bs = self.config.base()
for var in variations:
build_set[var] = bs + self.config.variant_options(var)
return build_set
@@ -455,9 +463,9 @@ class build:
if self.options['stop-on-error']:
raise error.general('Building %s failed' % (bs))
files = self._count_files(arch, bsp, bs)
- log.notice('%s: %s: warnings:%d exes:%d objs:%s libs:%d' % \
- (result, bs, warnings.get(),
- files['exes'], files['objs'], files['libs']))
+ log.notice('%s: %s: warnings:%d exes:%d objs:%s libs:%d' % \
+ (result, bs, warnings.get(),
+ files['exes'], files['objs'], files['libs']))
log.notice(' %s' % (self._error_str()))
self.results.add(result[0] == '+', arch, bsp, config_cmd, warnings.get())
finally:
@@ -548,12 +556,17 @@ def run_args(args):
argsp.add_argument('--rtems', help = 'The RTEMS source tree.', type = str)
argsp.add_argument('--build-path', help = 'Path to build in.', type = str)
argsp.add_argument('--log', help = 'Log file.', type = str)
- argsp.add_argument('--stop-on-error', help = 'Stop on an error.', action = 'store_true')
- argsp.add_argument('--no-clean', help = 'Do not clean the build output.', action = 'store_true')
- argsp.add_argument('--profiles', help = 'Build the listed profiles.', type = str, default = 'tier-1')
+ argsp.add_argument('--stop-on-error', help = 'Stop on an error.',
+ action = 'store_true')
+ argsp.add_argument('--no-clean', help = 'Do not clean the build output.',
+ action = 'store_true')
+ argsp.add_argument('--profiles', help = 'Build the listed profiles.',
+ type = str, default = 'tier-1')
+ argsp.add_argument('--build', help = 'Build variation.', type = str)
argsp.add_argument('--arch', help = 'Build the specific architecture.', type = str)
argsp.add_argument('--bsp', help = 'Build the specific BSP.', type = str)
- argsp.add_argument('--dry-run', help = 'Do not run the actual builds.', action = 'store_true')
+ argsp.add_argument('--dry-run', help = 'Do not run the actual builds.',
+ action = 'store_true')
opts = argsp.parse_args(args[1:])
if opts.log is not None:
@@ -572,14 +585,15 @@ def run_args(args):
raise error.general('BSP provided but no architecture')
config = configuration()
- config.load(config_file)
+ config.load(config_file, opts.build)
options = { 'stop-on-error' : opts.stop_on_error,
'no-clean' : opts.no_clean,
'dry-run' : opts.dry_run,
'jobs' : 8 }
- b = build(config, rtems_version(), prefix, tools, path.shell(opts.rtems), build_dir, options)
+ b = build(config, rtems_version(), prefix, tools,
+ path.shell(opts.rtems), build_dir, options)
if opts.arch is not None:
if opts.bsp is not None:
b.build_arch_bsp(opts.arch, opts.bsp)
diff --git a/tester/rtems/rtems-bsps.ini b/tester/rtems/rtems-bsps.ini
index e0e8f82..ad63e6d 100644
--- a/tester/rtems/rtems-bsps.ini
+++ b/tester/rtems/rtems-bsps.ini
@@ -156,19 +156,32 @@ bsps = epiphany-sim
#
[builds]
#
+# The default variation.
+#
+default = all
+#
+# The variations, basic is just a BSP build and all is the maximum number of
+# variations.
+#
+variations = basic, all
+#
# The variations, default is Yes and can be overriden in an architecture.
#
-variations = debug, profiling, smp, smp-debug,
- posix, no-posix, posix-debug, posix-profiling, posix-smp,
- network, no-network, network-debug, smp-network, smp-network-debug
+basic = standard
+#
+# The all, default is Yes and can be overriden in an architecture.
+#
+all = debug, profiling, smp, smp-debug,
+ posix, no-posix, posix-debug, posix-profiling, posix-smp,
+ network, no-network, network-debug, smp-network, smp-network-debug
#
-# The default build, tests the default configuration, all variations are added
-# on.
+# The base build options, tests the default configuration, all variations are
+# added on.
#
-default = --target=@ARCH@-rtems@RTEMS_VERSION@
- --enable-rtemsbsp=@BSP@
- --prefix=@PREFIX@
- --enable-tests
+standard = --target=@ARCH@-rtems@RTEMS_VERSION@
+ --enable-rtemsbsp=@BSP@
+ --prefix=@PREFIX@
+ --enable-tests
#
# The options for each varations.
#