summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta/classes/staging.bbclass24
1 files changed, 24 insertions, 0 deletions
diff --git a/meta/classes/staging.bbclass b/meta/classes/staging.bbclass
index 9fc8f4f283..8372a4574a 100644
--- a/meta/classes/staging.bbclass
+++ b/meta/classes/staging.bbclass
@@ -404,7 +404,9 @@ python extend_recipe_sysroot() {
404 # All files that we're going to be installing, to find conflicts. 404 # All files that we're going to be installing, to find conflicts.
405 fileset = {} 405 fileset = {}
406 406
407 invalidate_tasks = set()
407 for f in os.listdir(depdir): 408 for f in os.listdir(depdir):
409 removed = []
408 if not f.endswith(".complete"): 410 if not f.endswith(".complete"):
409 continue 411 continue
410 f = depdir + "/" + f 412 f = depdir + "/" + f
@@ -414,6 +416,28 @@ python extend_recipe_sysroot() {
414 sstate_clean_manifest(depdir + "/" + lnk, d, canrace=True, prefix=workdir) 416 sstate_clean_manifest(depdir + "/" + lnk, d, canrace=True, prefix=workdir)
415 os.unlink(f) 417 os.unlink(f)
416 os.unlink(f.replace(".complete", "")) 418 os.unlink(f.replace(".complete", ""))
419 removed.append(os.path.basename(f.replace(".complete", "")))
420
421 # If we've removed files from the sysroot above, the task that installed them may still
422 # have a stamp file present for the task. This is probably invalid right now but may become
423 # valid again if the user were to change configuration back for example. Since we've removed
424 # the files a task might need, remove the stamp file too to force it to rerun.
425 # YOCTO #14790
426 if removed:
427 for i in glob.glob(depdir + "/index.*"):
428 if i.endswith("." + mytaskname):
429 continue
430 with open(i, "r") as f:
431 for l in f:
432 if l.startswith("TaskDeps:"):
433 continue
434 l = l.strip()
435 if l in removed:
436 invalidate_tasks.add(i.rsplit(".", 1)[1])
437 break
438 for t in invalidate_tasks:
439 bb.note("Invalidating stamps for task %s" % t)
440 bb.build.clean_stamp(t, d)
417 441
418 installed = [] 442 installed = []
419 for dep in configuredeps: 443 for dep in configuredeps: