--- trunk/mage/usr/lib/mage/mage4.functions.sh 2014/01/06 13:33:12 2370 +++ trunk/mage/usr/lib/mage/mage4.functions.sh 2014/01/06 14:09:10 2371 @@ -3054,6 +3054,68 @@ unset -f postremove } +# rerun_pkgfunctions [method] pkg1 pkg2 pkg3 +rerun_pkgfunctions() +{ + local method + local list + local pcat + local pname + local pver + local pbuild + local magefile + local i + + # very basic getops + for i in $* + do + case $1 in + --method) shift; method="$1" ;; + esac + shift + done + local list="$@" + + # sanity check + case ${method} in + preinstall|postinstall) ;; + preremove|postremove) ;; + *) die "rerun_pkgfunctions(): Unknown method '${method}'." ;; + esac + + if [[ -n ${MROOT} ]] + then + echo -ne ${COLRED} + echo "!! running in MROOT=${MROOT}" + echo -ne ${COLDEFAULT} + echo + fi + + for pkg in ${list} + do + pcat=$(dep2pcat ${pkg}) + pname=$(magename2pname ${pkg}) + pver=$(magename2pver ${pkg}) + pbuild=$(magename2pbuild ${pkg}) + magefile="${MROOT}${INSTALLDB}/${pcat}/${pname}-${pver}-${pbuild}/${pname}-${pver}-${pbuild}.mage" + + if [ -e ${magefile} ] + then + source ${magefile} + if [ -n "$(typeset -f ${method})" ] + then + echo -e " ${COLBLUE}***${COLDEFAULT} running ${method} for ${pkg} ... " + ${method} + else + echo "No ${method}() for pkg '${pkg}' defined. Doing nothing." + fi + unset -f preinstall postinstall preremove postremove + else + die "Magefile '${magefile}' does not exist." + fi + done +} + show_etc_update_mesg() { [ ${MAGE_PROTECT_COUNTER} -eq 0 ] && return 0