[rtems-tools] tester: Update jobs configuration

Ryan Long ryan.long at oarcorp.com
Wed Oct 20 20:05:57 UTC 2021


Allow for default_jobs and max_jobs to be specified in the BSP's
configuration file.
---
 rtemstoolkit/options.py                            | 45 +++++++++++++---------
 tester/rtems/testing/bsps/beagleboardxm.ini        |  2 +-
 tester/rtems/testing/bsps/beagleboneblack.ini      |  2 +-
 tester/rtems/testing/bsps/imx7.ini                 |  2 +-
 tester/rtems/testing/bsps/mcf5235.ini              |  2 +-
 tester/rtems/testing/bsps/mvme2307.ini             |  2 +-
 tester/rtems/testing/bsps/pc.ini                   |  2 +-
 tester/rtems/testing/bsps/qoriq_e500.ini           |  2 +-
 tester/rtems/testing/bsps/qoriq_e6500_32.ini       |  2 +-
 tester/rtems/testing/bsps/qoriq_e6500_64.ini       |  2 +-
 tester/rtems/testing/bsps/raspberrypi2.ini         |  2 +-
 tester/rtems/testing/bsps/xilinx_versal_vck190.ini |  2 +-
 .../rtems/testing/bsps/xilinx_zynq_a9_qemu_smp.ini |  2 +-
 tester/rtems/testing/bsps/xilinx_zynq_zc706.ini    |  2 +-
 tester/rtems/testing/bsps/xilinx_zynq_zedboard.ini |  2 +-
 .../testing/bsps/xilinx_zynqmp_ilp32_zu3eg.ini     |  2 +-
 .../testing/bsps/xilinx_zynqmp_lp64_zu3eg.ini      |  2 +-
 tester/rtems/testing/defaults.mc                   |  2 +
 18 files changed, 45 insertions(+), 34 deletions(-)

diff --git a/rtemstoolkit/options.py b/rtemstoolkit/options.py
index 5ebe3bc..4b7a93a 100644
--- a/rtemstoolkit/options.py
+++ b/rtemstoolkit/options.py
@@ -102,7 +102,7 @@ class command_line(object):
             '--no-clean':                   'Do not clean up the build tree',
             '--always-clean':               'Always clean the build tree, even with an error',
             '--keep-going':                 'Do not stop on an error.',
-            '--jobs=[0..n,none,half,full]': 'Run with specified number of jobs, default: num CPUs.',
+            '--jobs=[0..n,none,half,full]': 'Run with specified number of jobs (default: defined in configuration file)',
             '--macros file[,file]':         'Macro format files to load after the defaults',
             '--log file':                   'Log file where all build output is written to',
         }
@@ -327,6 +327,11 @@ class command_line(object):
         # Handle the jobs for make
         if '_ncpus' not in self.defaults:
             raise error.general('host number of CPUs not set')
+        if self.defaults['default_jobs'] != '0':
+            print(
+                'default_jobs is %d and the default is %d' %
+                (self.defaults['default_jobs'], 0)
+            )
         ncpus = self.jobs(self.defaults['_ncpus'])
         if ncpus > 1:
             self.defaults['_smp_mflags'] = '-j %d' % (ncpus)
@@ -427,28 +432,25 @@ class command_line(object):
                     um += [m]
         return um if len(um) else None
 
-    def jobs(self, cpus):
+    def jobs(self, num_cpus):
         try:
-            cpus = int(cpus)
+            cpus = int(num_cpus)
         except:
             raise error.general('invalid host cpu value')
         opt_jobs = self.opts['jobs']
         if opt_jobs == 'default':
-            _jobs = self.defaults.get_value('jobs')
-            if _jobs is not None:
-                if _jobs == 'none':
-                    cpus = 0
-                elif _jobs == 'max':
-                    pass
-                elif _jobs == 'half':
-                    cpus = cpus / 2
-                else:
-                    try:
-                        cpus = int(_jobs)
-                    except:
-                        raise error.general('invalid %%{jobs} value: %s' % (_jobs))
+            _jobs = self.defaults.get_value('default_jobs')
+            if _jobs == 'none':
+                cpus = 0
+            elif _jobs == 'max':
+                pass
+            elif _jobs == 'half':
+                cpus = cpus / 2
             else:
