diff options
Diffstat (limited to 'meta/classes/rm_work.bbclass')
-rw-r--r-- | meta/classes/rm_work.bbclass | 31 |
1 files changed, 20 insertions, 11 deletions
diff --git a/meta/classes/rm_work.bbclass b/meta/classes/rm_work.bbclass index 9b7220fc2b..054c93716e 100644 --- a/meta/classes/rm_work.bbclass +++ b/meta/classes/rm_work.bbclass | |||
@@ -26,9 +26,6 @@ BB_SCHEDULER ?= "completion" | |||
26 | # Run the rm_work task in the idle scheduling class | 26 | # Run the rm_work task in the idle scheduling class |
27 | BB_TASK_IONICE_LEVEL_task-rm_work = "3.0" | 27 | BB_TASK_IONICE_LEVEL_task-rm_work = "3.0" |
28 | 28 | ||
29 | RMWORK_ORIG_TASK := "${BB_DEFAULT_TASK}" | ||
30 | BB_DEFAULT_TASK = "rm_work_all" | ||
31 | |||
32 | do_rm_work () { | 29 | do_rm_work () { |
33 | # If the recipe name is in the RM_WORK_EXCLUDE, skip the recipe. | 30 | # If the recipe name is in the RM_WORK_EXCLUDE, skip the recipe. |
34 | for p in ${RM_WORK_EXCLUDE}; do | 31 | for p in ${RM_WORK_EXCLUDE}; do |
@@ -105,13 +102,6 @@ do_rm_work () { | |||
105 | rm -f $i | 102 | rm -f $i |
106 | done | 103 | done |
107 | } | 104 | } |
108 | addtask rm_work after do_${RMWORK_ORIG_TASK} | ||
109 | |||
110 | do_rm_work_all () { | ||
111 | : | ||
112 | } | ||
113 | do_rm_work_all[recrdeptask] = "do_rm_work" | ||
114 | addtask rm_work_all after do_rm_work | ||
115 | 105 | ||
116 | do_populate_sdk[postfuncs] += "rm_work_populatesdk" | 106 | do_populate_sdk[postfuncs] += "rm_work_populatesdk" |
117 | rm_work_populatesdk () { | 107 | rm_work_populatesdk () { |
@@ -125,7 +115,13 @@ rm_work_rootfs () { | |||
125 | } | 115 | } |
126 | rm_work_rootfs[cleandirs] = "${WORKDIR}/rootfs" | 116 | rm_work_rootfs[cleandirs] = "${WORKDIR}/rootfs" |
127 | 117 | ||
128 | python () { | 118 | # We have to add the do_rmwork task already now, because all tasks are |
119 | # meant to be defined before the RecipeTaskPreProcess event triggers. | ||
120 | # The inject_rm_work event handler then merely changes task dependencies. | ||
121 | addtask do_rm_work | ||
122 | addhandler inject_rm_work | ||
123 | inject_rm_work[eventmask] = "bb.event.RecipeTaskPreProcess" | ||
124 | python inject_rm_work() { | ||
129 | if bb.data.inherits_class('kernel', d): | 125 | if bb.data.inherits_class('kernel', d): |
130 | d.appendVar("RM_WORK_EXCLUDE", ' ' + d.getVar("PN")) | 126 | d.appendVar("RM_WORK_EXCLUDE", ' ' + d.getVar("PN")) |
131 | # If the recipe name is in the RM_WORK_EXCLUDE, skip the recipe. | 127 | # If the recipe name is in the RM_WORK_EXCLUDE, skip the recipe. |
@@ -134,4 +130,17 @@ python () { | |||
134 | if pn in excludes: | 130 | if pn in excludes: |
135 | d.delVarFlag('rm_work_rootfs', 'cleandirs') | 131 | d.delVarFlag('rm_work_rootfs', 'cleandirs') |
136 | d.delVarFlag('rm_work_populatesdk', 'cleandirs') | 132 | d.delVarFlag('rm_work_populatesdk', 'cleandirs') |
133 | else: | ||
134 | # Inject do_rm_work into the tasks of the current recipe such that do_build | ||
135 | # depends on it and that it runs after all other tasks that block do_build, | ||
136 | # i.e. after all work on the current recipe is done. The reason for taking | ||
137 | # this approach instead of making do_rm_work depend on do_build is that | ||
138 | # do_build inherits additional runtime dependencies on | ||
139 | # other recipes and thus will typically run much later than completion of | ||
140 | # work in the recipe itself. | ||
141 | deps = bb.build.preceedtask('do_build', True, d) | ||
142 | if 'do_build' in deps: | ||
143 | deps.remove('do_build') | ||
144 | # In practice, addtask() here merely updates the dependencies. | ||
145 | bb.build.addtask('do_rm_work', 'do_build', ' '.join(deps), d) | ||
137 | } | 146 | } |