]> code.ossystems Code Review - openembedded-core.git/commit
classes/native: Propagate dependencies to outhash
authorJoshua Watt <jpewhacker@gmail.com>
Fri, 14 Jan 2022 17:12:22 +0000 (11:12 -0600)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Mon, 17 Jan 2022 11:48:17 +0000 (11:48 +0000)
commitd6c7b9f4f0e61fa6546d3644e27abe3e96f597e2
tree12f8ebc6105dcf6bc4bde36538b21a853c94d132
parent7a1a3dcae9f22a05baf11900231d28cf3d8f53ee
classes/native: Propagate dependencies to outhash

Native task outputs are directly run on the build system during the build
after being built. Even if the output of a native recipe doesn't change, a
change in one of its dependencies may cause a change in the output it
generates (e.g. rpm output depends on the output of its dependent zstd
library).

This can cause poor interactions with hash equivalence, since this
recipe's output-changing dependency is "hidden" and downstream tasks only
see that this recipe has the same outhash and therefore is equivalent.
This can result in different output in different cases and issues with
reproducible builds in parcular (e.g. rpm compression changes for the same
content).

To resolve this, unhide the output-changing dependency by adding it's
unihash to this tasks outhash calculation. Unfortunately, we don't know
specifically know which dependencies are output-changing, so we have to
add all of them.

[YOCTO #14685]

Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/classes/native.bbclass
meta/lib/oe/sstatesig.py