tazpkg rev 860

remove: using "rmdir -p" instead of loop (thanks Lucas Levrel)
author Aleksej Bobylev <al.bobylev@gmail.com>
date Sat Nov 14 14:41:30 2015 +0200 (2015-11-14)
parents ef81200b8c68
children 602ed53fa812
files modules/remove
line diff
     1.1 --- a/modules/remove	Fri Nov 13 13:56:29 2015 +0200
     1.2 +++ b/modules/remove	Sat Nov 14 14:41:30 2015 +0200
     1.3 @@ -109,7 +109,7 @@
     1.4  action 'Removing all files installed...'
     1.5  
     1.6  # NOTE: package 'faenza-icon-theme' install time: 12s; removing time ~ 11min on my system  o_O
     1.7 -# After optimization: 6s! (Long) for-loops are (big) evil ;)
     1.8 +# After optimization: 3s! (Long) for-loops are (big) evil ;)
     1.9  
    1.10  # NOTE: many packages contains filenames with spaces:
    1.11  #   lzcat /var/lib/tazpkg/files.list.lzma | awk -F" " '{if(NF>2)print $1}' | sed 's|:$||' | uniq
    1.12 @@ -117,7 +117,6 @@
    1.13  IFS=$'\n'
    1.14  
    1.15  files2remove="$(mktemp)"
    1.16 -dirs2remove="$(mktemp)"
    1.17  
    1.18  debug '\nDetermine which files to remove...'
    1.19  if [ -f "$INSTALLED/$PACKAGE/modifiers" ]; then
    1.20 @@ -151,7 +150,7 @@
    1.21  debug 'Removing files...'
    1.22  xargs rm -f < "$files2remove"
    1.23  
    1.24 -debug 'Determine which folders to remove...'
    1.25 +debug 'Removing folders...'
    1.26  awk '
    1.27  BEGIN {
    1.28  	FS = "/"; OFS = "/";
    1.29 @@ -162,17 +161,9 @@
    1.30  	if (! a[$0]) {
    1.31  		a[$0] = 1; print;
    1.32  	}
    1.33 -}' "$files2remove" | sed 's|/$||' > "$dirs2remove"
    1.34 +}' "$files2remove" | xargs rmdir -p 2>/dev/null
    1.35  
    1.36 -debug 'Removing folders...'
    1.37 -for dir2r in $(cat "$dirs2remove"); do
    1.38 -	dir="$dir2r"
    1.39 -	while [ -n "$dir" ]; do
    1.40 -		rmdir "$dir" 2>/dev/null || break
    1.41 -		dir="${dir%/*}"
    1.42 -	done
    1.43 -done
    1.44 -rm "$files2remove" "$dirs2remove"
    1.45 +rm "$files2remove"
    1.46  unset IFS
    1.47  
    1.48  status