Use a fake time during the second build, ensuring the build time is fay different from the first build.
Fixes [YOCTO #13509] Signed-off-by: Mathieu Dubois-Briand <[email protected]> --- meta/lib/oeqa/selftest/cases/reproducible.py | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/meta/lib/oeqa/selftest/cases/reproducible.py b/meta/lib/oeqa/selftest/cases/reproducible.py index 7adeaacd4f53..1a71b9832e34 100644 --- a/meta/lib/oeqa/selftest/cases/reproducible.py +++ b/meta/lib/oeqa/selftest/cases/reproducible.py @@ -229,7 +229,7 @@ class ReproducibleTests(OESelftestTestCase): bb.utils.mkdirhier(os.path.dirname(dest)) shutil.copyfile(source, dest) - def do_test_build(self, name, use_sstate): + def do_test_build(self, name, use_sstate, use_faketime, libfaketime_sysroot): capture_vars = ['DEPLOY_DIR_' + c.upper() for c in self.package_classes] tmpdir = os.path.join(self.topdir, name, 'tmp') @@ -295,7 +295,17 @@ class ReproducibleTests(OESelftestTestCase): d = get_bb_vars(capture_vars) try: # targets used to be called images - bitbake("--continue "+' '.join(getattr(self, 'images', self.targets))) + targets = ' '.join(getattr(self, 'images', self.targets)) + if use_faketime: + # 397 days: one year and 31/32 days: this will always be a + # different year, month and day of week. + # 2 hours, 2 minutes and 2 seconds: different values, even if we + # have some DST or leap second involved. + timespecs = "+397days +2hours +2minutes +2seconds" + runCmd(f"faketime '{timespecs}' bitbake --continue {targets}", + native_sysroot=libfaketime_sysroot) + else: + bitbake(f"--continue {targets}") except AssertionError as e: bitbake_failure_count += 1 self.logger.error("Bitbake failed! but keep going... Log:") @@ -320,9 +330,10 @@ class ReproducibleTests(OESelftestTestCase): # Build native utilities self.write_config('') - bitbake("diffoscope-native diffutils-native -c addto_recipe_sysroot") + bitbake("diffoscope-native diffutils-native libfaketime-native -c addto_recipe_sysroot") diffutils_sysroot = get_bb_var("RECIPE_SYSROOT_NATIVE", "diffutils-native") diffoscope_sysroot = get_bb_var("RECIPE_SYSROOT_NATIVE", "diffoscope-native") + libfaketime_sysroot = get_bb_var("RECIPE_SYSROOT_NATIVE", "libfaketime-native") if self.save_results: os.makedirs(self.save_results, exist_ok=True) @@ -338,10 +349,13 @@ class ReproducibleTests(OESelftestTestCase): fails = [] vars_list = [None, None] - for i, (name, use_sstate) in enumerate( - (('reproducibleA', self.build_from_sstate), - ('reproducibleB-extended', False))): - (variables, bitbake_failure_count) = self.do_test_build(name, use_sstate) + for i, (name, use_sstate, use_faketime) in enumerate( + (('reproducibleA', self.build_from_sstate, False), + ('reproducibleB-extended', False, True))): + (variables, bitbake_failure_count) = self.do_test_build(name, + use_sstate, + use_faketime, + libfaketime_sysroot) if bitbake_failure_count > 0: self.logger.error('%s build failed. Trying to compute built packages differences but the test will fail.' % name) fails.append("Bitbake %s failure" % name) -- 2.47.3
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#244989): https://lists.openembedded.org/g/openembedded-core/message/244989 Mute This Topic: https://lists.openembedded.org/mt/121056650/21656 Group Owner: [email protected] Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
