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