[gnome-continuous-yocto/gnomeostree-3.28-rocko: 5215/8267] rm_work.bbclass: re-enable recursive do_rm_work_all
- From: Emmanuele Bassi <ebassi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-continuous-yocto/gnomeostree-3.28-rocko: 5215/8267] rm_work.bbclass: re-enable recursive do_rm_work_all
- Date: Sun, 17 Dec 2017 03:07:37 +0000 (UTC)
commit 3c8d045d79b9abe37c3ed0e2869195ec1eda9a57
Author: Patrick Ohly <patrick ohly intel com>
Date: Tue Mar 14 16:29:32 2017 +0100
rm_work.bbclass: re-enable recursive do_rm_work_all
When rewriting the do_rm_work injection, do_rm_work_all had been
removed because it seemed obsolete, as do_build now always triggers
do_rm_work.
However, do_build does not get triggered for all recipes and thus
do_rm_work was not called for recipes that got built only
partially. For example, zlib depends indirectly on
zlib-native:do_populate_sysroot. Because of that dependency,
zlib-native got compiled, but do_rm_work was never called for it.
Re-introducing do_rm_work_all fixes that by making do_build depend on
do_rm_work_all, which then recursively depends on do_rm_work of all
dependencies. This has the unintended side-effect that do_rm_work then
also triggers additional work (like do_populate_lic) that normally
doesn't need to be done for a build. This seems like the lesser evil,
compared to an incomplete cleanup because it mostly enables the
lighter tasks after do_populate_sysroot.
The real solution would be to have two kinds of relationships: a weak
ordering relationship ("if A and B are enabled, A must run before B,
but B can also run without A") and hard dependencies ("B cannot run
unless A has run before").
(From OE-Core rev: b3de5d5795767a4b8c331fa5040166e7e410eeec)
Signed-off-by: Patrick Ohly <patrick ohly intel com>
Signed-off-by: Ross Burton <ross burton intel com>
Signed-off-by: Richard Purdie <richard purdie linuxfoundation org>
meta/classes/rm_work.bbclass | 11 ++++++++---
1 files changed, 8 insertions(+), 3 deletions(-)
---
diff --git a/meta/classes/rm_work.bbclass b/meta/classes/rm_work.bbclass
index 054c937..2490a69 100644
--- a/meta/classes/rm_work.bbclass
+++ b/meta/classes/rm_work.bbclass
@@ -102,6 +102,12 @@ do_rm_work () {
rm -f $i
done
}
+do_rm_work_all () {
+ :
+}
+do_rm_work_all[recrdeptask] = "do_rm_work"
+do_rm_work_all[noexec] = "1"
+addtask rm_work_all after before do_build
do_populate_sdk[postfuncs] += "rm_work_populatesdk"
rm_work_populatesdk () {
@@ -138,9 +144,8 @@ python inject_rm_work() {
# do_build inherits additional runtime dependencies on
# other recipes and thus will typically run much later than completion of
# work in the recipe itself.
- deps = bb.build.preceedtask('do_build', True, d)
- if 'do_build' in deps:
- deps.remove('do_build')
+ deps = set(bb.build.preceedtask('do_build', True, d))
+ deps.difference_update(('do_build', 'do_rm_work_all'))
# In practice, addtask() here merely updates the dependencies.
bb.build.addtask('do_rm_work', 'do_build', ' '.join(deps), d)
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]