--- trunk/mage/usr/lib/mage/mage4.functions.sh 2007/01/22 00:24:14 419 +++ trunk/mage/usr/lib/mage/mage4.functions.sh 2008/02/10 12:26:09 675 @@ -1,6 +1,6 @@ #!/bin/bash # Magellan Linux Installer Functions (mage.functions.sh) -# $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/mage4.functions.sh,v 1.26 2007-01-22 00:24:14 niro Exp $ +# $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/mage4.functions.sh,v 1.35 2008-02-10 12:26:09 niro Exp $ mage_setup() { @@ -1375,7 +1375,7 @@ EXPFILE="${MROOT}$1" # file does not exist; it can be written - [ ! -e ${EXPFILE} ] && return 0 + [[ ! -e ${EXPFILE} ]] && return 0 # to be safe; it may be '§' IFS=' ' @@ -1385,7 +1385,7 @@ do # ersetzen von $i nur wenn am anfang der variable TEST="${EXPFILE/#${MROOT}${i}/Protected}" - if [ "${TEST}" != "${EXPFILE}" ] + if [[ ${TEST} != ${EXPFILE} ]] then # setzen das es protected ist PROTECTED=TRUE @@ -1394,7 +1394,7 @@ for x in ${CONFIG_PROTECT_MASK} do TEST="${EXPFILE/#${MROOT}${x}/Protect_Masked}" - if [ "${TEST}" != "${EXPFILE}" ] + if [[ ${TEST} != ${EXPFILE} ]] then PROTECTED=MASKED fi @@ -1430,7 +1430,29 @@ ################################################### count_protected_files() { - ${MLIBDIR}/writeprotected "$1" + local file="$1" + local dirname="${file%/*}" + local filename="${file##*/}" + local count + local output + local i + + declare -i count=0 + + # check if there are already protected files + for oldpretected in $(find ${dirname} -iname "._cfg????_${filename}" | + sed -e "s:\(^.*/\)\(._cfg*_\)\(/.*$\):\1\2\3\%\2\%\3:" | + sort -t'%' -k3 -k2 | cut -f1 -d'%') + do + count=$(echo ${oldpretected} | cut -d_ -f2 | sed -e "s:cfg::") + done + (( count ++ )) + + # fill output up with zeros + for (( i=${#count}; i < 4; i++ )); do output="${output}0"; done + output="${output}${count}" + + echo "${output}" } # call with @@ -1447,6 +1469,7 @@ local list local pcatdir local protected + local i # very basic getops for i in $* @@ -1708,9 +1731,9 @@ { local i - if [[ -n $@ ]] + if [[ -n $* ]] then - for i in $@ + for i in $* do [[ ${MAGEDEBUG} = on ]] && \ echo "--- Including ${MAGEDIR}/include/${i}.minc" @@ -1724,9 +1747,9 @@ { local i - if [ -n "$@" ] + if [[ -n $* ]] then - for i in $@ + for i in $* do echo "--- Including ${SMAGESCRIPTSDIR}/include/${i}.sminc" source ${SMAGESCRIPTSDIR}/include/${i}.sminc @@ -2154,7 +2177,12 @@ echo B:${pbuild} fi - smage2file=${SMAGESCRIPTSDIR}/${pname}/${pname}-${pver}-${pbuild}.smage2 + if [[ -z ${MAGE_TARGETS} ]] + then + smage2file=${SMAGESCRIPTSDIR}/${pname}/${pname}-${pver}-${pbuild}.smage2 + else + smage2file=${SMAGESCRIPTSDIR}/${pname/${MAGE_TARGETS}/}/${pname/${MAGE_TARGETS}/}-${pver}-${pbuild}.smage2 + fi if [ -f "${smage2file}" ] then echo -e " ${COLBLUE}***${COLDEFAULT} building package from source ... " @@ -2430,7 +2458,7 @@ echo -ne "${COLBLUE}${pcat}/${COLDEFAULT}" echo -e "${COLRED}${pname}-${pver}-${pbuild}${COLDEFAULT}" - magefile="${INSTALLDB}/${pcat}/${pname}-${pver}-${pbuild}/${pname}-${pver}-${pbuild}.mage" + magefile="${MROOT}${INSTALLDB}/${pcat}/${pname}-${pver}-${pbuild}/${pname}-${pver}-${pbuild}.mage" source ${magefile} ## preremove scripts @@ -2528,6 +2556,13 @@ local all_installed local ipver local ipbuild + local latest_available + local depsfull + local sdepsfull + local deps + local sdeps + local dep + local sign # only names no versions result="$(find ${MAGEDIR} -mindepth 2 -maxdepth 2 -type d -name '*'${string}'*'| sed '/profiles/d' | sed '/includes/d')" @@ -2545,40 +2580,76 @@ # get highest version available magefile=$(get_highest_magefile ${pcat} ${pname}) - # now get all needed infos to print a nice output - pver="$(magename2pver ${magefile})" - pbuild="$(magename2pbuild ${magefile})" - state="$(get_value_from_magefile STATE ${magefile})" - description="$(get_value_from_magefile DESCRIPTION ${magefile})" - homepage="$(get_value_from_magefile HOMEPAGE ${magefile})" + if [[ ! -z ${magefile} ]] + then + # now get all needed infos to print a nice output + pver="$(magename2pver ${magefile})" + pbuild="$(magename2pbuild ${magefile})" + state="$(get_value_from_magefile STATE ${magefile})" + description="$(get_value_from_magefile DESCRIPTION ${magefile})" + homepage="$(get_value_from_magefile HOMEPAGE ${magefile})" + + # all installed + for i in $(get_uninstall_candidates --pname ${pname} --pcat ${pcat}) + do + ipver="$(magename2pver ${i})" + ipbuild="$(magename2pbuild ${i})" + + if [[ -z ${all_installed} ]] + then + all_installed="${ipver}-${ipbuild}" + else + all_installed="${all_installed} ${ipver}-${ipbuild}" + fi + done + [[ -z ${all_installed} ]] && all_installed="none" + + case ${state} in + stable) state=${COLGREEN}"[s] ";; + testing) state=${COLYELLOW}"[t] ";; + unstable) state=${COLRED}"[u] ";; + old) state=${COLGRAY}"[o] ";; + esac + + latest_available="${pver}-${pbuild}" + else + # package is masked + state="${COLRED}[m] " + latest_available="${COLRED}masked for this distribution.${COLDEFAULT}" + fi - # all installed - for i in $(get_uninstall_candidates --pname ${pname} --pcat ${pcat}) - do - ipver="$(magename2pver ${i})" - ipbuild="$(magename2pbuild ${i})" + depsfull="$(get_value_from_magefile DEPEND ${magefile})" + sdepsfull="$(get_value_from_magefile SDEPEND ${magefile})" - if [[ -z ${all_installed} ]] - then - all_installed="${ipver}-${ipbuild}" - else - all_installed="${all_installed} ${ipver}-${ipbuild}" - fi - done - [[ -z ${all_installed} ]] && all_installed="none" + while read sign dep + do + case ${dep} in + "") continue;; + esac + + deps="${deps} $(basename ${dep%-*})" + done << EOF +${depsfull} +EOF - case ${state} in - stable) state=${COLGREEN}"[s] ";; - testing) state=${COLYELLOW}"[t] ";; - unstable) state=${COLRED}"[u] ";; - old) state=${COLGRAY}"[o] ";; - esac + while read sign dep + do + case ${dep} in + "") continue;; + esac + + sdeps="${sdeps} $(basename ${dep%-*})" + done << EOF +${sdepsfull} +EOF echo -e "${state}${pcat}/${pname}"${COLDEFAULT} - echo " Latest available: ${pver}-${pbuild}" + echo -e " Latest available: ${latest_available}" echo " Installed versions: ${all_installed}" echo " Description: ${description}" echo " Homepage: ${homepage}" + echo " Depends: ${deps}" + echo " SDepends: ${sdeps}" echo unset pcat @@ -2592,6 +2663,12 @@ unset all_installed unset ipver unset ipbuild + unset depsfull + unset sdepsfull + unset deps + unset sdeps + unset dep + unset sign done }