mirror of
https://git.yoctoproject.org/git/poky
synced 2026-01-04 16:10:04 +00:00
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>
This commit is contained in:
parent
6d295ce0c5
commit
7010358190
|
|
@ -37,13 +37,19 @@ Options:
|
|||
Specify sstate cache directory, will use the environment
|
||||
variable SSTATE_CACHE_DIR if it is not specified.
|
||||
|
||||
--extra-archs=<arch1>,<arch2>...<archn>
|
||||
Specify list of architectures which should be tested, this list
|
||||
will be extended with native arch, allarch and empty arch. The
|
||||
script won't be trying to generate list of available archs from
|
||||
AVAILTUNES in tune files.
|
||||
|
||||
--extra-layer=<layer1>,<layer2>...<layern>
|
||||
Specify the layer which will be used for searching the archs,
|
||||
it will search the meta and meta-* layers in the top dir by
|
||||
default, and will search meta, meta-*, <layer1>, <layer2>,
|
||||
...<layern> when specified. Use "," as the separator.
|
||||
|
||||
This is useless for --stamps-dir.
|
||||
This is useless for --stamps-dir or when --extra-archs is used.
|
||||
|
||||
-d, --remove-duplicated
|
||||
Remove the duplicated sstate cache files of one package, only
|
||||
|
|
@ -170,20 +176,23 @@ remove_duplicated () {
|
|||
local fn_tmp
|
||||
local list_suffix=`mktemp` || exit 1
|
||||
|
||||
# Find out the archs in all the layers
|
||||
echo -n "Figuring out the archs in the layers ... "
|
||||
oe_core_dir=$(dirname $(dirname $(readlink -e $0)))
|
||||
topdir=$(dirname $oe_core_dir)
|
||||
tunedirs="`find $topdir/meta* ${oe_core_dir}/meta* $layers -path '*/meta*/conf/machine/include' 2>/dev/null`"
|
||||
[ -n "$tunedirs" ] || echo_error "Can't find the tune directory"
|
||||
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$//'`"
|
||||
all_archs=`grep -r -h "^AVAILTUNES .*=" $tunedirs | sed -e 's/.*=//' -e 's/\"//g'`
|
||||
# Add the qemu and native archs
|
||||
# Use the "_" to substitute "-", e.g., x86-64 to x86_64
|
||||
if [ -z "$extra_archs" ] ; then
|
||||
# Find out the archs in all the layers
|
||||
echo -n "Figuring out the archs in the layers ... "
|
||||
oe_core_dir=$(dirname $(dirname $(readlink -e $0)))
|
||||
topdir=$(dirname $oe_core_dir)
|
||||
tunedirs="`find $topdir/meta* ${oe_core_dir}/meta* $layers -path '*/meta*/conf/machine/include' 2>/dev/null`"
|
||||
[ -n "$tunedirs" ] || echo_error "Can't find the tune directory"
|
||||
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$//'`"
|
||||
all_archs=`grep -r -h "^AVAILTUNES .*=" $tunedirs | sed -e 's/.*=//' -e 's/\"//g'`
|
||||
fi
|
||||
|
||||
# Use the "_" to substitute "-", e.g., x86-64 to x86_64, but not for extra_archs which can be something like cortexa9t2-vfp-neon
|
||||
# Sort to remove the duplicated ones
|
||||
# Add allarch
|
||||
all_archs=$(echo allarch $all_archs $all_machines $(uname -m) \
|
||||
| sed -e 's/-/_/g' -e 's/ /\n/g' | sort -u)
|
||||
# Add allarch and builder arch (native)
|
||||
builder_arch=$(uname -m)
|
||||
all_archs="$(echo allarch $all_archs $all_machines $builder_arch \
|
||||
| sed -e 's/-/_/g' -e 's/ /\n/g' | sort -u) $extra_archs"
|
||||
echo "Done"
|
||||
|
||||
# Total number of files including sstate-, sigdata and .done files
|
||||
|
|
@ -204,6 +213,9 @@ remove_duplicated () {
|
|||
for arch in $all_archs; do
|
||||
grep -q ".*/sstate:[^:]*:[^:]*:[^:]*:[^:]*:$arch:[^:]*:[^:]*\.tgz$" $sstate_list
|
||||
[ $? -eq 0 ] && ava_archs="$ava_archs $arch"
|
||||
# ${builder_arch}_$arch used by toolchain sstate
|
||||
grep -q ".*/sstate:[^:]*:[^:]*:[^:]*:[^:]*:${builder_arch}_$arch:[^:]*:[^:]*\.tgz$" $sstate_list
|
||||
[ $? -eq 0 ] && ava_archs="$ava_archs ${builder_arch}_$arch"
|
||||
done
|
||||
echo "Done"
|
||||
echo "The following archs have been found in the cache dir:"
|
||||
|
|
@ -229,7 +241,7 @@ remove_duplicated () {
|
|||
rm_list="$remove_listdir/sstate:xxx_$suffix"
|
||||
for fn in $file_names; do
|
||||
[ -z "$verbose" ] || echo "Analyzing sstate:$fn-xxx_$suffix.tgz"
|
||||
for arch in $ava_archs; do
|
||||
for arch in $ava_archs ""; do
|
||||
grep -h ".*/sstate:$fn:[^:]*:[^:]*:[^:]*:$arch:[^:]*:[^:]*\.tgz$" $list_suffix >$fn_tmp
|
||||
if [ -s $fn_tmp ] ; then
|
||||
[ $debug -gt 1 ] && echo "Available files for $fn-$arch- with suffix $suffix:" && cat $fn_tmp
|
||||
|
|
@ -384,9 +396,14 @@ while [ -n "$1" ]; do
|
|||
fsym="y"
|
||||
shift
|
||||
;;
|
||||
--extra-archs=*)
|
||||
extra_archs=`echo $1 | sed -e 's#^--extra-archs=##' -e 's#,# #g'`
|
||||
[ -n "$extra_archs" ] || echo_error "Invalid extra arch parameter"
|
||||
shift
|
||||
;;
|
||||
--extra-layer=*)
|
||||
extra_layers=`echo $1 | sed -e 's#^--extra-layer=##' -e 's#,# #g'`
|
||||
[ -n "$extra_layers" ] || echo_error "Invalid extra layer $i"
|
||||
[ -n "$extra_layers" ] || echo_error "Invalid extra layer parameter"
|
||||
for i in $extra_layers; do
|
||||
l=`readlink -e $i`
|
||||
if [ -d "$l" ]; then
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user