--- trunk/mage/usr/lib/mage/depwalker.sh 2007/11/05 16:49:33 598 +++ trunk/mage/usr/lib/mage/depwalker.sh 2011/12/28 09:55:37 1560 @@ -1,7 +1,6 @@ #!/bin/bash - -#depwalker -# $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/depwalker.sh,v 1.6 2007-11-05 16:49:33 niro Exp $ +# $Id$ +# dependeny walker # default die function die() @@ -22,27 +21,6 @@ source ${MLIBDIR}/mage4.functions.sh || \ die "mage functions missing" -# for tests only -# source /home/tjoke/alx-cvs/magellan-src/mage/usr/lib/mage/mage.rc.global -# source /etc/mage.rc -# source /home/tjoke/alx-cvs/magellan-src/mage/usr/lib/mage/mage4.functions.sh -# MLIBDIR=/home/tjoke/alx-cvs/magellan-src/mage/usr/lib/mage - -# not serious if missing, only needed for colors -[ -f /etc/init.d/functions ] && source /etc/init.d/functions - -# disable colors if wanted -if [[ ${NOCOLORS} = true ]] -then - COLRED="" - COLGREEN="" - COLYELLOW="" - COLBLUE="" - COLMAGENTA="" - COLWHITE="" - COLDEFAULT="" -fi - usage() { echo @@ -57,7 +35,7 @@ echo " install, srcinstall, depend, srcdepend" echo " upgrade, srcupgrade" echo - echo "method,name, version and build must be given !" + echo "method, name, version and build must be given !" echo exit 1 } @@ -106,6 +84,19 @@ return 0 } +checklist_processeddeps() +{ + local i + local item="$1" + + for i in ${PROCESSEDDEPS} + do + [[ ${i} = ${item} ]] && return 1 + done + + return 0 +} + ##################### ## rumwandern /path/to/mage/file/.mage rumwandern() @@ -130,6 +121,14 @@ DFILE="$1" source ${DFILE} + + # forced nodeps + if [[ ${NODEPS} = true ]] + then + DEPEND="" + SDEPEND="" + fi + MY_DEPEND="${DEPEND}" # for srcinstall & srcdepend only; SDEPEND also needed @@ -162,6 +161,23 @@ while read SYM DEPNAME do + # exclude empty depnames + [[ -z ${DEPNAME} ]] && continue + + # exclude all already processed deps -without version + if ! checklist_processeddeps "${DEPNAME%-*}" + then + continue + fi + + # mark depfile as processed to prevent double runs -without version + # but do not add any virtuals to PROCESSEDDEPS or their resolved + # pkgnames will be ignored and they are missing on the dependecy-list + if [[ ${DEPNAME/virtual\//} = ${DEPNAME} ]] + then + PROCESSEDDEPS="${PROCESSEDDEPS} ${DEPNAME%-*}" + fi + HIGHEST_DEPFILE=$(dep2highest_magefile "${DEPNAME}") PCAT="$(magename2pcat ${HIGHEST_DEPFILE})" @@ -214,6 +230,14 @@ # get the highest mage file from mage-db MAGEFILE="$(get_highest_magefile ${PCAT} ${PNAME})" + # 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}" + continue + fi + # now get the pver&pbuild from the new file PVER="$(magename2pver ${MAGEFILE})" PBUILD="$(magename2pbuild ${MAGEFILE})" @@ -279,6 +303,20 @@ echo "done" echo -e "${list}" echo + + if [[ ! -z ${NO_UPGRADE_CANDIDATE} ]] + then + echo -e "${COLRED}Currently no candidates found for:${COLDEFAULT}" + for i in ${NO_UPGRADE_CANDIDATE} + do + echo -e "${COLRED} ${i}${COLDEFAULT}" + done + echo + echo -e "${COLRED}Please consider to uninstall all of them first,${COLDEFAULT}" + echo -e "${COLRED}because these packages does not exist in this distribution${COLDEFAULT}" + echo -e "${COLRED}anymore and there will be no further support for them.${COLDEFAULT}" + echo + fi fi ## return output from src/install deps