diff options
Diffstat (limited to 'meta/classes/native.bbclass')
-rw-r--r-- | meta/classes/native.bbclass | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/meta/classes/native.bbclass b/meta/classes/native.bbclass index 76a599bc15..fc7422c5d7 100644 --- a/meta/classes/native.bbclass +++ b/meta/classes/native.bbclass | |||
@@ -195,3 +195,34 @@ USE_NLS = "no" | |||
195 | 195 | ||
196 | RECIPERDEPTASK = "do_populate_sysroot" | 196 | RECIPERDEPTASK = "do_populate_sysroot" |
197 | do_populate_sysroot[rdeptask] = "${RECIPERDEPTASK}" | 197 | do_populate_sysroot[rdeptask] = "${RECIPERDEPTASK}" |
198 | |||
199 | # | ||
200 | # Native task outputs are directly run on the target (host) system after being | ||
201 | # built. Even if the output of this recipe doesn't change, a change in one of | ||
202 | # its dependencies may cause a change in the output it generates (e.g. rpm | ||
203 | # output depends on the output of its dependent zstd library). | ||
204 | # | ||
205 | # This can cause poor interactions with hash equivalence, since this recipes | ||
206 | # output-changing dependency is "hidden" and downstream task only see that this | ||
207 | # recipe has the same outhash and therefore is equivalent. This can result in | ||
208 | # different output in different cases. | ||
209 | # | ||
210 | # To resolve this, unhide the output-changing dependency by adding its unihash | ||
211 | # to this tasks outhash calculation. Unfortunately, don't know specifically | ||
212 | # know which dependencies are output-changing, so we have to add all of them. | ||
213 | # | ||
214 | python native_add_do_populate_sysroot_deps () { | ||
215 | current_task = "do_" + d.getVar("BB_CURRENTTASK") | ||
216 | if current_task != "do_populate_sysroot": | ||
217 | return | ||
218 | |||
219 | taskdepdata = d.getVar("BB_TASKDEPDATA", False) | ||
220 | pn = d.getVar("PN") | ||
221 | deps = { | ||
222 | dep[0]:dep[6] for dep in taskdepdata.values() if | ||
223 | dep[1] == current_task and dep[0] != pn | ||
224 | } | ||
225 | |||
226 | d.setVar("HASHEQUIV_EXTRA_SIGDATA", "\n".join("%s: %s" % (k, deps[k]) for k in sorted(deps.keys()))) | ||
227 | } | ||
228 | SSTATECREATEFUNCS += "native_add_do_populate_sysroot_deps" | ||