* [PATCH 0/1] sstate-cache-management.sh: update for the SSTATE_MIRRORS @ 2012-08-20 8:29 Robert Yang 2012-08-20 8:29 ` [PATCH 1/1] " Robert Yang 0 siblings, 1 reply; 4+ messages in thread From: Robert Yang @ 2012-08-20 8:29 UTC (permalink / raw) To: openembedded-core; +Cc: Zhenfeng.Zhao The following changes since commit 91ece5d5668ee1adb5c5e3d757426a0d5187bd84: libpam: Fix missing DESTDIR for a mkdir causing build failures (2012-08-19 13:32:06 +0100) are available in the git repository at: git://git.pokylinux.org/poky-contrib robert/sstate-manage http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=robert/sstate-manage Robert Yang (1): sstate-cache-management.sh: update for the SSTATE_MIRRORS scripts/sstate-cache-management.sh | 82 +++++++++++++++++++++++++++++------ 1 files changed, 68 insertions(+), 14 deletions(-) ^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 1/1] sstate-cache-management.sh: update for the SSTATE_MIRRORS 2012-08-20 8:29 [PATCH 0/1] sstate-cache-management.sh: update for the SSTATE_MIRRORS Robert Yang @ 2012-08-20 8:29 ` Robert Yang 2012-08-20 8:42 ` Martin Jansa 0 siblings, 1 reply; 4+ messages in thread From: Robert Yang @ 2012-08-20 8:29 UTC (permalink / raw) To: openembedded-core; +Cc: Zhenfeng.Zhao Several fixes: * We have put the sstate file to SSTATE_DIR/??/ currently, but the sstate file on the SSTATE_MIRRORS or the obsolete one is still in SSTATE_DIR/ (no subdir), update the script to support manage them. * Remove the related ".done" file in the SSTATE_DIR. * Add a "-L, --follow-symlink" which will remove both the symbol link and the destination file * Change the "ls -u file_list" (access time) to "ls -t file_list" (change tiem), since the "ls -u" and readlink will change the symlink's access time, which would make the result inconsistent. A solution is save the access time before every "ls -u" and "readlink", save it back after the command, but this would cause performance lost since it needs check each file and modify the symlink's status. Use the "-t" doesn't cause much different. [YOCTO #2897] Signed-off-by: Robert Yang <liezhi.yang@windriver.com> --- scripts/sstate-cache-management.sh | 82 +++++++++++++++++++++++++++++------ 1 files changed, 68 insertions(+), 14 deletions(-) diff --git a/scripts/sstate-cache-management.sh b/scripts/sstate-cache-management.sh index c3791d2..3a5980c 100755 --- a/scripts/sstate-cache-management.sh +++ b/scripts/sstate-cache-management.sh @@ -19,6 +19,7 @@ # Global vars cache_dir= confirm= +fsym= total_deleted=0 verbose= @@ -58,6 +59,9 @@ Options: Conflicts with --remove-duplicated. + -L, --follow-symlink + Rmove both the symbol link and the destination file, default: no. + -y, --yes Automatic yes to prompts; assume "yes" as answer to all prompts and run non-interactively. @@ -104,6 +108,47 @@ echo_error () { exit 1 } +# Generate the remove list: +# +# * Add .done/.siginfo to the remove list +# * Add destination of symlink to the remove list +# +# $1: output file, others: sstate cache file (.tgz) +gen_rmlist (){ + local rmlist_file="$1" + shift + local files="$@" + for i in $files; do + echo $i >> $rmlist_file + # Add the ".siginfo" + if [ -e $i.siginfo ]; then + echo $i.siginfo >> $rmlist_file + fi + # Add the destination of symlink + if [ -L "$i" ]; then + if [ "$fsym" = "y" ]; then + dest="`readlink -e $i`" + if [ -n "$dest" ]; then + echo $dest >> $rmlist_file + # Remove the .siginfo when .tgz is removed + if [ -f "$dest.siginfo" ]; then + echo $dest.siginfo >> $rmlist_file + fi + fi + fi + # Add the ".tgz.done" and ".siginfo.done" (may exist in the future) + base_fn="${i##/*/}" + t_fn="$base_fn.done" + s_fn="$base_fn.siginfo.done" + for d in $t_fn $s_fn; do + if [ -f $cache_dir/$d ]; then + echo $cache_dir/$d >> $rmlist_file + fi + done + fi + done +} + # Remove the duplicated cache files for the pkg, keep the newest one remove_duplicated () { @@ -134,7 +179,7 @@ remove_duplicated () { # Save all the sstate files in a file sstate_list=`mktemp` || exit 1 - find $cache_dir -path '*/??/sstate-*.tgz' >$sstate_list + find $cache_dir -name 'sstate-*.tgz' >$sstate_list echo -n "Figuring out the archs in the sstate cache dir ... " for arch in $all_archs; do grep -q "\-$arch-" $sstate_list @@ -156,21 +201,22 @@ remove_duplicated () { # There are at list 6 dashes (-) after arch, use this to avoid the # greedy match of sed. 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` fn_tmp=`mktemp` || exit 1 + rm_list="$remove_listdir/sstate-xxx_$suffix" for fn in $file_names; do [ -z "$verbose" ] || echo "Analyzing $fn-xxx_$suffix.tgz" for arch in $ava_archs; do - grep -h "/../$fn-$arch-" $list_suffix >>$fn_tmp + grep -h "/$fn-$arch-" $list_suffix >>$fn_tmp done # 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" = "" ] || echo $to_del >>$remove_listdir/sstate-xxx_$suffix - let deleted=$deleted+`echo $to_del | wc -w` + to_del=$(ls -t $(cat $fn_tmp) | sed -n '1!p') rm -f $fn_tmp + gen_rmlist $rm_list "$to_del" done + [ ! -s "$rm_list" ] || deleted=`cat $rm_list | wc -l` echo "($deleted files will be removed)" let total_deleted=$total_deleted+$deleted done @@ -213,33 +259,37 @@ rm_by_stamps (){ # Figure out all the md5sums in the stamps dir. echo -n "Figuring out all the md5sums in stamps dir ... " for i in $suffixes; do - sums=`find $stamps -maxdepth 2 -name "*\.do_$i\.sigdata.*" | \ - sed 's#.*\.sigdata\.##' | sort -u` + # There is no "\.sigdata" but "_setcene" when it is mirrored + # from the SSTATE_MIRRORS, use them to figure out the sum. + sums=`find $stamps -maxdepth 2 -name "*.do_$i.*" \ + -o -name "*.do_${i}_setscene.*" | \ + sed -ne 's#.*_setscene\.##p' -e 's#.*\.sigdata\.##p' | \ + sed -e 's#\..*##' | sort -u` all_sums="$all_sums $sums" done echo "Done" # Save all the state file list to a file - find $cache_dir -path '*/??/sstate-*.tgz' | sort -u -o $cache_list + find $cache_dir -name 'sstate-*.tgz' | sort -u -o $cache_list echo -n "Figuring out the files which will be removed ... " for i in $all_sums; do - grep ".*-$i.*" $cache_list >>$keep_list + grep ".*-${i}_*" $cache_list >>$keep_list done echo "Done" if [ -s $keep_list ]; then 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 - + to_del=`comm -1 -3 $keep_list $cache_list` + gen_rmlist $rm_list "$to_del" + let total_deleted=(`cat $rm_list | wc -w`) if [ $total_deleted -gt 0 ]; then read_confirm if [ "$confirm" = "y" -o "$confirm" = "Y" ]; then echo "Removing sstate cache files ... ($total_deleted files)" # Remove them one by one to avoid the argument list too long error for i in `cat $rm_list`; do - rm -f $verbose $i $i.siginfo + rm -f $verbose $i done echo "$total_deleted files have been removed" else @@ -273,6 +323,10 @@ while [ -n "$1" ]; do confirm="y" shift ;; + --follow-symlink|-L) + fsym="y" + shift + ;; --extra-layer=*) extra_layers=`echo $1 | sed -e 's#^--extra-layer=##' -e 's#,# #g'` [ -n "$extra_layers" ] || echo_error "Invalid extra layer $i" -- 1.7.1 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH 1/1] sstate-cache-management.sh: update for the SSTATE_MIRRORS 2012-08-20 8:29 ` [PATCH 1/1] " Robert Yang @ 2012-08-20 8:42 ` Martin Jansa 2012-08-20 9:23 ` Robert Yang 0 siblings, 1 reply; 4+ messages in thread From: Martin Jansa @ 2012-08-20 8:42 UTC (permalink / raw) To: Robert Yang; +Cc: Zhenfeng.Zhao, openembedded-core [-- Attachment #1: Type: text/plain, Size: 7961 bytes --] On Mon, Aug 20, 2012 at 04:29:46PM +0800, Robert Yang wrote: > Several fixes: > * We have put the sstate file to SSTATE_DIR/??/ currently, but the > sstate file on the SSTATE_MIRRORS or the obsolete one is still in > SSTATE_DIR/ (no subdir), update the script to support manage them. Does this work with native/cross which are in SSTATE_DIR/LSB/??/ ? Cheers, > > * Remove the related ".done" file in the SSTATE_DIR. > > * Add a "-L, --follow-symlink" which will remove both the symbol link and > the destination file > > * Change the "ls -u file_list" (access time) to "ls -t file_list" > (change tiem), since the "ls -u" and readlink will change the > symlink's access time, which would make the result inconsistent. > A solution is save the access time before every "ls -u" and "readlink", > save it back after the command, but this would cause performance lost > since it needs check each file and modify the symlink's status. Use > the "-t" doesn't cause much different. > > [YOCTO #2897] > > Signed-off-by: Robert Yang <liezhi.yang@windriver.com> > --- > scripts/sstate-cache-management.sh | 82 +++++++++++++++++++++++++++++------ > 1 files changed, 68 insertions(+), 14 deletions(-) > > diff --git a/scripts/sstate-cache-management.sh b/scripts/sstate-cache-management.sh > index c3791d2..3a5980c 100755 > --- a/scripts/sstate-cache-management.sh > +++ b/scripts/sstate-cache-management.sh > @@ -19,6 +19,7 @@ > # Global vars > cache_dir= > confirm= > +fsym= > total_deleted=0 > verbose= > > @@ -58,6 +59,9 @@ Options: > > Conflicts with --remove-duplicated. > > + -L, --follow-symlink > + Rmove both the symbol link and the destination file, default: no. > + > -y, --yes > Automatic yes to prompts; assume "yes" as answer to all prompts > and run non-interactively. > @@ -104,6 +108,47 @@ echo_error () { > exit 1 > } > > +# Generate the remove list: > +# > +# * Add .done/.siginfo to the remove list > +# * Add destination of symlink to the remove list > +# > +# $1: output file, others: sstate cache file (.tgz) > +gen_rmlist (){ > + local rmlist_file="$1" > + shift > + local files="$@" > + for i in $files; do > + echo $i >> $rmlist_file > + # Add the ".siginfo" > + if [ -e $i.siginfo ]; then > + echo $i.siginfo >> $rmlist_file > + fi > + # Add the destination of symlink > + if [ -L "$i" ]; then > + if [ "$fsym" = "y" ]; then > + dest="`readlink -e $i`" > + if [ -n "$dest" ]; then > + echo $dest >> $rmlist_file > + # Remove the .siginfo when .tgz is removed > + if [ -f "$dest.siginfo" ]; then > + echo $dest.siginfo >> $rmlist_file > + fi > + fi > + fi > + # Add the ".tgz.done" and ".siginfo.done" (may exist in the future) > + base_fn="${i##/*/}" > + t_fn="$base_fn.done" > + s_fn="$base_fn.siginfo.done" > + for d in $t_fn $s_fn; do > + if [ -f $cache_dir/$d ]; then > + echo $cache_dir/$d >> $rmlist_file > + fi > + done > + fi > + done > +} > + > # Remove the duplicated cache files for the pkg, keep the newest one > remove_duplicated () { > > @@ -134,7 +179,7 @@ remove_duplicated () { > > # Save all the sstate files in a file > sstate_list=`mktemp` || exit 1 > - find $cache_dir -path '*/??/sstate-*.tgz' >$sstate_list > + find $cache_dir -name 'sstate-*.tgz' >$sstate_list > echo -n "Figuring out the archs in the sstate cache dir ... " > for arch in $all_archs; do > grep -q "\-$arch-" $sstate_list > @@ -156,21 +201,22 @@ remove_duplicated () { > # There are at list 6 dashes (-) after arch, use this to avoid the > # greedy match of sed. > 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` > > fn_tmp=`mktemp` || exit 1 > + rm_list="$remove_listdir/sstate-xxx_$suffix" > for fn in $file_names; do > [ -z "$verbose" ] || echo "Analyzing $fn-xxx_$suffix.tgz" > for arch in $ava_archs; do > - grep -h "/../$fn-$arch-" $list_suffix >>$fn_tmp > + grep -h "/$fn-$arch-" $list_suffix >>$fn_tmp > done > # 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" = "" ] || echo $to_del >>$remove_listdir/sstate-xxx_$suffix > - let deleted=$deleted+`echo $to_del | wc -w` > + to_del=$(ls -t $(cat $fn_tmp) | sed -n '1!p') > rm -f $fn_tmp > + gen_rmlist $rm_list "$to_del" > done > + [ ! -s "$rm_list" ] || deleted=`cat $rm_list | wc -l` > echo "($deleted files will be removed)" > let total_deleted=$total_deleted+$deleted > done > @@ -213,33 +259,37 @@ rm_by_stamps (){ > # Figure out all the md5sums in the stamps dir. > echo -n "Figuring out all the md5sums in stamps dir ... " > for i in $suffixes; do > - sums=`find $stamps -maxdepth 2 -name "*\.do_$i\.sigdata.*" | \ > - sed 's#.*\.sigdata\.##' | sort -u` > + # There is no "\.sigdata" but "_setcene" when it is mirrored > + # from the SSTATE_MIRRORS, use them to figure out the sum. > + sums=`find $stamps -maxdepth 2 -name "*.do_$i.*" \ > + -o -name "*.do_${i}_setscene.*" | \ > + sed -ne 's#.*_setscene\.##p' -e 's#.*\.sigdata\.##p' | \ > + sed -e 's#\..*##' | sort -u` > all_sums="$all_sums $sums" > done > echo "Done" > > # Save all the state file list to a file > - find $cache_dir -path '*/??/sstate-*.tgz' | sort -u -o $cache_list > + find $cache_dir -name 'sstate-*.tgz' | sort -u -o $cache_list > > echo -n "Figuring out the files which will be removed ... " > for i in $all_sums; do > - grep ".*-$i.*" $cache_list >>$keep_list > + grep ".*-${i}_*" $cache_list >>$keep_list > done > echo "Done" > > if [ -s $keep_list ]; then > 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 > - > + to_del=`comm -1 -3 $keep_list $cache_list` > + gen_rmlist $rm_list "$to_del" > + let total_deleted=(`cat $rm_list | wc -w`) > if [ $total_deleted -gt 0 ]; then > read_confirm > if [ "$confirm" = "y" -o "$confirm" = "Y" ]; then > echo "Removing sstate cache files ... ($total_deleted files)" > # Remove them one by one to avoid the argument list too long error > for i in `cat $rm_list`; do > - rm -f $verbose $i $i.siginfo > + rm -f $verbose $i > done > echo "$total_deleted files have been removed" > else > @@ -273,6 +323,10 @@ while [ -n "$1" ]; do > confirm="y" > shift > ;; > + --follow-symlink|-L) > + fsym="y" > + shift > + ;; > --extra-layer=*) > extra_layers=`echo $1 | sed -e 's#^--extra-layer=##' -e 's#,# #g'` > [ -n "$extra_layers" ] || echo_error "Invalid extra layer $i" > -- > 1.7.1 > > > _______________________________________________ > Openembedded-core mailing list > Openembedded-core@lists.openembedded.org > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core -- Martin 'JaMa' Jansa jabber: Martin.Jansa@gmail.com [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 205 bytes --] ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 1/1] sstate-cache-management.sh: update for the SSTATE_MIRRORS 2012-08-20 8:42 ` Martin Jansa @ 2012-08-20 9:23 ` Robert Yang 0 siblings, 0 replies; 4+ messages in thread From: Robert Yang @ 2012-08-20 9:23 UTC (permalink / raw) To: Martin Jansa; +Cc: Zhenfeng.Zhao, openembedded-core On 08/20/2012 04:42 PM, Martin Jansa wrote: > On Mon, Aug 20, 2012 at 04:29:46PM +0800, Robert Yang wrote: >> Several fixes: >> * We have put the sstate file to SSTATE_DIR/??/ currently, but the >> sstate file on the SSTATE_MIRRORS or the obsolete one is still in >> SSTATE_DIR/ (no subdir), update the script to support manage them. > > Does this work with native/cross which are in SSTATE_DIR/LSB/??/ ? > Yes, it works, it doesn't care about the files' layout, the "native/cross" is a part of PN, it doesn't mix them with the target recipe, for example, sstate-perl-native doesn't mix with sstate-perl, they are two kinds of sstate files, and will be handled separately. // Robert > Cheers, > >> >> * Remove the related ".done" file in the SSTATE_DIR. >> >> * Add a "-L, --follow-symlink" which will remove both the symbol link and >> the destination file >> >> * Change the "ls -u file_list" (access time) to "ls -t file_list" >> (change tiem), since the "ls -u" and readlink will change the >> symlink's access time, which would make the result inconsistent. >> A solution is save the access time before every "ls -u" and "readlink", >> save it back after the command, but this would cause performance lost >> since it needs check each file and modify the symlink's status. Use >> the "-t" doesn't cause much different. >> >> [YOCTO #2897] >> >> Signed-off-by: Robert Yang <liezhi.yang@windriver.com> >> --- >> scripts/sstate-cache-management.sh | 82 +++++++++++++++++++++++++++++------ >> 1 files changed, 68 insertions(+), 14 deletions(-) >> >> diff --git a/scripts/sstate-cache-management.sh b/scripts/sstate-cache-management.sh >> index c3791d2..3a5980c 100755 >> --- a/scripts/sstate-cache-management.sh >> +++ b/scripts/sstate-cache-management.sh >> @@ -19,6 +19,7 @@ >> # Global vars >> cache_dir= >> confirm= >> +fsym= >> total_deleted=0 >> verbose= >> >> @@ -58,6 +59,9 @@ Options: >> >> Conflicts with --remove-duplicated. >> >> + -L, --follow-symlink >> + Rmove both the symbol link and the destination file, default: no. >> + >> -y, --yes >> Automatic yes to prompts; assume "yes" as answer to all prompts >> and run non-interactively. >> @@ -104,6 +108,47 @@ echo_error () { >> exit 1 >> } >> >> +# Generate the remove list: >> +# >> +# * Add .done/.siginfo to the remove list >> +# * Add destination of symlink to the remove list >> +# >> +# $1: output file, others: sstate cache file (.tgz) >> +gen_rmlist (){ >> + local rmlist_file="$1" >> + shift >> + local files="$@" >> + for i in $files; do >> + echo $i >> $rmlist_file >> + # Add the ".siginfo" >> + if [ -e $i.siginfo ]; then >> + echo $i.siginfo >> $rmlist_file >> + fi >> + # Add the destination of symlink >> + if [ -L "$i" ]; then >> + if [ "$fsym" = "y" ]; then >> + dest="`readlink -e $i`" >> + if [ -n "$dest" ]; then >> + echo $dest >> $rmlist_file >> + # Remove the .siginfo when .tgz is removed >> + if [ -f "$dest.siginfo" ]; then >> + echo $dest.siginfo >> $rmlist_file >> + fi >> + fi >> + fi >> + # Add the ".tgz.done" and ".siginfo.done" (may exist in the future) >> + base_fn="${i##/*/}" >> + t_fn="$base_fn.done" >> + s_fn="$base_fn.siginfo.done" >> + for d in $t_fn $s_fn; do >> + if [ -f $cache_dir/$d ]; then >> + echo $cache_dir/$d >> $rmlist_file >> + fi >> + done >> + fi >> + done >> +} >> + >> # Remove the duplicated cache files for the pkg, keep the newest one >> remove_duplicated () { >> >> @@ -134,7 +179,7 @@ remove_duplicated () { >> >> # Save all the sstate files in a file >> sstate_list=`mktemp` || exit 1 >> - find $cache_dir -path '*/??/sstate-*.tgz' >$sstate_list >> + find $cache_dir -name 'sstate-*.tgz' >$sstate_list >> echo -n "Figuring out the archs in the sstate cache dir ... " >> for arch in $all_archs; do >> grep -q "\-$arch-" $sstate_list >> @@ -156,21 +201,22 @@ remove_duplicated () { >> # There are at list 6 dashes (-) after arch, use this to avoid the >> # greedy match of sed. >> 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` >> >> fn_tmp=`mktemp` || exit 1 >> + rm_list="$remove_listdir/sstate-xxx_$suffix" >> for fn in $file_names; do >> [ -z "$verbose" ] || echo "Analyzing $fn-xxx_$suffix.tgz" >> for arch in $ava_archs; do >> - grep -h "/../$fn-$arch-" $list_suffix >>$fn_tmp >> + grep -h "/$fn-$arch-" $list_suffix >>$fn_tmp >> done >> # 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" = "" ] || echo $to_del >>$remove_listdir/sstate-xxx_$suffix >> - let deleted=$deleted+`echo $to_del | wc -w` >> + to_del=$(ls -t $(cat $fn_tmp) | sed -n '1!p') >> rm -f $fn_tmp >> + gen_rmlist $rm_list "$to_del" >> done >> + [ ! -s "$rm_list" ] || deleted=`cat $rm_list | wc -l` >> echo "($deleted files will be removed)" >> let total_deleted=$total_deleted+$deleted >> done >> @@ -213,33 +259,37 @@ rm_by_stamps (){ >> # Figure out all the md5sums in the stamps dir. >> echo -n "Figuring out all the md5sums in stamps dir ... " >> for i in $suffixes; do >> - sums=`find $stamps -maxdepth 2 -name "*\.do_$i\.sigdata.*" | \ >> - sed 's#.*\.sigdata\.##' | sort -u` >> + # There is no "\.sigdata" but "_setcene" when it is mirrored >> + # from the SSTATE_MIRRORS, use them to figure out the sum. >> + sums=`find $stamps -maxdepth 2 -name "*.do_$i.*" \ >> + -o -name "*.do_${i}_setscene.*" | \ >> + sed -ne 's#.*_setscene\.##p' -e 's#.*\.sigdata\.##p' | \ >> + sed -e 's#\..*##' | sort -u` >> all_sums="$all_sums $sums" >> done >> echo "Done" >> >> # Save all the state file list to a file >> - find $cache_dir -path '*/??/sstate-*.tgz' | sort -u -o $cache_list >> + find $cache_dir -name 'sstate-*.tgz' | sort -u -o $cache_list >> >> echo -n "Figuring out the files which will be removed ... " >> for i in $all_sums; do >> - grep ".*-$i.*" $cache_list >>$keep_list >> + grep ".*-${i}_*" $cache_list >>$keep_list >> done >> echo "Done" >> >> if [ -s $keep_list ]; then >> 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 >> - >> + to_del=`comm -1 -3 $keep_list $cache_list` >> + gen_rmlist $rm_list "$to_del" >> + let total_deleted=(`cat $rm_list | wc -w`) >> if [ $total_deleted -gt 0 ]; then >> read_confirm >> if [ "$confirm" = "y" -o "$confirm" = "Y" ]; then >> echo "Removing sstate cache files ... ($total_deleted files)" >> # Remove them one by one to avoid the argument list too long error >> for i in `cat $rm_list`; do >> - rm -f $verbose $i $i.siginfo >> + rm -f $verbose $i >> done >> echo "$total_deleted files have been removed" >> else >> @@ -273,6 +323,10 @@ while [ -n "$1" ]; do >> confirm="y" >> shift >> ;; >> + --follow-symlink|-L) >> + fsym="y" >> + shift >> + ;; >> --extra-layer=*) >> extra_layers=`echo $1 | sed -e 's#^--extra-layer=##' -e 's#,# #g'` >> [ -n "$extra_layers" ] || echo_error "Invalid extra layer $i" >> -- >> 1.7.1 >> >> >> _______________________________________________ >> Openembedded-core mailing list >> Openembedded-core@lists.openembedded.org >> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core > ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2012-08-20 9:35 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-08-20 8:29 [PATCH 0/1] sstate-cache-management.sh: update for the SSTATE_MIRRORS Robert Yang 2012-08-20 8:29 ` [PATCH 1/1] " Robert Yang 2012-08-20 8:42 ` Martin Jansa 2012-08-20 9:23 ` Robert Yang
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox