--- trunk/mage/usr/lib/mage/mage4.functions.sh 2006/03/22 17:43:59 350 +++ trunk/mage/usr/lib/mage/mage4.functions.sh 2006/04/27 11:52:59 370 @@ -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.17 2006-03-22 17:43:59 niro Exp $ +# $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/mage4.functions.sh,v 1.18 2006-04-27 11:52:53 niro Exp $ mage_setup() { @@ -1286,6 +1286,9 @@ # returns 0=stable 1=unstable check_stable_package() { + # first check if this magefile is not blacklisted + blacklisted "$1" || return 1 + local STATE STATE="$(get_value_from_magefile STATE "$1")" @@ -1337,26 +1340,27 @@ fi done - # stop here if HIGHEST_MAGEFILE is zero - # this package must be unstable or old - if [ -z "${HIGHEST_MAGEFILE}" ] - then - echo - echo -n "All packages named " - echo -en ${COLRED}\""${PKGNAME%-*-*-*}\""${COLDEFAULT} - echo -n " are marked " - echo -en ${COLRED}"*UNSTABLE*"${COLDEFAULT} - echo "." - echo "You need to declare USE_UNSTABLE=true to install this." - echo - echo "Example:" - echo " USE_UNSTABLE=true mage install ${PKGNAME%-*-*-*}" - echo - echo "Be warned that these packages are not stable and may cause serious problems." - echo "You should know what you are doing, so don't complain about any damage." - echo - return 1 - fi +# do not so anything +# # stop here if HIGHEST_MAGEFILE is zero +# # this package must be unstable or old +# if [ -z "${HIGHEST_MAGEFILE}" ] +# then +# echo +# echo -n "All packages named " +# echo -en ${COLRED}\""${PKGNAME%-*-*-*}\""${COLDEFAULT} +# echo -n " are marked " +# echo -en ${COLRED}"*UNSTABLE*"${COLDEFAULT} +# echo "." +# echo "You need to declare USE_UNSTABLE=true to install this." +# echo +# echo "Example:" +# echo " USE_UNSTABLE=true mage install ${PKGNAME%-*-*-*}" +# echo +# echo "Be warned that these packages are not stable and may cause serious problems." +# echo "You should know what you are doing, so don't complain about any damage." +# echo +# return 1 +# fi echo "${HIGHEST_MAGEFILE}" return 0 @@ -2031,6 +2035,9 @@ local magefile="$2" local value + [[ -z ${var} ]] && return 1 + [[ -z ${magefile} ]] && return 1 + # local all possible vars of a mage file # to prevent bad issues local PKGNAME @@ -2636,3 +2643,56 @@ echo "${libdir}" } + +## blacklisted ${magefile} +blacklisted() +{ + [[ -z ${MAGE_DISTRIBUTION} ]] && local MAGE_DISTRIBUTION=stable + + # compat + [[ ${USE_UNSTABLE} = true ]] && local MAGE_DISTRIBUTION=unstable + [[ ${USE_TESTING} = true ]] && local MAGE_DISTRIBUTION=testing + + local EXCLUDED="${MROOT}/etc/mage-profile/package.blacklist-${ARCH}-${MAGE_DISTRIBUTION}" + + # return 0 if the list not exist; nothin is masked + [[ ! -f ${EXCLUDED} ]] && return 0 + + local MAGEFILE="$1" + + local PCAT="$(magename2pcat ${MAGEFILE})" + local PNAME="$(magename2pname ${MAGEFILE})" + local PVER="$(magename2pver ${MAGEFILE})" + local PBUILD="$(magename2pbuild ${MAGEFILE})" + + local EXPCAT EXPNAME EXPVER EXPBUILD + while read EXPCAT EXPNAME EXPVER EXPBUILD + do + # ignore spaces and comments + case "${EXPCAT}" in + \#*|"") continue ;; + esac + + # exclude full pver + if [[ -n ${PCAT} ]] && [[ -n ${PNAME} ]] && + [[ -n ${EXPCAT} ]] && [[ -n ${EXPNAME} ]] && + [[ -n ${PVER} ]] && [[ -n ${PBUILD} ]] && + [[ -n ${EXPVER} ]] && [[ -n ${EXPBUILD} ]] + then + [[ ${EXPCAT}/${EXPNAME}-${EXPVER}-${EXPBUILD} = ${PCAT}/${PNAME}-${PVER}-${PBUILD} ]] && return 1 + fi + + # exclude pcat/pname only + if [[ -n ${PCAT} ]] && [[ -n ${PNAME} ]] && + [[ -n ${EXPCAT} ]] && [[ -n ${EXPNAME} ]] && + [[ -z ${EXPVER} ]] && [[ -z ${EXPBUILD} ]] + then + [[ ${EXPCAT}/${EXPNAME} = ${PCAT}/${PNAME} ]] && return 1 + fi + done << EOF +$( cat ${EXCLUDED}; echo) +EOF + + return 0 +} +