-                opt_jobs = 'max'
+                try:
+                    cpus = int(_jobs)
+                except:
+                    raise error.general('invalid %%{jobs} value: %s' % (_jobs))
         if opt_jobs != 'default':
             if opt_jobs == 'none':
                 cpus = 0
@@ -474,7 +476,14 @@ class command_line(object):
                     if not ok:
                         raise error.internal('bad jobs option: %s' % (opt_jobs))
         if cpus <= 0:
-            cpu = 1
+            cpus = 1
+        max_jobs = int(self.defaults.get_value('max_jobs'))
+        if max_jobs == 0:
+            max_jobs = cpus
+        if cpus > max_jobs:
+            raise error.internal(
+                'exceeded maximum number of jobs: %d > %d' % (cpus, max_jobs)
+            )
         return cpus
 
     def params(self):
diff --git a/tester/rtems/testing/bsps/beagleboardxm.ini b/tester/rtems/testing/bsps/beagleboardxm.ini
index e8a79a6..72e6e8f 100644
--- a/tester/rtems/testing/bsps/beagleboardxm.ini
+++ b/tester/rtems/testing/bsps/beagleboardxm.ini
@@ -36,7 +36,7 @@
 [beagleboardxm]
 bsp        = beagleboardxm
 arch       = arm
-jobs       = 1
+max_jobs   = 1
 tester     = %{_rtscripts}/gdb.cfg
 gdb_script = bsp_gdb_script
 requires   = bsp_tty_dev, bsp_gdb_script
diff --git a/tester/rtems/testing/bsps/beagleboneblack.ini b/tester/rtems/testing/bsps/beagleboneblack.ini
index 4bf850f..346d859 100644
--- a/tester/rtems/testing/bsps/beagleboneblack.ini
+++ b/tester/rtems/testing/bsps/beagleboneblack.ini
@@ -35,7 +35,7 @@
 [beagleboneblack]
 bsp                = beagleboneblack
 arch               = arm
-jobs               = 1
+max_jobs           = 1
 tester             = %{_rtscripts}/tftp.cfg
 test_restarts      = 3
 target_reset_regex = ^No ethernet found.*|BOOTP broadcast 6.*|^ERROR: can.t get kernel image
diff --git a/tester/rtems/testing/bsps/imx7.ini b/tester/rtems/testing/bsps/imx7.ini
index 0a56ba8..28dd77f 100644
--- a/tester/rtems/testing/bsps/imx7.ini
+++ b/tester/rtems/testing/bsps/imx7.ini
@@ -35,7 +35,7 @@
 [imx7]
 bsp                = imx7
 arch               = arm
-jobs               = 1
+max_jobs           = 1
 tester             = %{_rtscripts}/tftp.cfg
 test_restarts      = 3
 target_start_regex = Hit any key to stop autoboot:
diff --git a/tester/rtems/testing/bsps/mcf5235.ini b/tester/rtems/testing/bsps/mcf5235.ini
index 00f6a26..5023275 100644
--- a/tester/rtems/testing/bsps/mcf5235.ini
+++ b/tester/rtems/testing/bsps/mcf5235.ini
@@ -34,6 +34,6 @@
 [mcf5235]
 bsp      = mcf5235
 arch     = m68k
-jobs     = 1
+max_jobs = 1
 tester   = %{_rtscripts}/gdb.cfg
 requires = bsp_tty_dev, gdb_script
diff --git a/tester/rtems/testing/bsps/mvme2307.ini b/tester/rtems/testing/bsps/mvme2307.ini
index b142aa9..bb7e15f 100644
--- a/tester/rtems/testing/bsps/mvme2307.ini
+++ b/tester/rtems/testing/bsps/mvme2307.ini
@@ -52,7 +52,7 @@
 [mvme2307]
 bsp                = mvme2307
 arch               = powerpc
-jobs               = 1
+max_jobs           = 1
 test_restarts      = 3
 tester             = %{_rtscripts}/wait.cfg
 target_start_regex = ^Copyright Motorola Inc.*, All Rights Reserved
diff --git a/tester/rtems/testing/bsps/pc.ini b/tester/rtems/testing/bsps/pc.ini
index 93a5dae..5f81336 100644
--- a/tester/rtems/testing/bsps/pc.ini
+++ b/tester/rtems/testing/bsps/pc.ini
@@ -31,7 +31,7 @@
 [pc]
 bsp           = pc686
 arch          = i386
