summaryrefslogtreecommitdiffstats
path: root/meta/classes/rm_work.bbclass
diff options
context:
space:
mode:
authorRoss Burton <ross.burton@arm.com>2023-01-03 17:47:34 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2023-01-06 12:03:47 +0000
commitde5aac2a0b9dd0656669d110cef47f2366c8043d (patch)
treebeaecb2c78d938a8fc5579cdb6ba5247bfcaf813 /meta/classes/rm_work.bbclass
parenteb2a1c7830943d752c8468fa431037386efbe13a (diff)
downloadpoky-de5aac2a0b9dd0656669d110cef47f2366c8043d.tar.gz
rm_work: handle non-existant stamps directory
Since 'build/siggen: Rework stamps functions'[1] the stamps directory for each recipe is only created if there are stamps to be written. Some recipes - such as package-index - only have nostamp tasks so the stamps directory is never created, resulting in the rm_work task trying to cd into a directory that doesn't exist. Resolve this by simply checking the stamps directory exists before trying to delete files in it. [1] bitbake c79ecec580e4c2a141ae483ec0f6448f70593dcf (From OE-Core rev: 80e9b32a000b25420997068543d3631231eb3ccf) Signed-off-by: Ross Burton <ross.burton@arm.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/classes/rm_work.bbclass')
-rw-r--r--meta/classes/rm_work.bbclass101
1 files changed, 52 insertions, 49 deletions
diff --git a/meta/classes/rm_work.bbclass b/meta/classes/rm_work.bbclass
index 8b5fe1b808..52ecfafb72 100644
--- a/meta/classes/rm_work.bbclass
+++ b/meta/classes/rm_work.bbclass
@@ -57,55 +57,58 @@ do_rm_work () {
57 # Change normal stamps into setscene stamps as they better reflect the 57 # Change normal stamps into setscene stamps as they better reflect the
58 # fact WORKDIR is now empty 58 # fact WORKDIR is now empty
59 # Also leave noexec stamps since setscene stamps don't cover them 59 # Also leave noexec stamps since setscene stamps don't cover them
60 cd `dirname ${STAMP}` 60 STAMPDIR=`dirname ${STAMP}`
61 for i in `basename ${STAMP}`* 61 if test -d $STAMPDIR; then
62 do 62 cd $STAMPDIR
63 case $i in 63 for i in `basename ${STAMP}`*
64 *sigdata*|*sigbasedata*) 64 do
65 # Save/skip anything that looks like a signature data file. 65 case $i in
66 ;; 66 *sigdata*|*sigbasedata*)
67 *do_image_complete_setscene*|*do_image_qa_setscene*) 67 # Save/skip anything that looks like a signature data file.
68 # Ensure we don't 'stack' setscene extensions to these stamps with the sections below 68 ;;
69 ;; 69 *do_image_complete_setscene*|*do_image_qa_setscene*)
70 *do_image_complete*) 70 # Ensure we don't 'stack' setscene extensions to these stamps with the sections below
71 # Promote do_image_complete stamps to setscene versions (ahead of *do_image* below) 71 ;;
72 mv $i `echo $i | sed -e "s#do_image_complete#do_image_complete_setscene#"` 72 *do_image_complete*)
73 ;; 73 # Promote do_image_complete stamps to setscene versions (ahead of *do_image* below)
74 *do_image_qa*) 74 mv $i `echo $i | sed -e "s#do_image_complete#do_image_complete_setscene#"`
75 # Promote do_image_qa stamps to setscene versions (ahead of *do_image* below) 75 ;;
76 mv $i `echo $i | sed -e "s#do_image_qa#do_image_qa_setscene#"` 76 *do_image_qa*)
77 ;; 77 # Promote do_image_qa stamps to setscene versions (ahead of *do_image* below)
78 *do_package_write*|*do_rootfs*|*do_image*|*do_bootimg*|*do_write_qemuboot_conf*|*do_build*) 78 mv $i `echo $i | sed -e "s#do_image_qa#do_image_qa_setscene#"`
79 ;; 79 ;;
80 *do_addto_recipe_sysroot*) 80 *do_package_write*|*do_rootfs*|*do_image*|*do_bootimg*|*do_write_qemuboot_conf*|*do_build*)
81 # Preserve recipe-sysroot-native if do_addto_recipe_sysroot has been used 81 ;;
82 excludes="$excludes recipe-sysroot-native" 82 *do_addto_recipe_sysroot*)
83 ;; 83 # Preserve recipe-sysroot-native if do_addto_recipe_sysroot has been used
84 *do_package|*do_package.*|*do_package_setscene.*) 84 excludes="$excludes recipe-sysroot-native"
85 # We remove do_package entirely, including any 85 ;;
86 # sstate version since otherwise we'd need to leave 'plaindirs' around 86 *do_package|*do_package.*|*do_package_setscene.*)
87 # such as 'packages' and 'packages-split' and these can be large. No end 87 # We remove do_package entirely, including any
88 # of chain tasks depend directly on do_package anymore. 88 # sstate version since otherwise we'd need to leave 'plaindirs' around
89 "${RM_BIN}" -f -- $i; 89 # such as 'packages' and 'packages-split' and these can be large. No end
90 ;; 90 # of chain tasks depend directly on do_package anymore.
91 *_setscene*) 91 "${RM_BIN}" -f -- $i;
92 # Skip stamps which are already setscene versions 92 ;;
93 ;; 93 *_setscene*)
94 *) 94 # Skip stamps which are already setscene versions
95 # For everything else: if suitable, promote the stamp to a setscene 95 ;;
96 # version, otherwise remove it 96 *)
97 for j in ${SSTATETASKS} do_shared_workdir 97 # For everything else: if suitable, promote the stamp to a setscene
98 do 98 # version, otherwise remove it
99 case $i in 99 for j in ${SSTATETASKS} do_shared_workdir
100 *$j|*$j.*) 100 do
101 mv $i `echo $i | sed -e "s#${j}#${j}_setscene#"` 101 case $i in
102 break 102 *$j|*$j.*)
103 ;; 103 mv $i `echo $i | sed -e "s#${j}#${j}_setscene#"`
104 esac 104 break
105 done 105 ;;
106 "${RM_BIN}" -f -- $i 106 esac
107 esac 107 done
108 done 108 "${RM_BIN}" -f -- $i
109 esac
110 done
111 fi
109 112
110 cd ${WORKDIR} 113 cd ${WORKDIR}
111 for dir in * 114 for dir in *