--- trunk/mage/usr/lib/mage/mage4.functions.sh 2014/01/06 12:53:31 2364 +++ trunk/mage/usr/lib/mage/mage4.functions.sh 2014/07/22 14:21:01 2724 @@ -2563,7 +2563,6 @@ local SDEPEND local PROVIDE local PKGTYPE - local MAGE_TARGETS local SPLIT_PACKAGE_BASE local preinstall local postinstall @@ -2685,20 +2684,7 @@ echo B:${pbuild} fi - if [[ -n ${MAGE_TARGETS} ]] - then - # basic svn compat - if [[ -d ${SMAGESCRIPTSDIR}/.svn ]] - then - for i in ${SMAGESCRIPTSDIR}/*/${pname/${MAGE_TARGETS}/}/${pname/${MAGE_TARGETS}/}-${pver}-${pbuild}.smage2 - do - smage2file="${i}" - done - else - smage2file=${SMAGESCRIPTSDIR}/${pname/${MAGE_TARGETS}/}/${pname/${MAGE_TARGETS}/}-${pver}-${pbuild}.smage2 - fi - - elif [[ -n ${SPLIT_PACKAGE_BASE} ]] + if [[ -n ${SPLIT_PACKAGE_BASE} ]] then # basic svn compat if [[ -d ${SMAGESCRIPTSDIR}/.svn ]] @@ -3068,6 +3054,65 @@ 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 + case $1 in + --method) shift; method="$1" ;; + esac + shift + 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 @@ -3479,7 +3524,7 @@ MAGE_FEATURES_CURRENT=( ${MAGE_FEATURES_CURRENT[*]} "${feature}" ) fi - export MAGE_FEATURE_CURRENT + export MAGE_FEATURES_CURRENT done }