mirror of
https://git.yoctoproject.org/poky
synced 2026-05-08 05:09:24 +00:00
reproducible: Allow configuration of saved debug output
If OEQA_DEBUGGING_SAVED_OUTPUT is set in the environment, use this location to store reproducibile build failure output. This aids debugging on the YP autobuilder in particular. Use a date in the directory name to make it easier to find failure output. Also clean up empty directories as they're unnecessary distracting noise. (From OE-Core rev: 138ed4aa96ec5069f9f7fd02994a42452dbccc2d) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
@@ -15,6 +15,7 @@ import tempfile
|
||||
import shutil
|
||||
import stat
|
||||
import os
|
||||
import datetime
|
||||
|
||||
MISSING = 'MISSING'
|
||||
DIFFERENT = 'DIFFERENT'
|
||||
@@ -80,6 +81,9 @@ class ReproducibleTests(OESelftestTestCase):
|
||||
package_classes = ['deb', 'ipk']
|
||||
images = ['core-image-minimal', 'core-image-sato', 'core-image-full-cmdline']
|
||||
save_results = False
|
||||
if 'OEQA_DEBUGGING_SAVED_OUTPUT' in os.environ:
|
||||
save_results = os.environ['OEQA_DEBUGGING_SAVED_OUTPUT']
|
||||
|
||||
# This variable controls if one of the test builds is allowed to pull from
|
||||
# an sstate cache/mirror. The other build is always done clean as a point of
|
||||
# comparison.
|
||||
@@ -168,7 +172,9 @@ class ReproducibleTests(OESelftestTestCase):
|
||||
diffutils_sysroot = get_bb_var("RECIPE_SYSROOT_NATIVE", "diffutils-native")
|
||||
|
||||
if self.save_results:
|
||||
save_dir = tempfile.mkdtemp(prefix='oe-reproducible-')
|
||||
os.makedirs(self.save_results, exist_ok=True)
|
||||
datestr = datetime.datetime.now().strftime('%Y%m%d')
|
||||
save_dir = tempfile.mkdtemp(prefix='oe-reproducible-%s-' % datestr, dir=self.save_results)
|
||||
os.chmod(save_dir, stat.S_IRWXU | stat.S_IRGRP | stat.S_IXGRP | stat.S_IROTH | stat.S_IXOTH)
|
||||
self.logger.info('Non-reproducible packages will be copied to %s', save_dir)
|
||||
|
||||
@@ -204,3 +210,8 @@ class ReproducibleTests(OESelftestTestCase):
|
||||
self.fail("The following %s packages are missing or different: %s" %
|
||||
(c, ' '.join(r.test for r in (result.missing + result.different))))
|
||||
|
||||
# Clean up empty directories
|
||||
if self.save_results:
|
||||
if not os.listdir(save_dir):
|
||||
os.rmdir(save_dir)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user