--- trunk/mage/usr/lib/mage/depwalker.sh 2011/12/28 10:02:01 1563 +++ trunk/mage/usr/lib/mage/depwalker.sh 2014/01/06 12:35:42 2359 @@ -9,6 +9,14 @@ exit 1 } +decho() +{ + if [[ ${DEBUG} = 1 ]] + then + echo "DEBUG: $@" >&2 + fi +} + # include all needed files [ -f /etc/mage.rc.global ] && \ source /etc/mage.rc.global || \ @@ -27,19 +35,25 @@ echo "Usage: $(basename $0) [command] [arg] ..." echo echo " -h --help shows this help" - echo " -c --pcat categorie of the package" + echo " -c --pcat category of the package" echo " -n --pname name of the package" echo " -v --pver version number of the package" echo " -b --pbuild build number of the package" echo " -m --method which calc method should be used:" - echo " install, srcinstall, depend, srcdepend" - echo " upgrade, srcupgrade" + echo " install, srcinstall, pretend, srcpretend" + echo " upgrade, srcupgrade," + echo " install-build-prerequisites," + echo " pretend-build-prerequisites" + echo " -d --debug enable debug mode" echo - echo "method, name, version and build must be given !" + echo "method, category, name, version and build must be given !" echo exit 1 } +# always default debug=0 +DEBUG=0 + # very basic getops for i in $* do @@ -49,6 +63,7 @@ --pver|-v) shift; PVER="$1" ;; --pbuild|-b) shift; PBUILD="$1" ;; --method|-m) shift; METHOD="$1" ;; + --debug|-d) shift; DEBUG=1 ;; --help|-h) usage ;; esac shift @@ -120,6 +135,10 @@ DFILE="$1" + # debug info + decho "depwalking magefile '${DFILE}'" + decho + source ${DFILE} # forced nodeps @@ -132,10 +151,12 @@ MY_DEPEND="${DEPEND}" # for srcinstall & srcdepend only; SDEPEND also needed - if [[ ${METHOD} = srcinstall ]] || \ - [[ ${METHOD} = srcpretend ]] || \ - [[ ${METHOD} = srcupgrade ]] || \ - [[ ${METHOD} = srcuppretend ]] + if [[ ${METHOD} = srcinstall ]] || + [[ ${METHOD} = srcpretend ]] || + [[ ${METHOD} = srcupgrade ]] || + [[ ${METHOD} = srcuppretend ]] || + [[ ${METHOD} = install-build-prerequisites ]] || + [[ ${METHOD} = pretend-build-prerequisites ]] then # only if SDEPEND is not zero if [ -n "${SDEPEND}" ] @@ -156,11 +177,15 @@ if [ -z "${MY_DEPEND}" ] then + decho "MY_DEPEND is empty; deps of '${DFILE}' ignored" return 1 fi while read SYM DEPNAME do + # debug info + decho "DEPNAME='${DEPNAME}'" + # exclude empty depnames [[ -z ${DEPNAME} ]] && continue @@ -179,6 +204,11 @@ fi HIGHEST_DEPFILE=$(dep2highest_magefile "${DEPNAME}") + if [[ -z ${HIGHEST_DEPFILE} ]] + then + INVALID_DEPS+=" ${DEPNAME}:${DFILE}" + continue + fi PCAT="$(magename2pcat ${HIGHEST_DEPFILE})" PNAME="$(magename2pname ${HIGHEST_DEPFILE})" @@ -191,11 +221,12 @@ #if [ -z "$(echo ${ALLDEPS} | fgrep "${HIGHEST_DEPFILE}")" ] if checklist_alldeps "${HIGHEST_DEPFILE}" then - ### check ob DFILE schon installiert ist ### + ### check if the dependency is already installed ### if [ ! -d ${MROOT}${INSTALLDB}/${PCAT}/${PNAME}-${PVER}-${PBUILD} ] then depwalking ${HIGHEST_DEPFILE} ALLDEPS="${ALLDEPS} ${HIGHEST_DEPFILE}" + decho "added '${HIGHEST_DEPFILE}' to ALLDEPS" fi fi done << EOF @@ -207,7 +238,8 @@ [[ ${METHOD} = pretend ]] || \ [[ ${METHOD} = srcpretend ]] || \ [[ ${METHOD} = uppretend ]] || \ - [[ ${METHOD} = srcuppretend ]] && \ + [[ ${METHOD} = srcuppretend ]] || \ + [[ ${METHOD} = pretend-build-prerequisites ]] && \ echo -n "Calculating dependencies ... " @@ -225,11 +257,18 @@ # get the highest mage file from mage-db MAGEFILE="$(get_highest_magefile ${PCAT} ${PNAME})" + # debug info + decho "dep='${dep}'" + decho "PCAT='${PCAT}'" + decho "PNAME='${PNAME}'" + decho "MAGEFILE='${MAGEFILE}'" + # if no install candidate was found, record this # and process with the next one if [[ -z ${MAGEFILE} ]] then NO_UPGRADE_CANDIDATE="${NO_UPGRADE_CANDIDATE} ${PCAT}/${PNAME}" + decho "added to NO_UPGRADE_CANDIDATE" continue fi @@ -237,6 +276,10 @@ PVER="$(magename2pver ${MAGEFILE})" PBUILD="$(magename2pbuild ${MAGEFILE})" + # debug info + decho "PVER='${PVER}'" + decho "PBUILD='${PBUILD}'" + # do not walk files which are installed if [ ! -d ${INSTALLDB}/${PCAT}/${PNAME}-${PVER}-${PBUILD} ] then @@ -245,25 +288,45 @@ # now add the package itself to the dependencies # (if not exists already) - #if [ -z "$(echo ${ALLDEPS} | fgrep "${MAGEFILE}")" ] if checklist_alldeps "${MAGEFILE}" then + decho "added '${MAGEFILE}' to ALLDEPS" ALLDEPS="${ALLDEPS} ${MAGEFILE}" fi + else + # debug info + decho "ignored package" + decho + fi fi done else + LOOP_COUNTER=0 # get all dependencies of the package depwalking ${MAGEFILE} +fi +if [[ ${METHOD} != install-build-prerequisites ]] && + [[ ${METHOD} != pretend-build-prerequisites ]] && + [[ ${METHOD} != upgrade ]] && + [[ ${METHOD} != uppretend ]] && + [[ ${METHOD} != srcupgrade ]] && + [[ ${METHOD} != srcuppretend ]] +then # now add the package itself to the dependencies - ALLDEPS="${ALLDEPS} ${MAGEFILE}" + # (if not exists already) + if checklist_alldeps "${MAGEFILE}" + then + decho "added '${MAGEFILE}' to ALLDEPS" + ALLDEPS="${ALLDEPS} ${MAGEFILE}" + fi fi [[ ${METHOD} = pretend ]] || \ [[ ${METHOD} = srcpretend ]] || \ [[ ${METHOD} = uppretend ]] || \ - [[ ${METHOD} = srcuppretend ]] && \ + [[ ${METHOD} = srcuppretend ]] || \ + [[ ${METHOD} = pretend-build-prerequisites ]] && \ echo "done" @@ -271,7 +334,8 @@ if [[ ${METHOD} = pretend ]] || \ [[ ${METHOD} = srcpretend ]] || \ [[ ${METHOD} = uppretend ]] || \ - [[ ${METHOD} = srcuppretend ]] + [[ ${METHOD} = srcuppretend ]] || \ + [[ ${METHOD} = pretend-build-prerequisites ]] then # this is a little bit faster declare -i x=0 @@ -288,7 +352,7 @@ PBUILD="$(magename2pbuild ${i})" if [ -z "${list}" ] then - list="\t${COLBLUE}[${k}] ${COLGREEN}${PCAT}/${PNAME}-${PVER}-${PBUILD}${COLDEFAULT}" + list="\t${COLBLUE}[${k}] ${COLGREEN}${PCAT}/${PNAME}-${PVER}-${PBUILD}${COLDEFAULT}" else list="${list} \t${COLBLUE}[${k}] ${COLGREEN}${PCAT}/${PNAME}-${PVER}-${PBUILD}${COLDEFAULT}" @@ -299,6 +363,18 @@ echo -e "${list}" echo + if [[ ! -z ${INVALID_DEPS} ]] + then + echo -e "${COLRED}Invalid dependencies found:${COLDEFAULT}" + for i in ${INVALID_DEPS} + do + _dep="${i%%:*}" + _mage="${i##*:}" + echo -e "${COLRED} '${_dep}' -> '${_mage}'${COLDEFAULT}" + done + echo + fi + if [[ ! -z ${NO_UPGRADE_CANDIDATE} ]] then echo -e "${COLRED}Currently no candidates found for:${COLDEFAULT}" @@ -318,5 +394,6 @@ [[ ${METHOD} = install ]] || \ [[ ${METHOD} = srcinstall ]] || \ [[ ${METHOD} = upgrade ]] || \ - [[ ${METHOD} = srcupgrade ]] && \ + [[ ${METHOD} = srcupgrade ]] || \ + [[ ${METHOD} = install-build-prerequisites ]] && \ echo "${ALLDEPS}"