summaryrefslogtreecommitdiffstats
path: root/meta/lib/oeqa/selftest/cases/reproducible.py
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2023-09-21 16:53:27 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2023-09-22 07:45:17 +0100
commitfbaa7da33b497088aa352f6cb8dbc02327310cd6 (patch)
tree604ae6988f8edc545fde44e753af84d15ffa0903 /meta/lib/oeqa/selftest/cases/reproducible.py
parent0eec01dee1b12fab24478a05c04174d5eb33eb6f (diff)
downloadpoky-fbaa7da33b497088aa352f6cb8dbc02327310cd6.tar.gz
oeqa/selftest/reproducible: Avoid oe-selftest startup delays
Currently the bb_get_var calls trigger multiple "bitbake -e" executions which slow the start of oe-selftest for any test. Rework the code to avoid these delays. (From OE-Core rev: c9ea3570f5dbdaf8c61e445ae9de759a0b71e21f) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/lib/oeqa/selftest/cases/reproducible.py')
-rw-r--r--meta/lib/oeqa/selftest/cases/reproducible.py27
1 files changed, 15 insertions, 12 deletions
diff --git a/meta/lib/oeqa/selftest/cases/reproducible.py b/meta/lib/oeqa/selftest/cases/reproducible.py
index 4c6ed4e4a5..84c6c3a05f 100644
--- a/meta/lib/oeqa/selftest/cases/reproducible.py
+++ b/meta/lib/oeqa/selftest/cases/reproducible.py
@@ -128,23 +128,17 @@ class DiffoscopeTests(OESelftestTestCase):
128class ReproducibleTests(OESelftestTestCase): 128class ReproducibleTests(OESelftestTestCase):
129 # Test the reproducibility of whatever is built between sstate_targets and targets 129 # Test the reproducibility of whatever is built between sstate_targets and targets
130 130
131 package_classes = get_bb_var("OEQA_REPRODUCIBLE_TEST_PACKAGE") 131 package_classes = ['deb', 'ipk', 'rpm']
132 if package_classes:
133 package_classes = package_classes.split()
134 else:
135 package_classes = ['deb', 'ipk', 'rpm']
136 132
137 # Maximum report size, in bytes 133 # Maximum report size, in bytes
138 max_report_size = 250 * 1024 * 1024 134 max_report_size = 250 * 1024 * 1024
139 135
140 # targets are the things we want to test the reproducibility of 136 # targets are the things we want to test the reproducibility of
141 targets = get_bb_var("OEQA_REPRODUCIBLE_TEST_TARGET") 137 targets = ['core-image-minimal', 'core-image-sato', 'core-image-full-cmdline', 'core-image-weston', 'world']
142 if targets: 138
143 targets = targets.split()
144 else:
145 targets = ['core-image-minimal', 'core-image-sato', 'core-image-full-cmdline', 'core-image-weston', 'world']
146 # sstate targets are things to pull from sstate to potentially cut build/debugging time 139 # sstate targets are things to pull from sstate to potentially cut build/debugging time
147 sstate_targets = (get_bb_var("OEQA_REPRODUCIBLE_TEST_SSTATE_TARGETS") or "").split() 140 sstate_targets = []
141
148 save_results = False 142 save_results = False
149 if 'OEQA_DEBUGGING_SAVED_OUTPUT' in os.environ: 143 if 'OEQA_DEBUGGING_SAVED_OUTPUT' in os.environ:
150 save_results = os.environ['OEQA_DEBUGGING_SAVED_OUTPUT'] 144 save_results = os.environ['OEQA_DEBUGGING_SAVED_OUTPUT']
@@ -159,11 +153,20 @@ class ReproducibleTests(OESelftestTestCase):
159 153
160 def setUpLocal(self): 154 def setUpLocal(self):
161 super().setUpLocal() 155 super().setUpLocal()
162 needed_vars = ['TOPDIR', 'TARGET_PREFIX', 'BB_NUMBER_THREADS', 'BB_HASHSERVE'] 156 needed_vars = ['TOPDIR', 'TARGET_PREFIX', 'BB_NUMBER_THREADS', 'BB_HASHSERVE', 'OEQA_REPRODUCIBLE_TEST_PACKAGE', 'OEQA_REPRODUCIBLE_TEST_TARGET', 'OEQA_REPRODUCIBLE_TEST_SSTATE_TARGETS']
163 bb_vars = get_bb_vars(needed_vars) 157 bb_vars = get_bb_vars(needed_vars)
164 for v in needed_vars: 158 for v in needed_vars:
165 setattr(self, v.lower(), bb_vars[v]) 159 setattr(self, v.lower(), bb_vars[v])
166 160
161 if bb_vars['OEQA_REPRODUCIBLE_TEST_PACKAGE']:
162 self.package_classes = bb_vars['OEQA_REPRODUCIBLE_TEST_PACKAGE'].split()
163
164 if bb_vars['OEQA_REPRODUCIBLE_TEST_TARGET']:
165 self.targets = bb_vars['OEQA_REPRODUCIBLE_TEST_TARGET'].split()
166
167 if bb_vars['OEQA_REPRODUCIBLE_TEST_SSTATE_TARGETS']:
168 self.sstate_targets = bb_vars['OEQA_REPRODUCIBLE_TEST_SSTATE_TARGETS'].split()
169
167 self.extraresults = {} 170 self.extraresults = {}
168 self.extraresults.setdefault('reproducible.rawlogs', {})['log'] = '' 171 self.extraresults.setdefault('reproducible.rawlogs', {})['log'] = ''
169 self.extraresults.setdefault('reproducible', {}).setdefault('files', {}) 172 self.extraresults.setdefault('reproducible', {}).setdefault('files', {})