diff options
Diffstat (limited to 'meta/classes/rm_work.bbclass')
-rw-r--r-- | meta/classes/rm_work.bbclass | 63 |
1 files changed, 26 insertions, 37 deletions
diff --git a/meta/classes/rm_work.bbclass b/meta/classes/rm_work.bbclass index 10e134b958..5f12d5aaeb 100644 --- a/meta/classes/rm_work.bbclass +++ b/meta/classes/rm_work.bbclass @@ -13,7 +13,7 @@ # Recipes can also configure which entries in their ${WORKDIR} # are preserved besides temp, which already gets excluded by default # because it contains logs: -# do_install_append () { +# do_install:append () { # echo "bar" >${WORKDIR}/foo # } # RM_WORK_EXCLUDE_ITEMS += "foo" @@ -24,7 +24,7 @@ RM_WORK_EXCLUDE_ITEMS = "temp" BB_SCHEDULER ?= "completion" # Run the rm_work task in the idle scheduling class -BB_TASK_IONICE_LEVEL_task-rm_work = "3.0" +BB_TASK_IONICE_LEVEL:task-rm_work = "3.0" do_rm_work () { # If the recipe name is in the RM_WORK_EXCLUDE, skip the recipe. @@ -47,61 +47,51 @@ do_rm_work () { cd `dirname ${STAMP}` for i in `basename ${STAMP}`* do - # By default we'll delete the stamp, unless $i is changed by the inner loop - # (i=dummy does this) - case $i in *sigdata*|*sigbasedata*) # Save/skip anything that looks like a signature data file. - i=dummy ;; - *do_image_complete_setscene*) - # Ensure we don't 'stack' setscene extensions to this stamp with the section below - i=dummy + *do_image_complete_setscene*|*do_image_qa_setscene*) + # Ensure we don't 'stack' setscene extensions to these stamps with the sections below ;; *do_image_complete*) # Promote do_image_complete stamps to setscene versions (ahead of *do_image* below) mv $i `echo $i | sed -e "s#do_image_complete#do_image_complete_setscene#"` - i=dummy + ;; + *do_image_qa*) + # Promote do_image_qa stamps to setscene versions (ahead of *do_image* below) + mv $i `echo $i | sed -e "s#do_image_qa#do_image_qa_setscene#"` ;; *do_package_write*|*do_rootfs*|*do_image*|*do_bootimg*|*do_write_qemuboot_conf*|*do_build*) - i=dummy ;; *do_addto_recipe_sysroot*) # Preserve recipe-sysroot-native if do_addto_recipe_sysroot has been used excludes="$excludes recipe-sysroot-native" - i=dummy ;; *do_package|*do_package.*|*do_package_setscene.*) # We remove do_package entirely, including any # sstate version since otherwise we'd need to leave 'plaindirs' around # such as 'packages' and 'packages-split' and these can be large. No end # of chain tasks depend directly on do_package anymore. - rm -f $i; - i=dummy + rm -f -- $i; ;; *_setscene*) # Skip stamps which are already setscene versions - i=dummy ;; + *) + # For everything else: if suitable, promote the stamp to a setscene + # version, otherwise remove it + for j in ${SSTATETASKS} do_shared_workdir + do + case $i in + *$j|*$j.*) + mv $i `echo $i | sed -e "s#${j}#${j}_setscene#"` + break + ;; + esac + done + rm -f -- $i esac - - for j in ${SSTATETASKS} do_shared_workdir - do - case $i in - dummy) - break - ;; - *$j|*$j.*) - # Promote the stamp to a setscene version - mv $i `echo $i | sed -e "s#${j}#${j}_setscene#"` - i=dummy - break - ;; - esac - done - - rm -f $i done cd ${WORKDIR} @@ -110,9 +100,9 @@ do_rm_work () { # Retain only logs and other files in temp, safely ignore # failures of removing pseudo folers on NFS2/3 server. if [ $dir = 'pseudo' ]; then - rm -rf $dir 2> /dev/null || true + rm -rf -- $dir 2> /dev/null || true elif ! echo "$excludes" | grep -q -w "$dir"; then - rm -rf $dir + rm -rf -- $dir fi done } @@ -121,7 +111,7 @@ 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 +addtask rm_work_all before do_build do_populate_sdk[postfuncs] += "rm_work_populatesdk" rm_work_populatesdk () { @@ -164,8 +154,7 @@ python inject_rm_work() { # Determine what do_build depends upon, without including do_build # itself or our own special do_rm_work_all. - deps = set(bb.build.preceedtask('do_build', True, d)) - deps.difference_update(('do_build', 'do_rm_work_all')) + deps = sorted((set(bb.build.preceedtask('do_build', True, d))).difference(('do_build', 'do_rm_work_all')) or "") # deps can be empty if do_build doesn't exist, e.g. *-inital recipes if not deps: |