tazpkg diff modules/remove @ rev 844
Finish modularization. Beta release: still have few FIXMEs and TODOs.
author | Aleksej Bobylev <al.bobylev@gmail.com> |
---|---|
date | Mon Oct 05 03:53:47 2015 +0300 (2015-10-05) |
parents | a02e36d44d06 |
children | b6daeaa95431 |
line diff
1.1 --- a/modules/remove Fri Aug 28 16:10:34 2015 +0300 1.2 +++ b/modules/remove Mon Oct 05 03:53:47 2015 +0300 1.3 @@ -45,6 +45,39 @@ 1.4 im() { tty -s; } 1.5 1.6 1.7 +# Block of receipt function callers 1.8 +# Why? "Bad" receipt sourcing can redefine some vital TazPkg variables. 1.9 +# Few receipts function should be patched now. 1.10 + 1.11 +# Input: $1 = path to the receipt to be processed 1.12 + 1.13 +call_pre_remove() { 1.14 + local tmp 1.15 + if grep -q '^pre_remove()' "$1"; then 1.16 + action 'Execute pre-remove commands...' 1.17 + tmp="$(mktemp)" 1.18 + cp "$1" "$tmp" 1.19 + sed -i 's|$1/*$INSTALLED|$INSTALLED|g' "$tmp" 1.20 + ( . "$tmp"; pre_remove "$root" ) 1.21 + status 1.22 + rm "$tmp" 1.23 + fi 1.24 +} 1.25 + 1.26 +call_post_remove() { 1.27 + local tmp 1.28 + if grep -q '^post_remove()' "$1"; then 1.29 + action 'Execute post-remove commands...' 1.30 + tmp="$(mktemp)" 1.31 + cp "$1" "$tmp" 1.32 + sed -i 's|$1/*$INSTALLED|$INSTALLED|g' "$tmp" 1.33 + ( . "$tmp"; post_remove "$root" ) 1.34 + status 1.35 + rm "$tmp" 1.36 + fi 1.37 +} 1.38 + 1.39 + 1.40 1.41 1.42 PACKAGE="$1" 1.43 @@ -88,11 +121,8 @@ 1.44 title 'Removing package "%s"' "$PACKAGE" 1.45 1.46 # [1/4] Pre-remove commands 1.47 -if grep -q ^pre_remove "$INSTALLED/$PACKAGE/receipt"; then 1.48 - action 'Execution of pre-remove commands...' 1.49 - pre_remove 1.50 - status 1.51 -fi 1.52 +call_pre_remove "$INSTALLED/$PACKAGE/receipt" 1.53 + 1.54 1.55 # [2/4] Removing files 1.56 action 'Removing all files installed...' 1.57 @@ -115,11 +145,7 @@ 1.58 status 1.59 1.60 # [3/4] Post-remove commands 1.61 -if grep -q ^post_remove "$INSTALLED/$PACKAGE/receipt"; then 1.62 - action 'Execution of post-remove commands...' 1.63 - post_remove 1.64 - status 1.65 -fi 1.66 +call_post_remove "$INSTALLED/$PACKAGE/receipt" 1.67 1.68 # [4/4] Remove package receipt and remove it from databases 1.69 action 'Removing package receipt...'