The BSP Builder builds multiple BSPs at the same time. At one point, I thought waf had a problem with that. Has that been resolved.
Are the config files and build directories sufficiently unique (BSP only isn't unique enough I think) for this to work with waf? This is a step in the right direction but still might have issues with concurrency. Just asking. --joel On Thu, May 20, 2021 at 12:13 AM Chris Johns <chr...@rtems.org> wrote: > Looks fine (on my phone) > > Thanks for this > > > On 20 May 2021, at 1:25 am, Ryan Long <ryan.l...@oarcorp.com> wrote: > > > > Closes #4124 > > --- > > config/rtems-bsps.ini | 28 ++++++++++++++-------------- > > tester/rt/check.py | 35 ++++++++++++++++++++++++++--------- > > 2 files changed, 40 insertions(+), 23 deletions(-) > > > > diff --git a/config/rtems-bsps.ini b/config/rtems-bsps.ini > > index 93156fb..d5de667 100644 > > --- a/config/rtems-bsps.ini > > +++ b/config/rtems-bsps.ini > > @@ -156,23 +156,23 @@ smp-network-debug = config:base, config:smp, > config:network, config:debug > > # > > # Base set of configure options every build needs. > > # > > -base = --target=@ARCH@-rtems@RTEMS_VERSION@ > > - --enable-rtemsbsp=@BSP@ > > - --prefix=@PREFIX@ > > +base = --prefix=@PREFIX@ > > + --top=@RTEMS@ > > + --rtems-config=config-@ARCH@-@BSP@-@BUILD@.ini > > # > > # Tests. > > # > > -tests = --enable-tests > > +tests = BUILD_TESTS=True > > # > > # The options for each varations. > > # > > -debug = --enable-rtems-debug > > -no-debug = --disable-rtems-debug > > -profiling = --enable-profiling > > -no-profiling = --disable-profiling > > -smp = --enable-smp > > -no-smp = --disable-smp > > -posix = --enable-posix > > -no-posix = --disable-posix > > -network = --enable-networking > > -no-network = --disable-networking > > +debug = RTEMS_DEBUG=True > > +no-debug = RTEMS_DEBUG=False > > +profiling = RTEMS_PROFILING=True > > +no-profiling = RTEMS_PROFILING=False > > +smp = RTEMS_SMP=True > > +no-smp = RTEMS_SMP=False > > +posix = RTEMS_POSIX_API=True > > +no-posix = RTEMS_POSIX_API=False > > +network = RTEMS_NETWORKING=True > > +no-network = RTEMS_NETWORKING=False > > diff --git a/tester/rt/check.py b/tester/rt/check.py > > index 2a38d99..95fa47e 100755 > > --- a/tester/rt/check.py > > +++ b/tester/rt/check.py > > @@ -906,7 +906,9 @@ class build_jobs: > > remove += [b for b in self.builds if e in b.split('-')] > > self.builds = [b for b in self.builds if b not in remove] > > self.build_set = { } > > - exclude_options = ' ' + config.exclude_options(self.arch, > self.bsp) > > + exclude_options = config.exclude_options(self.arch, self.bsp) > > + if exclude_options != '': > > + exclude_options = ' ' + exclude_options > > for build in self.builds: > > self.build_set[build] = config.build_options(build) + > exclude_options > > > > @@ -938,9 +940,7 @@ class builder: > > 'BSP' : '.*libbsp/.*', > > 'LibCPU' : '.*libcpu/.*', > > 'Shared' : '.*shared/.*' }) > > - if not path.exists(path.join(rtems, 'configure')) or \ > > - not path.exists(path.join(rtems, 'Makefile.in')) or \ > > - not path.exists(path.join(rtems, 'cpukit')): > > + if not path.exists(path.join(rtems, 'waf')): > > raise error.general('RTEMS source path does not look like > RTEMS') > > > > def _bsps(self, arch): > > @@ -952,15 +952,30 @@ class builder: > > job_index = 1 > > for job in jobs: > > tag = '%*d/%d' % (max_job_size, job_index, len(jobs)) > > + commands = self._commands(job, build_job_count) > > + self._create_config(job, commands) > > build_jobs += [arch_bsp_builder(self.results, > > job, > > - self._commands(job, > build_job_count), > > + commands, > > self.build_dir, > > tag)] > > job_index += 1 > > set_max_build_label(build_jobs) > > return build_jobs > > > > + def _create_config(self, job, commands): > > + filename = 'config-%s-%s-%s.ini' % (job.arch, job.bsp, > job.build) > > + cfg_file = open(path.join(self.rtems, filename),'w+') > > + cfg_file.write('[%s/%s]' + os.linsep() % (job.arch, job.bsp)) > > + new_cfg_cmds = [] > > + for option in commands['configure'].split(): > > + if 'waf' in option or '--' in option or 'configure' in > option: > > + new_cfg_cmds += [option] > > + else: > > + cfg_file.write(option + os.linesep()) > > + commands['configure'] = ' '.join(new_cfg_cmds) > > + cfg_file.close() > > + > > def _commands(self, build, build_jobs): > > commands = { 'dry-run' : self.options['dry-run'], > > 'no-clean' : self.options['no-clean'], > > @@ -968,16 +983,18 @@ class builder: > > 'build' : None } > > cmds = build.build_config.split() > > cmds += self.config.bspopts(build.arch, build.bsp) > > - cmd = [path.join(self.rtems, 'configure')] > > + cmd = [path.join(self.rtems, 'waf') + ' configure'] > > for c in cmds: > > c = c.replace('@PREFIX@', self.prefix) > > - c = c.replace('@RTEMS_VERSION@', str(self.rtems_version)) > > c = c.replace('@ARCH@', build.arch) > > c = c.replace('@BSP@', build.bsp) > > + c = c.replace('@RTEMS@', self.rtems) > > + c = c.replace('@BUILD@', build.build) > > cmd += [c] > > commands['configure'] = ' '.join(cmd) > > - cmd = 'make -j %s' % (build_jobs) > > - commands['build'] = cmd > > + commands['build'] = path.join(self.rtems, 'waf') > > + commands['build'] += ' --top %s' % (self.rtems) > > + commands['build'] += ' -j %s' % (build_jobs) > > return commands > > > > def _update_file_counts(self, counts): > > -- > > 1.8.3.1 > > > > _______________________________________________ > > devel mailing list > > devel@rtems.org > > http://lists.rtems.org/mailman/listinfo/devel > > _______________________________________________ > devel mailing list > devel@rtems.org > http://lists.rtems.org/mailman/listinfo/devel
_______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel