Magellan Linux

Diff of /trunk/mage/usr/lib/mage/mage4.functions.sh

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 273 by niro, Fri Oct 21 14:50:13 2005 UTC revision 603 by niro, Mon Nov 5 19:36:36 2007 UTC
# Line 1  Line 1 
1  #!/bin/bash  #!/bin/bash
2  # Magellan Linux Installer Functions (mage.functions.sh)  # Magellan Linux Installer Functions (mage.functions.sh)
3  # $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/mage4.functions.sh,v 1.8 2005-10-21 14:50:13 niro Exp $  # $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/mage4.functions.sh,v 1.34 2007-11-05 19:34:36 niro Exp $
4    
5  mage_setup()  mage_setup()
6  {  {
# Line 361  install_characterdevices() Line 361  install_characterdevices()
361   local pkgname="$1"   local pkgname="$1"
362   local pathto   local pathto
363   local posix   local posix
364     local major
365     local minor
366   local IFS   local IFS
367    
368   # sanity checks; abort if not given   # sanity checks; abort if not given
# Line 374  install_characterdevices() Line 376  install_characterdevices()
376   # sets fieldseperator to "§" instead of " "   # sets fieldseperator to "§" instead of " "
377   IFS=§   IFS=§
378    
379   while read pathto posix   while read pathto posix major minor
380   do   do
381   [ -z "${pathto}" ] && continue   [ -z "${pathto}" ] && continue
382   [[ ${VERBOSE} = on ]] && echo -e "\t>>> CHAR: ${MROOT}${pathto}"   [[ ${VERBOSE} = on ]] && echo -e "\t>>> CHAR: ${MROOT}${pathto}"
383    
384   mknode -m ${posix} -c "${MROOT}${pathto}"   mknod -m ${posix} "${MROOT}${pathto}" c ${major} ${minor}
385   done < ${BUILDDIR}/${pkgname}/.char   done < ${BUILDDIR}/${pkgname}/.char
386    
387   # very important: unsetting the '§' fieldseperator   # very important: unsetting the '§' fieldseperator
# Line 556  remove_database_entry() Line 558  remove_database_entry()
558   # abort if mage file not exists   # abort if mage file not exists
559   [ ! -f ${magefile} ] && die "remove_database_entry() ${magefile} not exist."   [ ! -f ${magefile} ] && die "remove_database_entry() ${magefile} not exist."
560    
561   # first unregister virtuals   # remove virtuals only if no other exist
562   provide="$(get_value_from_magefile PROVIDE ${magefile})"   if [[ $(count_installed_pkgs --pcat ${pcat} --pname ${pname}) -le 1 ]]
  if [ -n "${provide}" ]  
563   then   then
564   for i in ${provide}   # first unregister virtuals
565   do   provide="$(get_value_from_magefile PROVIDE ${magefile})"
566   virtuals_del "${i}" "${pcat}/${pname}"   if [ -n "${provide}" ]
567   done   then
568     for i in ${provide}
569     do
570     virtuals_del "${i}" "${pcat}/${pname}"
571     done
572     fi
573   fi   fi
574    
575   # removes database entry   # removes database entry
# Line 573  remove_database_entry() Line 579  remove_database_entry()
579   fi   fi
580  }  }
581    
582    # get the number of installed packages
583    count_installed_pkgs()
584    {
585     local pcat
586     local pname
587     local pkg
588     local i
589    
590     # very basic getops
591     for i in $*
592     do
593     case $1 in
594     --pcat|-c) shift; pcat="$1" ;;
595     --pname|-n) shift; pname="$1" ;;
596     esac
597     shift
598     done
599    
600     # sanity checks; abort if not given
601     [ -z "${pcat}" ] && die "pkg_count() \$pcat not given."
602     [ -z "${pname}" ] && die "pkg_count() \$pname not given."
603    
604     declare -i i=0
605     for pkg in $(get_uninstall_candidates --pcat ${pcat} --pname ${pname})
606     do
607     (( i++ ))
608     #echo "$i ${pkg}"
609     done
610    
611     # return the value
612     echo "${i}"
613    }
614    
615    
616  ###################################################  ###################################################
617  # function compare_mtime                          #  # function compare_mtime                          #
# Line 765  remove_files() Line 804  remove_files()
804   # 1=keep me   #   # 1=keep me   #
805   case ${retval} in   case ${retval} in
806   0)   0)
807   [[ ${VERBOSE} = on ]] && echo -e "\t<<< FILE: ${MROOT}${pathto}"   # check if the file is config_protected
808   rm "${MROOT}${pathto}"   # ${MROOT} will automatically added if set !!
809   ;;   is_config_protected "${pathto}"
810     retval="$?"
811    
812     # 0 - not protected        #
813     # 1 - error                #
814     # 2 - protected            #
815     # 3 - protected but masked #
816    
817     case ${retval} in
818     # file is not protected - delete it
819     0|3)
820     [[ ${VERBOSE} = on ]] && echo -e "\t<<< FILE: ${MROOT}${pathto}"
821     rm "${MROOT}${pathto}"
822     ;;
823    
824     # file is protected, do not delete
825     2)
826     if [[ ${VERBOSE} = on ]]
827     then
828     echo -en "${COLRED}"
829     echo -n "! prot "
830     echo -en "${COLDEFAULT}"
831     echo " === FILE: ${MROOT}${pathto}"
832     fi
833     ;;
834     esac
835     ;;
836   1)   1)
837   [[ ${VERBOSE} = on ]] && \   [[ ${VERBOSE} = on ]] && \
838   echo -e "${COLRED}! mtime${COLDEFAULT} === FILE: ${MROOT}${pathto}"   echo -e "${COLRED}! mtime${COLDEFAULT} === FILE: ${MROOT}${pathto}"
# Line 1042  fetch_packages() Line 1106  fetch_packages()
1106   local count_current   local count_current
1107   local count_total   local count_total
1108    
1109   [ -z "${MIRRORS}" ] && die "You have no mirrors defined. Please edit your /etc/mage.rc."   [ -z "${MIRRORS}" ] && die "You have no mirrors defined. Please edit your ${MAGERC}."
1110    
1111   # get count of total packages   # get count of total packages
1112   declare -i count_current=0   declare -i count_current=0
# Line 1094  fetch_packages() Line 1158  fetch_packages()
1158   --continue \   --continue \
1159   --progress bar \   --progress bar \
1160   --directory-prefix=${PKGDIR} \   --directory-prefix=${PKGDIR} \
1161   ${opt} ${mirr}/packages/${pkg}   ${opt} ${mirr}/${PACKAGES_SERVER_PATH}/${pkg}
1162   if [[ $? = 0 ]]   if [[ $? = 0 ]]
1163   then   then
1164   break   break
# Line 1117  syncmage() Line 1181  syncmage()
1181  {  {
1182   if [ -z "${RSYNC}" ]   if [ -z "${RSYNC}" ]
1183   then   then
1184   die "You have no rsync-mirrors defined. Please edit your /etc/mage.rc."   die "You have no rsync-mirrors defined. Please edit your ${MAGERC}."
1185   fi   fi
1186    
1187   local i   local i
1188   for i in ${RSYNC}   for i in ${RSYNC}
1189   do   do
1190   rsync \   rsync ${RSYNC_FETCH_OPTIONS} ${i} ${MAGEDIR}
  --recursive \  
  --links \  
  --perms \  
  --times \  
  --devices \  
  --timeout=600 \  
  --verbose \  
  --compress \  
  --progress \  
  --stats \  
  --delete \  
  --delete-after \  
  ${i} ${MAGEDIR}  
1191   if [[ $? = 0 ]]   if [[ $? = 0 ]]
1192   then   then
1193   break   break
# Line 1189  choppkgname() Line 1240  choppkgname()
1240   if [ -n "$(echo ${MAGENAME}|fgrep .mage)" ]   if [ -n "$(echo ${MAGENAME}|fgrep .mage)" ]
1241   then   then
1242   #cuts ARCH and PBUILD   #cuts ARCH and PBUILD
1243   #ARCH comes from /etc/mage.rc   #ARCH comes from ${MAGERC}
1244   MAGENAME=$(echo ${MAGENAME} |sed -e "s:-${ARCH}-r*.::g")   MAGENAME=$(echo ${MAGENAME} |sed -e "s:-${ARCH}-r*.::g")
1245    
1246   #cuts version number   #cuts version number
# Line 1222  pname2pcat() Line 1273  pname2pcat()
1273  # returns 0=stable 1=unstable  # returns 0=stable 1=unstable
1274  check_stable_package()  check_stable_package()
1275  {  {
1276     # first check if this magefile is not blacklisted
1277     blacklisted "$1" || return 1
1278    
1279   local STATE   local STATE
1280   STATE="$(get_value_from_magefile STATE "$1")"   STATE="$(get_value_from_magefile STATE "$1")"
1281    
1282   # state testing   # state testing
1283   if [[ ${USE_TESTING} = true ]]   if [[ ${USE_TESTING} = true ]] || [[ ${MAGE_DISTRIBUTION} = testing ]]
1284   then   then
1285   case ${STATE} in   case ${STATE} in
1286   testing|stable) return 0 ;;   testing|stable) return 0 ;;
# Line 1235  check_stable_package() Line 1289  check_stable_package()
1289   fi   fi
1290    
1291   # state unstable   # state unstable
1292   if [[ ${USE_UNSTABLE} = true ]]   if [[ ${USE_UNSTABLE} = true ]] || [[ ${MAGE_DISTRIBUTION} = unstable ]]
1293   then   then
1294   case ${STATE} in   case ${STATE} in
1295   unstable|testing|stable) return 0 ;;   unstable|testing|stable) return 0 ;;
# Line 1273  get_highest_magefile() Line 1327  get_highest_magefile()
1327   fi   fi
1328   done   done
1329    
1330   # stop here if HIGHEST_MAGEFILE is zero  # do not so anything
1331   # this package must be unstable or old  # # stop here if HIGHEST_MAGEFILE is zero
1332   if [ -z "${HIGHEST_MAGEFILE}" ]  # # this package must be unstable or old
1333   then  # if [ -z "${HIGHEST_MAGEFILE}" ]
1334   echo  # then
1335   echo -n "All packages named "  # echo
1336   echo -en ${COLRED}\""${PKGNAME%-*-*-*}\""${COLDEFAULT}  # echo -n "All packages named "
1337   echo -n " are marked "  # echo -en ${COLRED}\""${PKGNAME%-*-*-*}\""${COLDEFAULT}
1338   echo -en ${COLRED}"*UNSTABLE*"${COLDEFAULT}  # echo -n " are marked "
1339   echo "."  # echo -en ${COLRED}"*UNSTABLE*"${COLDEFAULT}
1340   echo "You need to declare USE_UNSTABLE=true to install this."  # echo "."
1341   echo  # echo "You need to declare USE_UNSTABLE=true to install this."
1342   echo "Example:"  # echo
1343   echo "         USE_UNSTABLE=true mage install ${PKGNAME%-*-*-*}"  # echo "Example:"
1344   echo  # echo "         USE_UNSTABLE=true mage install ${PKGNAME%-*-*-*}"
1345   echo "Be warned that these packages are not stable and may cause serious problems."  # echo
1346   echo "You should know what you are doing, so don't complain about any damage."  # echo "Be warned that these packages are not stable and may cause serious problems."
1347   echo  # echo "You should know what you are doing, so don't complain about any damage."
1348   return 1  # echo
1349   fi  # return 1
1350    # fi
1351    
1352   echo "${HIGHEST_MAGEFILE}"   echo "${HIGHEST_MAGEFILE}"
1353   return 0   return 0
# Line 1320  is_config_protected() Line 1375  is_config_protected()
1375   EXPFILE="${MROOT}$1"   EXPFILE="${MROOT}$1"
1376    
1377   # file does not exist; it can be written   # file does not exist; it can be written
1378   [ ! -e ${EXPFILE} ] && return 0   [[ ! -e ${EXPFILE} ]] && return 0
1379    
1380   # to be safe; it may be '§'   # to be safe; it may be '§'
1381   IFS=' '   IFS=' '
# Line 1330  is_config_protected() Line 1385  is_config_protected()
1385   do   do
1386   # ersetzen von $i nur wenn am anfang der variable   # ersetzen von $i nur wenn am anfang der variable
1387   TEST="${EXPFILE/#${MROOT}${i}/Protected}"   TEST="${EXPFILE/#${MROOT}${i}/Protected}"
1388   if [ "${TEST}" != "${EXPFILE}" ]   if [[ ${TEST} != ${EXPFILE} ]]
1389   then   then
1390   # setzen das es protected ist   # setzen das es protected ist
1391   PROTECTED=TRUE   PROTECTED=TRUE
# Line 1339  is_config_protected() Line 1394  is_config_protected()
1394   for x in ${CONFIG_PROTECT_MASK}   for x in ${CONFIG_PROTECT_MASK}
1395   do   do
1396   TEST="${EXPFILE/#${MROOT}${x}/Protect_Masked}"   TEST="${EXPFILE/#${MROOT}${x}/Protect_Masked}"
1397   if [ "${TEST}" != "${EXPFILE}" ]   if [[ ${TEST} != ${EXPFILE} ]]
1398   then   then
1399   PROTECTED=MASKED   PROTECTED=MASKED
1400   fi   fi
# Line 1375  is_config_protected() Line 1430  is_config_protected()
1430  ###################################################  ###################################################
1431  count_protected_files()  count_protected_files()
1432  {  {
1433   ${MLIBDIR}/writeprotected "$1"   local file="$1"
1434     local dirname="${file%/*}"
1435     local filename="${file##*/}"
1436     local count
1437     local output
1438     local i
1439    
1440     declare -i count=0
1441    
1442     # check if there are already protected files
1443     for oldpretected in $(find ${dirname} -iname "._cfg????_${filename}" |
1444     sed -e "s:\(^.*/\)\(._cfg*_\)\(/.*$\):\1\2\3\%\2\%\3:" |
1445     sort -t'%' -k3 -k2 | cut -f1 -d'%')
1446     do
1447     count=$(echo ${oldpretected} | cut -d_ -f2 | sed -e "s:cfg::")
1448     done
1449     (( count ++ ))
1450    
1451     # fill output up with zeros
1452     for (( i=${#count}; i < 4; i++ )); do output="${output}0"; done
1453     output="${output}${count}"
1454    
1455     echo "${output}"
1456  }  }
1457    
1458  # call with  # call with
# Line 1392  get_uninstall_candidates() Line 1469  get_uninstall_candidates()
1469   local list   local list
1470   local pcatdir   local pcatdir
1471   local protected   local protected
1472     local i
1473    
1474   # very basic getops   # very basic getops
1475   for i in $*   for i in $*
# Line 1404  get_uninstall_candidates() Line 1482  get_uninstall_candidates()
1482   shift   shift
1483   done   done
1484    
1485   # sanity checks; abort if not given  # it's not good to complain here about empty pnames; better to continue later anyway
1486   [ -z "${search_pname}" ] && die "get_uninstall_candidates() \$search_pname not given."  # # sanity checks; abort if not given
1487    # [ -z "${search_pname}" ] && die "get_uninstall_candidates() \$search_pname not given."
1488    
1489    
1490   # check needed global vars   # check needed global vars
1491   [ -z "${INSTALLDB}" ] && die "get_uninstall_candidates() \$INSTALLDB not set."   [ -z "${INSTALLDB}" ] && die "get_uninstall_candidates() \$INSTALLDB not set."
1492    
1493   # set pcatdir to '*' if empty   # set pcatdir to '*' if empty
1494   [ -z "${pcatdir}" ] && pcatdir=*   [ -z "${pcatdir}" ] && pcatdir='*'
1495    
1496   for pkg in ${MROOT}${INSTALLDB}/${pcatdir}/*   for pkg in ${MROOT}${INSTALLDB}/${pcatdir}/*
1497   do   do
# Line 1501  virtuals_add() Line 1580  virtuals_add()
1580    
1581   if virtuals_read ${virtualname}   if virtuals_read ${virtualname}
1582   then   then
1583   # make shure ${PKG_NAME} is *not* in ${VIRTUAL_NAME} already   # make sure ${PKG_NAME} is *not* in ${VIRTUAL_NAME} already
1584   for i in $(virtuals_read ${virtualname} showpkgs)   for i in $(virtuals_read ${virtualname} showpkgs)
1585   do   do
1586   if [[ ${i} = ${pkgname} ]]   if [[ ${i} = ${pkgname} ]]
# Line 1652  minclude() Line 1731  minclude()
1731  {  {
1732   local i   local i
1733    
1734   if [ -n "$@" ]   if [[ -n $* ]]
1735   then   then
1736   for i in $@   for i in $*
1737   do   do
1738   [[ ${MAGEDEBUG} = on ]] && \   [[ ${MAGEDEBUG} = on ]] && \
1739   echo "--- Including ${MAGEDIR}/include/${i}.minc"   echo "--- Including ${MAGEDIR}/include/${i}.minc"
# Line 1668  sminclude() Line 1747  sminclude()
1747  {  {
1748   local i   local i
1749    
1750   if [ -n "$@" ]   if [[ -n $* ]]
1751   then   then
1752   for i in $@   for i in $*
1753   do   do
1754   echo "--- Including ${SMAGESCRIPTSDIR}/include/${i}.sminc"   echo "--- Including ${SMAGESCRIPTSDIR}/include/${i}.sminc"
1755   source ${SMAGESCRIPTSDIR}/include/${i}.sminc   source ${SMAGESCRIPTSDIR}/include/${i}.sminc
# Line 1694  is_newer_mage_version_available() Line 1773  is_newer_mage_version_available()
1773   echo -en ${COLRED}"An update for your packetmanager is available. "${COLDEFAULT}   echo -en ${COLRED}"An update for your packetmanager is available. "${COLDEFAULT}
1774   echo -e ${COLBLUE}"[ ${newest_mage} ]"${COLDEFAULT}   echo -e ${COLBLUE}"[ ${newest_mage} ]"${COLDEFAULT}
1775   echo "It is recommened to install this newer version"   echo "It is recommened to install this newer version"
1776   echo "or your current system installation may brake."   echo "or your current system installation may break."
1777   echo   echo
1778   echo -en "Please update mage by running "   echo -en "Please update mage by running "
1779   echo -e ${COLGREEN}"'mage install mage'"${COLDEFAULT}   echo -e ${COLGREEN}"'mage install mage'"${COLDEFAULT}
# Line 1966  get_value_from_magefile() Line 2045  get_value_from_magefile()
2045   local magefile="$2"   local magefile="$2"
2046   local value   local value
2047    
2048     [[ -z ${var} ]] && return 1
2049     [[ -z ${magefile} ]] && return 1
2050    
2051   # local all possible vars of a mage file   # local all possible vars of a mage file
2052   # to prevent bad issues   # to prevent bad issues
2053   local PKGNAME   local PKGNAME
# Line 2098  mage_install() Line 2180  mage_install()
2180   smage2file=${SMAGESCRIPTSDIR}/${pname}/${pname}-${pver}-${pbuild}.smage2   smage2file=${SMAGESCRIPTSDIR}/${pname}/${pname}-${pver}-${pbuild}.smage2
2181   if [ -f "${smage2file}" ]   if [ -f "${smage2file}" ]
2182   then   then
2183     echo -e " ${COLBLUE}***${COLDEFAULT} building package from source ... "
2184   smage2 ${smage2file} || die "compile failed"   smage2 ${smage2file} || die "compile failed"
2185   else   else
2186   echo   echo
# Line 2111  mage_install() Line 2194  mage_install()
2194   if [[ ${PKGTYPE} != virtual ]] && \   if [[ ${PKGTYPE} != virtual ]] && \
2195   [[ ${PKGTYPE} != sources ]]   [[ ${PKGTYPE} != sources ]]
2196   then   then
2197   # show a verbose message on src-install   echo -e " ${COLBLUE}***${COLDEFAULT} merging files into system ... "
  if [[ ${src_install} = true ]]  
  then  
  echo -ne "${COLBLUE} *** ${COLDEFAULT}"  
  echo -ne "merging files: "  
  echo -ne "${COLBLUE}${pcat}/${COLDEFAULT}"  
  echo -e "${COLGREEN}${pname}-${pver}-${pbuild}${COLDEFAULT}"  
  fi  
2198   build_doinstall ${PKGNAME}   build_doinstall ${PKGNAME}
2199   fi   fi
2200    
# Line 2375  mage_uninstall() Line 2451  mage_uninstall()
2451   echo -ne "${COLBLUE} <<< ${COLDEFAULT}"   echo -ne "${COLBLUE} <<< ${COLDEFAULT}"
2452   echo -n "removing: "   echo -n "removing: "
2453   echo -ne "${COLBLUE}${pcat}/${COLDEFAULT}"   echo -ne "${COLBLUE}${pcat}/${COLDEFAULT}"
2454   echo -e "${COLGREEN}${pname}-${pver}-${pbuild}${COLDEFAULT}"   echo -e "${COLRED}${pname}-${pver}-${pbuild}${COLDEFAULT}"
2455    
2456   magefile="${INSTALLDB}/${pcat}/${pname}-${pver}-${pbuild}/${pname}-${pver}-${pbuild}.mage"   magefile="${MROOT}${INSTALLDB}/${pcat}/${pname}-${pver}-${pbuild}/${pname}-${pver}-${pbuild}.mage"
2457   source ${magefile}   source ${magefile}
2458    
2459   ## preremove scripts   ## preremove scripts
# Line 2475  pkgsearch() Line 2551  pkgsearch()
2551   local all_installed   local all_installed
2552   local ipver   local ipver
2553   local ipbuild   local ipbuild
2554     local latest_available
2555     local depsfull
2556     local sdepsfull
2557     local deps
2558     local sdeps
2559     local dep
2560     local sign
2561    
2562   # only names no versions   # only names no versions
2563   result="$(find ${MAGEDIR} -mindepth 2 -maxdepth 2 -type d -name *${string}*)"   result="$(find ${MAGEDIR} -mindepth 2 -maxdepth 2 -type d -name '*'${string}'*'| sed '/profiles/d' | sed '/includes/d')"
2564   #result="$(find ${MAGEDIR} -type f -name *${string}*.mage | sort)"   #result="$(find ${MAGEDIR} -type f -name '*'${string}'*'.mage | sort)"
2565    
2566   # nothing found   # nothing found
2567   [[ -z ${result} ]] && die "No package found containing '${string}' in the name."   [[ -z ${result} ]] && die "No package found containing '${string}' in the name."
# Line 2492  pkgsearch() Line 2575  pkgsearch()
2575   # get highest version available   # get highest version available
2576   magefile=$(get_highest_magefile ${pcat} ${pname})   magefile=$(get_highest_magefile ${pcat} ${pname})
2577    
2578   # now get all needed infos to print a nice output   if [[ ! -z ${magefile} ]]
2579   pver="$(magename2pver ${magefile})"   then
2580   pbuild="$(magename2pbuild ${magefile})"   # now get all needed infos to print a nice output
2581   state="$(get_value_from_magefile STATE ${magefile})"   pver="$(magename2pver ${magefile})"
2582   description="$(get_value_from_magefile DESCRIPTION ${magefile})"   pbuild="$(magename2pbuild ${magefile})"
2583   homepage="$(get_value_from_magefile HOMEPAGE ${magefile})"   state="$(get_value_from_magefile STATE ${magefile})"
2584     description="$(get_value_from_magefile DESCRIPTION ${magefile})"
2585     homepage="$(get_value_from_magefile HOMEPAGE ${magefile})"
2586    
2587     # all installed
2588     for i in $(get_uninstall_candidates --pname ${pname} --pcat ${pcat})
2589     do
2590     ipver="$(magename2pver ${i})"
2591     ipbuild="$(magename2pbuild ${i})"
2592    
2593     if [[ -z ${all_installed} ]]
2594     then
2595     all_installed="${ipver}-${ipbuild}"
2596     else
2597     all_installed="${all_installed} ${ipver}-${ipbuild}"
2598     fi
2599     done
2600     [[ -z ${all_installed} ]] && all_installed="none"
2601    
2602     case ${state} in
2603     stable) state=${COLGREEN}"[s] ";;
2604     testing) state=${COLYELLOW}"[t] ";;
2605     unstable) state=${COLRED}"[u] ";;
2606     old) state=${COLGRAY}"[o] ";;
2607     esac
2608    
2609   # all installed   latest_available="${pver}-${pbuild}"
2610   for i in $(get_uninstall_candidates --pname ${pname} --pcat ${pcat})   else
2611   do   # package is masked
2612   ipver="$(magename2pver ${i})"   state="${COLRED}[m] "
2613   ipbuild="$(magename2pbuild ${i})"   latest_available="${COLRED}masked for this distribution.${COLDEFAULT}"
2614     fi
2615    
2616   if [[ -z ${all_installed} ]]   depsfull="$(get_value_from_magefile DEPEND ${magefile})"
2617   then   sdepsfull="$(get_value_from_magefile SDEPEND ${magefile})"
  all_installed="${ipver}-${ipbuild}"  
  else  
  all_installed="${all_installed} ${ipver}-${ipbuild}"  
  fi  
  done  
  [[ -z ${all_installed} ]] && all_installed="none"  
2618    
2619   case ${state} in   while read sign dep
2620   stable) state=${COLGREEN}"[s] ";;   do
2621   testing) state=${COLYELLOW}"[t] ";;   case ${dep} in
2622   unstable) state=${COLRED}"[u] ";;   "") continue;;
2623   old) state=${COLGRAY}"[o] ";;   esac
2624   esac  
2625     deps="${deps} $(basename ${dep%-*})"
2626     done << EOF
2627    ${depsfull}
2628    EOF
2629    
2630     while read sign dep
2631     do
2632     case ${dep} in
2633     "") continue;;
2634     esac
2635    
2636     sdeps="${sdeps} $(basename ${dep%-*})"
2637     done << EOF
2638    ${sdepsfull}
2639    EOF
2640    
2641   echo -e "${state}${pcat}/${pname}"${COLDEFAULT}   echo -e "${state}${pcat}/${pname}"${COLDEFAULT}
2642   echo "      Latest available:   ${pver}-${pbuild}"   echo -e "      Latest available:   ${latest_available}"
2643   echo "      Installed versions: ${all_installed}"   echo "      Installed versions: ${all_installed}"
2644   echo "      Description: ${description}"   echo "      Description: ${description}"
2645   echo "      Homepage: ${homepage}"   echo "      Homepage: ${homepage}"
2646     echo "      Depends: ${deps}"
2647     echo "      SDepends: ${sdeps}"
2648   echo   echo
2649    
2650   unset pcat   unset pcat
# Line 2539  pkgsearch() Line 2658  pkgsearch()
2658   unset all_installed   unset all_installed
2659   unset ipver   unset ipver
2660   unset ipbuild   unset ipbuild
2661     unset depsfull
2662     unset sdepsfull
2663     unset deps
2664     unset sdeps
2665     unset dep
2666     unset sign
2667   done   done
2668  }  }
2669    
# Line 2563  export_inherits() Line 2688  export_inherits()
2688   shift   shift
2689   done   done
2690  }  }
2691    
2692    mlibdir()
2693    {
2694     local libdir=lib
2695     [[ ${ARCH} = x86_64 ]] && libdir=lib64
2696    
2697     echo "${libdir}"
2698    }
2699    
2700    ## blacklisted ${magefile}
2701    blacklisted()
2702    {
2703     [[ -z ${MAGE_DISTRIBUTION} ]] && local MAGE_DISTRIBUTION=stable
2704    
2705     # compat
2706     [[ ${USE_UNSTABLE} = true ]] && local MAGE_DISTRIBUTION=unstable
2707     [[ ${USE_TESTING} = true ]] && local MAGE_DISTRIBUTION=testing
2708    
2709     local EXCLUDED="${MROOT}/etc/mage-profile/package.blacklist-${ARCH}-${MAGE_DISTRIBUTION}"
2710    
2711     # return 0 if the list not exist; nothin is masked
2712     [[ ! -f ${EXCLUDED} ]] && return 0
2713    
2714     local MAGEFILE="$1"
2715    
2716     local PCAT="$(magename2pcat ${MAGEFILE})"
2717     local PNAME="$(magename2pname ${MAGEFILE})"
2718     local PVER="$(magename2pver ${MAGEFILE})"
2719     local PBUILD="$(magename2pbuild ${MAGEFILE})"
2720    
2721     local EXPCAT EXPNAME EXPVER EXPBUILD
2722     while read EXPCAT EXPNAME EXPVER EXPBUILD
2723     do
2724     # ignore spaces and comments
2725             case "${EXPCAT}" in
2726                     \#*|"") continue ;;
2727             esac
2728    
2729     # exclude full pver
2730     if [[ -n ${PCAT} ]] && [[ -n ${PNAME} ]] &&
2731     [[ -n ${EXPCAT} ]] && [[ -n ${EXPNAME} ]] &&
2732     [[ -n ${PVER} ]] && [[ -n ${PBUILD} ]] &&
2733     [[ -n ${EXPVER} ]] && [[ -n ${EXPBUILD} ]]
2734     then
2735     [[ ${EXPCAT}/${EXPNAME}-${EXPVER}-${EXPBUILD} = ${PCAT}/${PNAME}-${PVER}-${PBUILD} ]] && return 1
2736     fi
2737    
2738     # exclude pcat/pname only
2739     if [[ -n ${PCAT} ]] && [[ -n ${PNAME} ]] &&
2740     [[ -n ${EXPCAT} ]] && [[ -n ${EXPNAME} ]] &&
2741     [[ -z ${EXPVER} ]] && [[ -z ${EXPBUILD} ]]
2742     then
2743     [[ ${EXPCAT}/${EXPNAME} = ${PCAT}/${PNAME} ]] && return 1
2744     fi
2745     done << EOF
2746    $( cat ${EXCLUDED}; echo)
2747    EOF
2748    
2749     return 0
2750    }
2751    

Legend:
Removed from v.273  
changed lines
  Added in v.603