-jobs          = 1
+max_jobs      = 1
 tester        = %{_rtscripts}/tftp.cfg
 test_restarts = 3
 requires      = bsp_tty_dev, target_on_command, target_off_command, target_reset_command
diff --git a/tester/rtems/testing/bsps/qoriq_e500.ini b/tester/rtems/testing/bsps/qoriq_e500.ini
index 322069b..1756bcd 100644
--- a/tester/rtems/testing/bsps/qoriq_e500.ini
+++ b/tester/rtems/testing/bsps/qoriq_e500.ini
@@ -35,7 +35,7 @@
 [qoriq_e500]
 bsp                = qoriq_e500
 arch               = powerpc
-jobs               = 1
+max_jobs           = 1
 tester             = %{_rtscripts}/tftp.cfg
 test_restarts      = 3
 target_start_regex = U-Boot
diff --git a/tester/rtems/testing/bsps/qoriq_e6500_32.ini b/tester/rtems/testing/bsps/qoriq_e6500_32.ini
index 26ee3ae..daf564e 100644
--- a/tester/rtems/testing/bsps/qoriq_e6500_32.ini
+++ b/tester/rtems/testing/bsps/qoriq_e6500_32.ini
@@ -36,7 +36,7 @@
 [qoriq_e6500_32]
 bsp                = qoriq_e6500_32
 arch               = powerpc
-jobs               = 1
+max_jobs           = 1
 tester             = %{_rtscripts}/tftp.cfg
 test_restarts      = 3
 target_start_regex = U-Boot
diff --git a/tester/rtems/testing/bsps/qoriq_e6500_64.ini b/tester/rtems/testing/bsps/qoriq_e6500_64.ini
index c9b6ab7..e507032 100644
--- a/tester/rtems/testing/bsps/qoriq_e6500_64.ini
+++ b/tester/rtems/testing/bsps/qoriq_e6500_64.ini
@@ -36,7 +36,7 @@
 [qoriq_e6500_64]
 bsp                = qoriq_e6500_64
 arch               = powerpc
-jobs               = 1
+max_jobs           = 1
 tester             = %{_rtscripts}/tftp.cfg
 test_restarts      = 3
 target_start_regex = U-Boot
diff --git a/tester/rtems/testing/bsps/raspberrypi2.ini b/tester/rtems/testing/bsps/raspberrypi2.ini
index e8043ac..f7f3c8c 100644
--- a/tester/rtems/testing/bsps/raspberrypi2.ini
+++ b/tester/rtems/testing/bsps/raspberrypi2.ini
@@ -35,7 +35,7 @@
 [raspberrypi2]
 bsp                = raspberrypi2
 arch               = arm
-jobs               = 1
+max_jobs           = 1
 tester             = %{_rtscripts}/tftp.cfg
 test_restarts      = 3
 target_reset_regex = BOOTP broadcast 6.*|^ERROR: can.t get kernel image
diff --git a/tester/rtems/testing/bsps/xilinx_versal_vck190.ini b/tester/rtems/testing/bsps/xilinx_versal_vck190.ini
index 3bdd6be..a7695a7 100644
--- a/tester/rtems/testing/bsps/xilinx_versal_vck190.ini
+++ b/tester/rtems/testing/bsps/xilinx_versal_vck190.ini
@@ -36,7 +36,7 @@
 bsp                = xilinx_versal_vck190
 arch               = aarch64
 tester             = %{_rtscripts}/tftp.cfg
-jobs               = 1
+max_jobs           = 1
 test_restarts      = 3
 target_reset_regex = ^No ethernet found.*|^BOOTP broadcast 6.*|^.+complete\.+ TIMEOUT.*
 target_start_regex = .* PSCI Power Domain Map:$|^U-Boot .*
diff --git a/tester/rtems/testing/bsps/xilinx_zynq_a9_qemu_smp.ini b/tester/rtems/testing/bsps/xilinx_zynq_a9_qemu_smp.ini
index 4366ffc..b6b39b6 100644
--- a/tester/rtems/testing/bsps/xilinx_zynq_a9_qemu_smp.ini
+++ b/tester/rtems/testing/bsps/xilinx_zynq_a9_qemu_smp.ini
@@ -34,6 +34,6 @@
 [xilinx_zynq_a9_qemu_smp]
 bsp           = xilinx_zynq_a9_qemu
 arch          = arm
