mirror of
https://git.yoctoproject.org/poky
synced 2026-05-30 12:29:55 +00:00
sstate-cache-management.sh: update it for the new layout
Update it for the new layout of sstate-cache. Note: It doesn't handle the old sstate-cache/sstate-xxx.tgz (or siginfo), the user should remove it manually (rm -fr sstate-cache/sstate-* would be OK). [YOCTO #2897] (From OE-Core rev: fcb61aa552a641faafdf2216fa57ba5ac6b9991f) Signed-off-by: Robert Yang <liezhi.yang@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
0e6e974a2b
commit
f8d5e2b6c8
@@ -132,13 +132,12 @@ remove_duplicated () {
|
|||||||
|
|
||||||
sstate_suffixes="deploy-rpm deploy-ipk deploy-deb deploy package populate-lic populate-sysroot"
|
sstate_suffixes="deploy-rpm deploy-ipk deploy-deb deploy package populate-lic populate-sysroot"
|
||||||
|
|
||||||
cd $cache_dir || exit 1
|
|
||||||
# Save all the sstate files in a file
|
# Save all the sstate files in a file
|
||||||
sstate_list=`mktemp` || exit 1
|
sstate_list=`mktemp` || exit 1
|
||||||
ls sstate-*.tgz >$sstate_list
|
find $cache_dir -path '*/??/sstate-*.tgz' >$sstate_list
|
||||||
echo -n "Figuring out the archs in the sstate cache dir ... "
|
echo -n "Figuring out the archs in the sstate cache dir ... "
|
||||||
for arch in $all_archs; do
|
for arch in $all_archs; do
|
||||||
grep -q -w $arch $sstate_list
|
grep -q "\-$arch-" $sstate_list
|
||||||
[ $? -eq 0 ] && ava_archs="$ava_archs $arch"
|
[ $? -eq 0 ] && ava_archs="$ava_archs $arch"
|
||||||
done
|
done
|
||||||
echo "Done"
|
echo "Done"
|
||||||
@@ -151,24 +150,24 @@ remove_duplicated () {
|
|||||||
|
|
||||||
for suffix in $sstate_suffixes; do
|
for suffix in $sstate_suffixes; do
|
||||||
# Save the file list to a file, some suffix's file may not exist
|
# Save the file list to a file, some suffix's file may not exist
|
||||||
ls *_$suffix.tgz >$list_suffix 2>/dev/null
|
grep "sstate-.*_$suffix.tgz" $sstate_list >$list_suffix 2>/dev/null
|
||||||
local deleted=0
|
local deleted=0
|
||||||
echo -n "Figuring out the sstate-xxx_$suffix.tgz ... "
|
echo -n "Figuring out the sstate-xxx_$suffix.tgz ... "
|
||||||
# There are at list 6 dashes (-) after arch, use this to avoid the
|
# There are at list 6 dashes (-) after arch, use this to avoid the
|
||||||
# greedy match of sed.
|
# greedy match of sed.
|
||||||
file_names=`for arch in $ava_archs; do
|
file_names=`for arch in $ava_archs; do
|
||||||
sed -ne 's/^\(sstate-.*\)-'"$arch"'-.*-.*-.*-.*-.*-.*/\1/p' $list_suffix
|
sed -ne 's#.*/../\(sstate-.*\)-'"$arch"'-.*-.*-.*-.*-.*-.*#\1#p' $list_suffix
|
||||||
done | sort -u`
|
done | sort -u`
|
||||||
|
|
||||||
fn_tmp=`mktemp` || exit 1
|
fn_tmp=`mktemp` || exit 1
|
||||||
for fn in $file_names; do
|
for fn in $file_names; do
|
||||||
[ -z "$verbose" ] || echo "Analyzing $fn-xxx_$suffix.tgz"
|
[ -z "$verbose" ] || echo "Analyzing $fn-xxx_$suffix.tgz"
|
||||||
for arch in $ava_archs; do
|
for arch in $ava_archs; do
|
||||||
grep -h "^$fn-$arch-" $list_suffix >>$fn_tmp
|
grep -h "/../$fn-$arch-" $list_suffix >>$fn_tmp
|
||||||
done
|
done
|
||||||
# Use the access time, also delete the .siginfo file
|
# Use the access time, also delete the .siginfo file
|
||||||
to_del=$(ls -u $(cat $fn_tmp) | sed -n '1!p' | sed -e 'p' -e 's/$/.siginfo/')
|
to_del=$(ls -u $(cat $fn_tmp) | sed -n '1!p' | sed -e 'p' -e 's/$/.siginfo/')
|
||||||
echo $to_del >>$remove_listdir/sstate-xxx_$suffix
|
[ "$to_del" = "" ] || echo $to_del >>$remove_listdir/sstate-xxx_$suffix
|
||||||
let deleted=$deleted+`echo $to_del | wc -w`
|
let deleted=$deleted+`echo $to_del | wc -w`
|
||||||
rm -f $fn_tmp
|
rm -f $fn_tmp
|
||||||
done
|
done
|
||||||
@@ -181,7 +180,10 @@ remove_duplicated () {
|
|||||||
if [ "$confirm" = "y" -o "$confirm" = "Y" ]; then
|
if [ "$confirm" = "y" -o "$confirm" = "Y" ]; then
|
||||||
for list in `ls $remove_listdir/`; do
|
for list in `ls $remove_listdir/`; do
|
||||||
echo -n "Removing $list.tgz (`cat $remove_listdir/$list | wc -w` files) ... "
|
echo -n "Removing $list.tgz (`cat $remove_listdir/$list | wc -w` files) ... "
|
||||||
rm -f $verbose `cat $remove_listdir/$list`
|
# Remove them one by one to avoid the argument list too long error
|
||||||
|
for i in `cat $remove_listdir/$list`; do
|
||||||
|
rm -f $verbose $i
|
||||||
|
done
|
||||||
echo "Done"
|
echo "Done"
|
||||||
done
|
done
|
||||||
echo "$total_deleted files have been removed!"
|
echo "$total_deleted files have been removed!"
|
||||||
@@ -200,7 +202,7 @@ rm_by_stamps (){
|
|||||||
|
|
||||||
local cache_list=`mktemp` || exit 1
|
local cache_list=`mktemp` || exit 1
|
||||||
local keep_list=`mktemp` || exit 1
|
local keep_list=`mktemp` || exit 1
|
||||||
local mv_to_dir=`mktemp -d -p $cache_dir` || exit 1
|
local rm_list=`mktemp` || exit 1
|
||||||
local suffixes
|
local suffixes
|
||||||
local sums
|
local sums
|
||||||
local all_sums
|
local all_sums
|
||||||
@@ -218,7 +220,7 @@ rm_by_stamps (){
|
|||||||
echo "Done"
|
echo "Done"
|
||||||
|
|
||||||
# Save all the state file list to a file
|
# Save all the state file list to a file
|
||||||
ls $cache_dir/sstate-*.tgz >$cache_list
|
find $cache_dir -path '*/??/sstate-*.tgz' | sort -u -o $cache_list
|
||||||
|
|
||||||
echo -n "Figuring out the files which will be removed ... "
|
echo -n "Figuring out the files which will be removed ... "
|
||||||
for i in $all_sums; do
|
for i in $all_sums; do
|
||||||
@@ -227,21 +229,18 @@ rm_by_stamps (){
|
|||||||
echo "Done"
|
echo "Done"
|
||||||
|
|
||||||
if [ -s $keep_list ]; then
|
if [ -s $keep_list ]; then
|
||||||
let total_deleted=(`cat $cache_list | wc -w` - `cat $keep_list | wc -l`)*2
|
sort -u $keep_list -o $keep_list
|
||||||
|
comm -1 -3 $keep_list $cache_list > $rm_list
|
||||||
|
let total_deleted=(`cat $rm_list | wc -w`)*2
|
||||||
|
|
||||||
if [ $total_deleted -gt 0 ]; then
|
if [ $total_deleted -gt 0 ]; then
|
||||||
read_confirm
|
read_confirm
|
||||||
if [ "$confirm" = "y" -o "$confirm" = "Y" ]; then
|
if [ "$confirm" = "y" -o "$confirm" = "Y" ]; then
|
||||||
echo "Removing sstate cache files ... ($total_deleted files)"
|
echo "Removing sstate cache files ... ($total_deleted files)"
|
||||||
# Save the file which needs to be kept, remove the others,
|
# Remove them one by one to avoid the argument list too long error
|
||||||
# then move it back
|
for i in `cat $rm_list`; do
|
||||||
for i in `cat $keep_list`; do
|
rm -f $verbose $i $i.siginfo
|
||||||
mv $i $mv_to_dir
|
|
||||||
mv $i.siginfo $mv_to_dir || true
|
|
||||||
done
|
done
|
||||||
rm -f $verbose $cache_dir/sstate-*.tgz
|
|
||||||
rm -f $verbose $cache_dir/sstate-*.tgz.siginfo
|
|
||||||
mv $mv_to_dir/* $cache_dir/
|
|
||||||
echo "$total_deleted files have been removed"
|
echo "$total_deleted files have been removed"
|
||||||
else
|
else
|
||||||
do_nothing
|
do_nothing
|
||||||
@@ -255,7 +254,7 @@ rm_by_stamps (){
|
|||||||
|
|
||||||
rm -f $cache_list
|
rm -f $cache_list
|
||||||
rm -f $keep_list
|
rm -f $keep_list
|
||||||
rmdir $mv_to_dir
|
rm -f $rm_list
|
||||||
}
|
}
|
||||||
|
|
||||||
# Parse arguments
|
# Parse arguments
|
||||||
|
|||||||
Reference in New Issue
Block a user