summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Jansa <martin.jansa@gmail.com>2014-01-29 22:03:42 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2014-02-02 11:30:34 +0000
commit701035819021971f75424e3f9a9779016d85a0fe (patch)
tree53621dbc3853648e65b883bc8073c298809afc4d
parent6d295ce0c5d2117b14e93626aff0f7c9364d337d (diff)
downloadpoky-701035819021971f75424e3f9a9779016d85a0fe.tar.gz
sstate-cache-management.sh: Fix available architectures
* grep for AVAILTUNES isn't enough in cases where AVAILTUNE doesn't match exactly with TUNE_PKGARCH, e.g. AVAILTUNE "cortexa8thf-neon" and TUNE_PKGARCH "cortexa8t2hf-vfp-neon", instead of trying to find dynamically every available TUNE_PKGARCH (we have _a lot_ of them even with oe-core only), add parameter --extra-archs where user can define extra architectures he supports in given build * Don't replace '-' with '_' for extra-archs, it does apply to MACHINE names and some AVAILTUNES, but e.g. cortexa8thf-neon shouldn't be converted to cortexa8thf_neon * Add empty architecture for populate_lic sstate archives * Add ${build_arch}_${arch} combinations for toolchain recipes (e.g. gcc-cross is using x86_64_i586 (From OE-Core rev: a27cc54fb2d0e59f3a800893c1848cb26a7c5335) Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rwxr-xr-xscripts/sstate-cache-management.sh49
1 files changed, 33 insertions, 16 deletions
diff --git a/scripts/sstate-cache-management.sh b/scripts/sstate-cache-management.sh
index 035bb25f89..0d71bfe622 100755
--- a/scripts/sstate-cache-management.sh
+++ b/scripts/sstate-cache-management.sh
@@ -37,13 +37,19 @@ Options:
37 Specify sstate cache directory, will use the environment 37 Specify sstate cache directory, will use the environment
38 variable SSTATE_CACHE_DIR if it is not specified. 38 variable SSTATE_CACHE_DIR if it is not specified.
39 39
40 --extra-archs=<arch1>,<arch2>...<archn>
41 Specify list of architectures which should be tested, this list
42 will be extended with native arch, allarch and empty arch. The
43 script won't be trying to generate list of available archs from
44 AVAILTUNES in tune files.
45
40 --extra-layer=<layer1>,<layer2>...<layern> 46 --extra-layer=<layer1>,<layer2>...<layern>
41 Specify the layer which will be used for searching the archs, 47 Specify the layer which will be used for searching the archs,
42 it will search the meta and meta-* layers in the top dir by 48 it will search the meta and meta-* layers in the top dir by
43 default, and will search meta, meta-*, <layer1>, <layer2>, 49 default, and will search meta, meta-*, <layer1>, <layer2>,
44 ...<layern> when specified. Use "," as the separator. 50 ...<layern> when specified. Use "," as the separator.
45 51
46 This is useless for --stamps-dir. 52 This is useless for --stamps-dir or when --extra-archs is used.
47 53
48 -d, --remove-duplicated 54 -d, --remove-duplicated
49 Remove the duplicated sstate cache files of one package, only 55 Remove the duplicated sstate cache files of one package, only
@@ -170,20 +176,23 @@ remove_duplicated () {
170 local fn_tmp 176 local fn_tmp
171 local list_suffix=`mktemp` || exit 1 177 local list_suffix=`mktemp` || exit 1
172 178
173 # Find out the archs in all the layers 179 if [ -z "$extra_archs" ] ; then
174 echo -n "Figuring out the archs in the layers ... " 180 # Find out the archs in all the layers
175 oe_core_dir=$(dirname $(dirname $(readlink -e $0))) 181 echo -n "Figuring out the archs in the layers ... "
176 topdir=$(dirname $oe_core_dir) 182 oe_core_dir=$(dirname $(dirname $(readlink -e $0)))
177 tunedirs="`find $topdir/meta* ${oe_core_dir}/meta* $layers -path '*/meta*/conf/machine/include' 2>/dev/null`" 183 topdir=$(dirname $oe_core_dir)
178 [ -n "$tunedirs" ] || echo_error "Can't find the tune directory" 184 tunedirs="`find $topdir/meta* ${oe_core_dir}/meta* $layers -path '*/meta*/conf/machine/include' 2>/dev/null`"
179 all_machines="`find $topdir/meta* ${oe_core_dir}/meta* $layers -path '*/meta*/conf/machine/*' -name '*.conf' 2>/dev/null | sed -e 's/.*\///' -e 's/.conf$//'`" 185 [ -n "$tunedirs" ] || echo_error "Can't find the tune directory"
180 all_archs=`grep -r -h "^AVAILTUNES .*=" $tunedirs | sed -e 's/.*=//' -e 's/\"//g'` 186 all_machines="`find $topdir/meta* ${oe_core_dir}/meta* $layers -path '*/meta*/conf/machine/*' -name '*.conf' 2>/dev/null | sed -e 's/.*\///' -e 's/.conf$//'`"
181 # Add the qemu and native archs 187 all_archs=`grep -r -h "^AVAILTUNES .*=" $tunedirs | sed -e 's/.*=//' -e 's/\"//g'`
182 # Use the "_" to substitute "-", e.g., x86-64 to x86_64 188 fi
189
190 # Use the "_" to substitute "-", e.g., x86-64 to x86_64, but not for extra_archs which can be something like cortexa9t2-vfp-neon
183 # Sort to remove the duplicated ones 191 # Sort to remove the duplicated ones
184 # Add allarch 192 # Add allarch and builder arch (native)
185 all_archs=$(echo allarch $all_archs $all_machines $(uname -m) \ 193 builder_arch=$(uname -m)
186 | sed -e 's/-/_/g' -e 's/ /\n/g' | sort -u) 194 all_archs="$(echo allarch $all_archs $all_machines $builder_arch \
195 | sed -e 's/-/_/g' -e 's/ /\n/g' | sort -u) $extra_archs"
187 echo "Done" 196 echo "Done"
188 197
189 # Total number of files including sstate-, sigdata and .done files 198 # Total number of files including sstate-, sigdata and .done files
@@ -204,6 +213,9 @@ remove_duplicated () {
204 for arch in $all_archs; do 213 for arch in $all_archs; do
205 grep -q ".*/sstate:[^:]*:[^:]*:[^:]*:[^:]*:$arch:[^:]*:[^:]*\.tgz$" $sstate_list 214 grep -q ".*/sstate:[^:]*:[^:]*:[^:]*:[^:]*:$arch:[^:]*:[^:]*\.tgz$" $sstate_list
206 [ $? -eq 0 ] && ava_archs="$ava_archs $arch" 215 [ $? -eq 0 ] && ava_archs="$ava_archs $arch"
216 # ${builder_arch}_$arch used by toolchain sstate
217 grep -q ".*/sstate:[^:]*:[^:]*:[^:]*:[^:]*:${builder_arch}_$arch:[^:]*:[^:]*\.tgz$" $sstate_list
218 [ $? -eq 0 ] && ava_archs="$ava_archs ${builder_arch}_$arch"
207 done 219 done
208 echo "Done" 220 echo "Done"
209 echo "The following archs have been found in the cache dir:" 221 echo "The following archs have been found in the cache dir:"
@@ -229,7 +241,7 @@ remove_duplicated () {
229 rm_list="$remove_listdir/sstate:xxx_$suffix" 241 rm_list="$remove_listdir/sstate:xxx_$suffix"
230 for fn in $file_names; do 242 for fn in $file_names; do
231 [ -z "$verbose" ] || echo "Analyzing sstate:$fn-xxx_$suffix.tgz" 243 [ -z "$verbose" ] || echo "Analyzing sstate:$fn-xxx_$suffix.tgz"
232 for arch in $ava_archs; do 244 for arch in $ava_archs ""; do
233 grep -h ".*/sstate:$fn:[^:]*:[^:]*:[^:]*:$arch:[^:]*:[^:]*\.tgz$" $list_suffix >$fn_tmp 245 grep -h ".*/sstate:$fn:[^:]*:[^:]*:[^:]*:$arch:[^:]*:[^:]*\.tgz$" $list_suffix >$fn_tmp
234 if [ -s $fn_tmp ] ; then 246 if [ -s $fn_tmp ] ; then
235 [ $debug -gt 1 ] && echo "Available files for $fn-$arch- with suffix $suffix:" && cat $fn_tmp 247 [ $debug -gt 1 ] && echo "Available files for $fn-$arch- with suffix $suffix:" && cat $fn_tmp
@@ -384,9 +396,14 @@ while [ -n "$1" ]; do
384 fsym="y" 396 fsym="y"
385 shift 397 shift
386 ;; 398 ;;
399 --extra-archs=*)
400 extra_archs=`echo $1 | sed -e 's#^--extra-archs=##' -e 's#,# #g'`
401 [ -n "$extra_archs" ] || echo_error "Invalid extra arch parameter"
402 shift
403 ;;
387 --extra-layer=*) 404 --extra-layer=*)
388 extra_layers=`echo $1 | sed -e 's#^--extra-layer=##' -e 's#,# #g'` 405 extra_layers=`echo $1 | sed -e 's#^--extra-layer=##' -e 's#,# #g'`
389 [ -n "$extra_layers" ] || echo_error "Invalid extra layer $i" 406 [ -n "$extra_layers" ] || echo_error "Invalid extra layer parameter"
390 for i in $extra_layers; do 407 for i in $extra_layers; do
391 l=`readlink -e $i` 408 l=`readlink -e $i`
392 if [ -d "$l" ]; then 409 if [ -d "$l" ]; then