-jobs          = half
+default_jobs  = half
 tester        = %{_rtscripts}/qemu.cfg
 bsp_qemu_opts = %{qemu_opts_base} %{qemu_opts_no_net} %{qemu_opts_serial} -M xilinx-zynq-a9 -m 256M -smp cpus=2
diff --git a/tester/rtems/testing/bsps/xilinx_zynq_zc706.ini b/tester/rtems/testing/bsps/xilinx_zynq_zc706.ini
index e543022..844776d 100644
--- a/tester/rtems/testing/bsps/xilinx_zynq_zc706.ini
+++ b/tester/rtems/testing/bsps/xilinx_zynq_zc706.ini
@@ -35,7 +35,7 @@
 [xilinx_zynq_zc706]
 bsp        = xilinx_zynq_zc706
 arch       = arm
-jobs       = 1
+max_jobs   = 1
 tester     = %{_rtscripts}/gdb.cfg
 gdb_script = bsp_gdb_script
 requires   = bsp_tty_dev, bsp_gdb_script
diff --git a/tester/rtems/testing/bsps/xilinx_zynq_zedboard.ini b/tester/rtems/testing/bsps/xilinx_zynq_zedboard.ini
index 14b4d94..5c2451b 100644
--- a/tester/rtems/testing/bsps/xilinx_zynq_zedboard.ini
+++ b/tester/rtems/testing/bsps/xilinx_zynq_zedboard.ini
@@ -36,7 +36,7 @@
 bsp                = xilinx_zynq_zedboard
 arch               = arm
 tester             = %{_rtscripts}/tftp.cfg
-jobs               = 1
+max_jobs           = 1
 test_restarts      = 3
 target_reset_regex = ^No ethernet found.*|^BOOTP broadcast 6.*|^.+complete\.+ TIMEOUT.*
 target_start_regex = ^U-Boot SPL .*
diff --git a/tester/rtems/testing/bsps/xilinx_zynqmp_ilp32_zu3eg.ini b/tester/rtems/testing/bsps/xilinx_zynqmp_ilp32_zu3eg.ini
index 8c1c839..eefe173 100644
--- a/tester/rtems/testing/bsps/xilinx_zynqmp_ilp32_zu3eg.ini
+++ b/tester/rtems/testing/bsps/xilinx_zynqmp_ilp32_zu3eg.ini
@@ -35,7 +35,7 @@
 bsp                = xilinx_zynqmp_ilp32_zu3eg
 arch               = aarch64
 tester             = %{_rtscripts}/tftp.cfg
-jobs               = 1
+max_jobs           = 1
 test_restarts      = 3
 target_reset_regex = ^No ethernet found.*|^.*: No link\..*
 target_start_regex = ^.*Xilinx Zynq MP First Stage Boot Loader.*
diff --git a/tester/rtems/testing/bsps/xilinx_zynqmp_lp64_zu3eg.ini b/tester/rtems/testing/bsps/xilinx_zynqmp_lp64_zu3eg.ini
index 663e5de..1fa35e5 100644
--- a/tester/rtems/testing/bsps/xilinx_zynqmp_lp64_zu3eg.ini
+++ b/tester/rtems/testing/bsps/xilinx_zynqmp_lp64_zu3eg.ini
@@ -35,7 +35,7 @@
 bsp                = xilinx_zynqmp_lp64_zu3eg
 arch               = aarch64
 tester             = %{_rtscripts}/tftp.cfg
-jobs               = 1
+max_jobs           = 1
 test_restarts      = 3
 target_reset_regex = ^No ethernet found.*|^.*: No link\..*
 target_start_regex = ^.*Xilinx Zynq MP First Stage Boot Loader.*
diff --git a/tester/rtems/testing/defaults.mc b/tester/rtems/testing/defaults.mc
index d3e16a9..830b377 100644
--- a/tester/rtems/testing/defaults.mc
+++ b/tester/rtems/testing/defaults.mc
@@ -116,6 +116,8 @@ __xz:                exe,     required, '/usr/bin/xz'
 
 # Default settings
 _target:             none,    none,     '%{nil}'
+max_jobs:            none,    none,     '0'
+default_jobs:        none,    none,     '0'
 
 # Paths
 _rtbase:             none,    none,     '%{_rtdir}'
-- 
1.8.3.1



More information about the devel mailing list