diff options
| author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2025-06-25 14:39:30 +0100 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2025-06-26 11:02:34 +0100 |
| commit | 6e32bd92efacad4248c3f2d97e9630befc5b3816 (patch) | |
| tree | 8c6ab501503f5a5cfadbc8da9e1918e4dc0bd54e /meta/lib | |
| parent | ba290e7ec884209239baeb52f7efc9ca7ccd717c (diff) | |
| download | poky-6e32bd92efacad4248c3f2d97e9630befc5b3816.tar.gz | |
oeqa/sstatetests: Fix NATIVELSBSTRING handling
The NATIVELSBSTRING variable changes value once a BuildStarted event occurs in a build
directory. This meant running some of the tests directly in a fresh build directory
would fail but they'd pass when run as a group of tests. This is clearly suboptimal.
Move the NATIVELSBSTRING handling to a location where the value is consistent
and a comment about the interesting behaviour of the variable so it hopefully doesn't
catch out others in future.
(From OE-Core rev: e1c46fdb44fed18909d9ff4b43b4e445c5a22d33)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/lib')
| -rw-r--r-- | meta/lib/oeqa/selftest/cases/sstatetests.py | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/meta/lib/oeqa/selftest/cases/sstatetests.py b/meta/lib/oeqa/selftest/cases/sstatetests.py index 487995acc3..7231115a6b 100644 --- a/meta/lib/oeqa/selftest/cases/sstatetests.py +++ b/meta/lib/oeqa/selftest/cases/sstatetests.py | |||
| @@ -27,17 +27,15 @@ class SStateBase(OESelftestTestCase): | |||
| 27 | def setUpLocal(self): | 27 | def setUpLocal(self): |
| 28 | super(SStateBase, self).setUpLocal() | 28 | super(SStateBase, self).setUpLocal() |
| 29 | self.temp_sstate_location = None | 29 | self.temp_sstate_location = None |
| 30 | needed_vars = ['SSTATE_DIR', 'NATIVELSBSTRING', 'TCLIBC', 'TUNE_ARCH', | 30 | needed_vars = ['SSTATE_DIR', 'TCLIBC', 'TUNE_ARCH', |
| 31 | 'TOPDIR', 'TARGET_VENDOR', 'TARGET_OS'] | 31 | 'TOPDIR', 'TARGET_VENDOR', 'TARGET_OS'] |
| 32 | bb_vars = get_bb_vars(needed_vars) | 32 | bb_vars = get_bb_vars(needed_vars) |
| 33 | self.sstate_path = bb_vars['SSTATE_DIR'] | 33 | self.sstate_path = bb_vars['SSTATE_DIR'] |
| 34 | self.hostdistro = bb_vars['NATIVELSBSTRING'] | ||
| 35 | self.tclibc = bb_vars['TCLIBC'] | 34 | self.tclibc = bb_vars['TCLIBC'] |
| 36 | self.tune_arch = bb_vars['TUNE_ARCH'] | 35 | self.tune_arch = bb_vars['TUNE_ARCH'] |
| 37 | self.topdir = bb_vars['TOPDIR'] | 36 | self.topdir = bb_vars['TOPDIR'] |
| 38 | self.target_vendor = bb_vars['TARGET_VENDOR'] | 37 | self.target_vendor = bb_vars['TARGET_VENDOR'] |
| 39 | self.target_os = bb_vars['TARGET_OS'] | 38 | self.target_os = bb_vars['TARGET_OS'] |
| 40 | self.distro_specific_sstate = os.path.join(self.sstate_path, self.hostdistro) | ||
| 41 | 39 | ||
| 42 | def track_for_cleanup(self, path): | 40 | def track_for_cleanup(self, path): |
| 43 | if not keep_temp_files: | 41 | if not keep_temp_files: |
| @@ -52,10 +50,7 @@ class SStateBase(OESelftestTestCase): | |||
| 52 | config_temp_sstate = "SSTATE_DIR = \"%s\"" % temp_sstate_path | 50 | config_temp_sstate = "SSTATE_DIR = \"%s\"" % temp_sstate_path |
| 53 | self.append_config(config_temp_sstate) | 51 | self.append_config(config_temp_sstate) |
| 54 | self.track_for_cleanup(temp_sstate_path) | 52 | self.track_for_cleanup(temp_sstate_path) |
| 55 | bb_vars = get_bb_vars(['SSTATE_DIR', 'NATIVELSBSTRING']) | 53 | self.sstate_path = get_bb_var('SSTATE_DIR') |
| 56 | self.sstate_path = bb_vars['SSTATE_DIR'] | ||
| 57 | self.hostdistro = bb_vars['NATIVELSBSTRING'] | ||
| 58 | self.distro_specific_sstate = os.path.join(self.sstate_path, self.hostdistro) | ||
| 59 | 54 | ||
| 60 | if add_local_mirrors: | 55 | if add_local_mirrors: |
| 61 | config_set_sstate_if_not_set = 'SSTATE_MIRRORS ?= ""' | 56 | config_set_sstate_if_not_set = 'SSTATE_MIRRORS ?= ""' |
| @@ -65,8 +60,16 @@ class SStateBase(OESelftestTestCase): | |||
| 65 | config_sstate_mirror = "SSTATE_MIRRORS += \"file://.* file:///%s/PATH\"" % local_mirror | 60 | config_sstate_mirror = "SSTATE_MIRRORS += \"file://.* file:///%s/PATH\"" % local_mirror |
| 66 | self.append_config(config_sstate_mirror) | 61 | self.append_config(config_sstate_mirror) |
| 67 | 62 | ||
| 63 | def set_hostdistro(self): | ||
| 64 | # This needs to be read after a BuildStarted event in case it gets changed by event | ||
| 65 | # handling in uninative.bbclass | ||
| 66 | self.hostdistro = get_bb_var('NATIVELSBSTRING') | ||
| 67 | self.distro_specific_sstate = os.path.join(self.sstate_path, self.hostdistro) | ||
| 68 | |||
| 68 | # Returns a list containing sstate files | 69 | # Returns a list containing sstate files |
| 69 | def search_sstate(self, filename_regex, distro_specific=True, distro_nonspecific=True): | 70 | def search_sstate(self, filename_regex, distro_specific=True, distro_nonspecific=True): |
| 71 | self.set_hostdistro() | ||
| 72 | |||
| 70 | result = [] | 73 | result = [] |
| 71 | for root, dirs, files in os.walk(self.sstate_path): | 74 | for root, dirs, files in os.walk(self.sstate_path): |
| 72 | if distro_specific and re.search(r"%s/%s/[a-z0-9]{2}/[a-z0-9]{2}$" % (self.sstate_path, self.hostdistro), root): | 75 | if distro_specific and re.search(r"%s/%s/[a-z0-9]{2}/[a-z0-9]{2}$" % (self.sstate_path, self.hostdistro), root): |
| @@ -153,6 +156,8 @@ class SStateBase(OESelftestTestCase): | |||
| 153 | 156 | ||
| 154 | bitbake(['-ccleansstate'] + targets) | 157 | bitbake(['-ccleansstate'] + targets) |
| 155 | 158 | ||
| 159 | self.set_hostdistro() | ||
| 160 | |||
| 156 | bitbake(targets) | 161 | bitbake(targets) |
| 157 | results = self.search_sstate('|'.join(map(str, [s + r'.*?\.tar.zst$' for s in targets])), distro_specific=False, distro_nonspecific=True) | 162 | results = self.search_sstate('|'.join(map(str, [s + r'.*?\.tar.zst$' for s in targets])), distro_specific=False, distro_nonspecific=True) |
| 158 | filtered_results = [] | 163 | filtered_results = [] |
