Hi Alex, I prefer Python’s argparse and prefer we move the other way. The options handling originally came from the RSB and has lots of issues. I regret it.
Sorry about this. Chris > On 21 Sep 2021, at 2:08 am, Alex White <alex.wh...@oarcorp.com> wrote: > > This changes the object holding the command line arguments from an > argparse.Namespace to an rtemstoolkit.options.command_line. This matches > the type expected by rtemstoolkit.mailer.mail.__init__ and is the type > used in tester/rt/test.py and run.py. > --- > tester/rt/check.py | 151 +++++++++++++++++++++++++-------------------- > 1 file changed, 84 insertions(+), 67 deletions(-) > > diff --git a/tester/rt/check.py b/tester/rt/check.py > index c01c25d..982b65e 100755 > --- a/tester/rt/check.py > +++ b/tester/rt/check.py > @@ -54,6 +54,8 @@ from rtemstoolkit import rtems > from rtemstoolkit import textbox > from rtemstoolkit import version > > +import tester.rt.options > + > # > # Group loggin entries together. > # > @@ -1153,55 +1155,40 @@ def run(args): > description += 'can build based on tier, architecture, or BSP. You > can control ' > description += 'the profile of build with various build configuration > settings.' > > - argsp = argparse.ArgumentParser(prog = 'rtems-bsp-builder', > - description = description) > - argsp.add_argument('--prefix', help = 'Prefix to build the BSP.', > - type = str) > - argsp.add_argument('--rtems-tools', help = 'The RTEMS tools > directory.', > - type = str) > - 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('--config-report', help = 'Report the > configuration.', > - type = str, default = None, > - choices = ['all', 'profiles', 'builds', 'archs']) > - argsp.add_argument('--warnings-report', help = 'Report the warnings > to a file.', > - type = str, default = None) > - argsp.add_argument('--failures-report', help = 'Report the failures > to a file.', > - type = str, default = None) > - 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 > (profile,profile,..).', > - type = str, default = 'tier-1') > - argsp.add_argument('--arch', help = 'Build the architectures > (arch,arch,..).', > - type = str) > - argsp.add_argument('--bsp', help = 'Build the BSPs > (arch/bsp,arch/bsp,..).', > - type = str) > - argsp.add_argument('--build', help = 'Build name to build (see > --config-report).', > - type = str, default='all') > - argsp.add_argument('--jobs', help = 'Number of jobs to run.', > - type = str, default = '1/%d' % (host.cpus())) > - argsp.add_argument('--dry-run', help = 'Do not run the actual > builds.', > - action = 'store_true') > - mailer.add_arguments(argsp) > - > - opts = argsp.parse_args(args[1:]) > + optargs = { > + '--prefix': 'Prefix to build the BSP.', > + '--rtems-tools': 'The RTEMS tools directory.', > + '--rtems': 'The RTEMS source tree.', > + '--build-path': 'Path to build in.', > + '--log': 'Log file.', > + '--config-report': 'Report the configuration.', > + '--warnings-report': 'Report the warnings to a file.', > + '--failures-report': 'Report the failures to a file.', > + '--stop-on-error': 'Stop on an error.', > + '--no-clean': 'Do not clean the build output.', > + '--profiles': 'Build the listed profiles (profile,profile,..).', > + '--arch': 'Build the architectures (arch,arch,..).', > + '--bsp': 'Build the BSPs (arch/bsp,arch/bsp,..).', > + '--build': 'Build name to build (see --config-report).', > + '--jobs': 'Number of jobs to run.', > + '--dry-run': 'Do not run the actual builds.' > + } > + mailer.append_options(optargs) > + opts = tester.rt.options.load(args, optargs = optargs) > + > mail = None > - if opts.mail: > + if opts.find_arg('--mail'): > mail = mailer.mail(opts) > # Request these now to generate any errors. > from_addr = mail.from_address() > smtp_host = mail.smtp_host() > - if 'mail_to' in opts and opts.mail_to is not None: > - to_addr = opts.mail_to > + to_addr = opts.find_arg('--mail-to') > + if to_addr: > + to_addr = to_addr[1] > else: > to_addr = 'bu...@rtems.org' > - if opts.log is not None: > - logf = opts.log > + if opts.find_arg('--log') is not None: > + logf = opts.find_arg('--log')[1] > log.default = log.log([logf]) > log.notice(title()) > log.output(command_line()) > @@ -1211,48 +1198,78 @@ def run(args): > smtp_host)) > > config = rtems.configuration() > - config.load(config_file, opts.build) > + build = opts.find_arg('--build') > + if build is not None: > + build = build[1] > + config.load(config_file, build) > > - if opts.config_report: > - log.notice('Configuration Report: %s' % (opts.config_report)) > + config_report = opts.find_arg('--config-report') > + if config_report is not None: > + log.notice('Configuration Report: %s' % (config_report[1])) > c_profiles = False > c_builds = False > c_archs = False > - if opts.config_report == 'all': > + if config_report[1] == 'all': > c_profiles = True > c_builds = True > c_archs = True > - elif opts.config_report == 'profiles': > + elif config_report[1] == 'profiles': > c_profiles = True > - elif opts.config_report == 'builds': > + elif config_report[1] == 'builds': > c_builds = True > - elif opts.config_report == 'archs': > + elif config_report[1] == 'archs': > c_archs = True > log.notice(config.report(c_profiles, c_builds, c_archs)) > sys.exit(0) > > - if opts.rtems is None: > + rtems_opt = opts.find_arg('--rtems') > + if rtems_opt is None: > raise error.general('No RTEMS source provided on the command > line') > - if opts.prefix is not None: > - prefix = path.shell(opts.prefix) > - if opts.rtems_tools is not None: > - tools = path.shell(opts.rtems_tools) > - if opts.build_path is not None: > - build_dir = path.shell(opts.build_path) > - > - options = { 'stop-on-error' : opts.stop_on_error, > - 'no-clean' : opts.no_clean, > - 'dry-run' : opts.dry_run, > - 'jobs' : opts.jobs, > - 'warnings-report' : opts.warnings_report, > - 'failures-report' : opts.failures_report } > + prefix_opt = opts.find_arg('--prefix') > + if prefix_opt is not None: > + prefix = path.shell(prefix_opt[1]) > + rtems_tools = opts.find_arg('--rtems-tools') > + if rtems_tools is not None: > + tools = path.shell(rtems_tools[1]) > + build_path = opts.find_arg('--build-path') > + if build_path is not None: > + build_dir = path.shell(build_path[1]) > + > + jobs = opts.find_arg('--jobs') > + if jobs is not None: > + jobs = jobs[1] > + else: > + jobs = '1/%d' % (host.cpus()) > + warnings_report = opts.find_arg('--warnings-report') > + if warnings_report is not None: > + warnings_report = warnings_report[1] > + failures_report = opts.find_arg('--failures-report') > + if failures_report is not None: > + failures_report = failures_report[1] > + options = { 'stop-on-error' : opts.find_arg('--stop-on-error'), > + 'no-clean' : opts.no_clean(), > + 'dry-run' : opts.dry_run(), > + 'jobs' : jobs, > + 'warnings-report' : warnings_report, > + 'failures-report' : failures_report } > > b = builder(config, rtems_version(), prefix, tools, > - path.shell(opts.rtems), build_dir, options) > + path.shell(rtems_opt[1]), build_dir, options) > > - profiles = comma_split(opts.profiles) > - archs = comma_split(opts.arch) > - bsps = comma_split(opts.bsp) > + profiles_opt = opts.find_arg('--profiles') > + if profiles_opt is not None: > + profiles_opt = profiles_opt[1] > + else: > + profiles_opt = 'tier-1' > + arch_opt = opts.find_arg('--arch') > + if arch_opt is not None: > + arch_opt = arch_opt[1] > + bsp_opt = opts.find_arg('--bsp') > + if bsp_opt is not None: > + bsp_opt = bsp_opt[1] > + profiles = comma_split(profiles_opt) > + archs = comma_split(arch_opt) > + bsps = comma_split(bsp_opt) > > # > # The default is build a profile. > -- > 2.27.0 > > _______________________________________________ > 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