]> code.ossystems Code Review - openembedded-core.git/commitdiff
sstatesig: Log timestamps for hashequiv in reprodubile builds for do_package
authorRichard Purdie <richard.purdie@linuxfoundation.org>
Wed, 29 Jan 2020 17:28:46 +0000 (17:28 +0000)
committerSteve Sakoman <steve@sakoman.com>
Mon, 2 Nov 2020 15:19:32 +0000 (05:19 -1000)
Currently if a task generates the same output with different timestamps,
hasequiv won't detect it but reproducibile builds will fail tests due
to the different timestamps.

Add do_package timestamps to the hash when reproducibile builds are enabled
to avoid this.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 11e8200ccec765ff6a4263e06512e5751eca261a)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
meta/lib/oe/sstatesig.py

index d24e3738aeb54debab3305df6a8ff5ee8da368ac..d5a620056267ffbbfed510588857dd06cccb3e91 100644 (file)
@@ -477,6 +477,9 @@ def OEOuthashBasic(path, sigfile, task, d):
     h = hashlib.sha256()
     prev_dir = os.getcwd()
     include_owners = os.environ.get('PSEUDO_DISABLED') == '0'
+    include_timestamps = False
+    if task == "package":
+        include_timestamps = d.getVar('BUILD_REPRODUCIBLE_BINARIES') == '1'
     extra_content = d.getVar('HASHEQUIV_HASH_VERSION')
 
     try:
@@ -551,6 +554,9 @@ def OEOuthashBasic(path, sigfile, task, d):
                         bb.warn("KeyError in %s" % path)
                         raise
 
+                if include_timestamps:
+                    update_hash(" %10d" % s.st_mtime)
+
                 update_hash(" ")
                 if stat.S_ISBLK(s.st_mode) or stat.S_ISCHR(s.st_mode):
                     update_hash("%9s" % ("%d.%d" % (os.major(s.st_rdev), os.minor(s.st_rdev))))