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 739 by niro, Mon Jun 16 09:29:57 2008 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.37 2008-06-16 09:29:27 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 1152  syncmage() Line 1203  syncmage()
1203   is_newer_mage_version_available   is_newer_mage_version_available
1204  }  }
1205    
1206    syncmage_tarball()
1207    {
1208     local latest_tarball
1209     local temp="$(mktemp -d)"
1210     local mirr mymirr
1211    
1212     # try to get the tarball marked as latest on the server
1213     latest_tarball="mage-latest.tar.bz2"
1214    
1215     for mirr in ${MIRRORS}
1216     do
1217     # path without distribution
1218     mymirr="${mirr%/*}"
1219    
1220     echo -ne "${COLBLUE} --- ${COLDEFAULT}"
1221     echo "fetching latest tarball from ${mymirr} ..."
1222    
1223     wget \
1224     --passive-ftp \
1225     --tries 3 \
1226     --continue \
1227     --progress bar \
1228     --directory-prefix=${temp} \
1229     ${mymirr}/rsync/tarballs/${latest_tarball}
1230     if [[ $? = 0 ]]
1231     then
1232     break
1233     else
1234     continue
1235     fi
1236     done
1237    
1238     if [[ -f ${temp}/${latest_tarball} ]]
1239     then
1240     if [[ -d ${MAGEDIR} ]]
1241     then
1242     echo -ne "${COLBLUE} --- ${COLDEFAULT}"
1243     echo "cleaning old mage-tree ${MAGEDIR}..."
1244     rm -rf ${MAGEDIR}
1245     fi
1246    
1247     echo -ne "${COLBLUE} --- ${COLDEFAULT}"
1248     echo "updating mage-tree from tarball ..."
1249     # unpack in dirname of MAGEDIR, as the tarball has already the mage
1250     tar xjmf ${temp}/${latest_tarball} -C ${MAGEDIR%/*} || die "Unpacking tarball"
1251    
1252     if [[ -d ${temp} ]]
1253     then
1254     echo -ne "${COLBLUE} --- ${COLDEFAULT}"
1255     echo "clenaing temp-files ..."
1256     rm -rf ${temp}
1257     fi
1258     else
1259     die "Could not fetch the latest tarball ... aborting"
1260     fi
1261    }
1262    
1263  cleanpkg()  cleanpkg()
1264  {  {
1265   if [ -d "${PKGDIR}" ]   if [ -d "${PKGDIR}" ]
# Line 1189  choppkgname() Line 1297  choppkgname()
1297   if [ -n "$(echo ${MAGENAME}|fgrep .mage)" ]   if [ -n "$(echo ${MAGENAME}|fgrep .mage)" ]
1298   then   then
1299   #cuts ARCH and PBUILD   #cuts ARCH and PBUILD
1300   #ARCH comes from /etc/mage.rc   #ARCH comes from ${MAGERC}
1301   MAGENAME=$(echo ${MAGENAME} |sed -e "s:-${ARCH}-r*.::g")   MAGENAME=$(echo ${MAGENAME} |sed -e "s:-${ARCH}-r*.::g")
1302    
1303   #cuts version number   #cuts version number
# Line 1222  pname2pcat() Line 1330  pname2pcat()
1330  # returns 0=stable 1=unstable  # returns 0=stable 1=unstable
1331  check_stable_package()  check_stable_package()
1332  {  {
1333     # first check if this magefile is not blacklisted
1334     blacklisted "$1" || return 1
1335    
1336   local STATE   local STATE
1337   STATE="$(get_value_from_magefile STATE "$1")"   STATE="$(get_value_from_magefile STATE "$1")"
1338    
1339   # state testing   # state testing
1340   if [[ ${USE_TESTING} = true ]]   if [[ ${USE_TESTING} = true ]] || [[ ${MAGE_DISTRIBUTION} = testing ]]
1341   then   then
1342   case ${STATE} in   case ${STATE} in
1343   testing|stable) return 0 ;;   testing|stable) return 0 ;;
# Line 1235  check_stable_package() Line 1346  check_stable_package()
1346   fi   fi
1347    
1348   # state unstable   # state unstable
1349   if [[ ${USE_UNSTABLE} = true ]]   if [[ ${USE_UNSTABLE} = true ]] || [[ ${MAGE_DISTRIBUTION} = unstable ]]
1350   then   then
1351   case ${STATE} in   case ${STATE} in
1352   unstable|testing|stable) return 0 ;;   unstable|testing|stable) return 0 ;;
# Line 1261  get_highest_magefile() Line 1372  get_highest_magefile()
1372   local PNAME="$2"   local PNAME="$2"
1373   local magefile   local magefile
1374    
1375   for magefile in $(ls --format=single-column -v ${MAGEDIR}/${PCAT}/${PNAME}/*)   # do not list the content of a directory, only the name (-d)
1376     for magefile in $(ls --format=single-column -v -d ${MAGEDIR}/${PCAT}/${PNAME}/*)
1377   do   do
1378     [[ -z ${magefile} ]] && continue
1379   # we exclude subdirs (for stuff like a md5sum dir)   # we exclude subdirs (for stuff like a md5sum dir)
1380   [ -d ${magefile} ] && continue   [[ -d ${magefile} ]] && continue
1381   if check_stable_package ${magefile}   if check_stable_package ${magefile}
1382   then   then
1383   HIGHEST_MAGEFILE=${magefile}   HIGHEST_MAGEFILE=${magefile}
# Line 1273  get_highest_magefile() Line 1386  get_highest_magefile()
1386   fi   fi
1387   done   done
1388    
1389   # stop here if HIGHEST_MAGEFILE is zero  # do not so anything
1390   # this package must be unstable or old  # # stop here if HIGHEST_MAGEFILE is zero
1391   if [ -z "${HIGHEST_MAGEFILE}" ]  # # this package must be unstable or old
1392   then  # if [ -z "${HIGHEST_MAGEFILE}" ]
1393   echo  # then
1394   echo -n "All packages named "  # echo
1395   echo -en ${COLRED}\""${PKGNAME%-*-*-*}\""${COLDEFAULT}  # echo -n "All packages named "
1396   echo -n " are marked "  # echo -en ${COLRED}\""${PKGNAME%-*-*-*}\""${COLDEFAULT}
1397   echo -en ${COLRED}"*UNSTABLE*"${COLDEFAULT}  # echo -n " are marked "
1398   echo "."  # echo -en ${COLRED}"*UNSTABLE*"${COLDEFAULT}
1399   echo "You need to declare USE_UNSTABLE=true to install this."  # echo "."
1400   echo  # echo "You need to declare USE_UNSTABLE=true to install this."
1401   echo "Example:"  # echo
1402   echo "         USE_UNSTABLE=true mage install ${PKGNAME%-*-*-*}"  # echo "Example:"
1403   echo  # echo "         USE_UNSTABLE=true mage install ${PKGNAME%-*-*-*}"
1404   echo "Be warned that these packages are not stable and may cause serious problems."  # echo
1405   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."
1406   echo  # echo "You should know what you are doing, so don't complain about any damage."
1407   return 1  # echo
1408   fi  # return 1
1409    # fi
1410    
1411   echo "${HIGHEST_MAGEFILE}"   echo "${HIGHEST_MAGEFILE}"
1412   return 0   return 0
# Line 1320  is_config_protected() Line 1434  is_config_protected()
1434   EXPFILE="${MROOT}$1"   EXPFILE="${MROOT}$1"
1435    
1436   # file does not exist; it can be written   # file does not exist; it can be written
1437   [ ! -e ${EXPFILE} ] && return 0   [[ ! -e ${EXPFILE} ]] && return 0
1438    
1439   # to be safe; it may be '§'   # to be safe; it may be '§'
1440   IFS=' '   IFS=' '
# Line 1330  is_config_protected() Line 1444  is_config_protected()
1444   do   do
1445   # ersetzen von $i nur wenn am anfang der variable   # ersetzen von $i nur wenn am anfang der variable
1446   TEST="${EXPFILE/#${MROOT}${i}/Protected}"   TEST="${EXPFILE/#${MROOT}${i}/Protected}"
1447   if [ "${TEST}" != "${EXPFILE}" ]   if [[ ${TEST} != ${EXPFILE} ]]
1448   then   then
1449   # setzen das es protected ist   # setzen das es protected ist
1450   PROTECTED=TRUE   PROTECTED=TRUE
# Line 1339  is_config_protected() Line 1453  is_config_protected()
1453   for x in ${CONFIG_PROTECT_MASK}   for x in ${CONFIG_PROTECT_MASK}
1454   do   do
1455   TEST="${EXPFILE/#${MROOT}${x}/Protect_Masked}"   TEST="${EXPFILE/#${MROOT}${x}/Protect_Masked}"
1456   if [ "${TEST}" != "${EXPFILE}" ]   if [[ ${TEST} != ${EXPFILE} ]]
1457   then   then
1458   PROTECTED=MASKED   PROTECTED=MASKED
1459   fi   fi
# Line 1375  is_config_protected() Line 1489  is_config_protected()
1489  ###################################################  ###################################################
1490  count_protected_files()  count_protected_files()
1491  {  {
1492   ${MLIBDIR}/writeprotected "$1"   local file="$1"
1493     local dirname="${file%/*}"
1494     local filename="${file##*/}"
1495     local count
1496     local output
1497     local i
1498    
1499     declare -i count=0
1500    
1501     # check if there are already protected files
1502     for oldpretected in $(find ${dirname} -iname "._cfg????_${filename}" |
1503     sed -e "s:\(^.*/\)\(._cfg*_\)\(/.*$\):\1\2\3\%\2\%\3:" |
1504     sort -t'%' -k3 -k2 | cut -f1 -d'%')
1505     do
1506     count=$(echo ${oldpretected} | cut -d_ -f2 | sed -e "s:cfg::")
1507     done
1508     (( count ++ ))
1509    
1510     # fill output up with zeros
1511     for (( i=${#count}; i < 4; i++ )); do output="${output}0"; done
1512     output="${output}${count}"
1513    
1514     echo "${output}"
1515  }  }
1516    
1517  # call with  # call with
# Line 1392  get_uninstall_candidates() Line 1528  get_uninstall_candidates()
1528   local list   local list
1529   local pcatdir   local pcatdir
1530   local protected   local protected
1531     local i
1532    
1533   # very basic getops   # very basic getops
1534   for i in $*   for i in $*
# Line 1404  get_uninstall_candidates() Line 1541  get_uninstall_candidates()
1541   shift   shift
1542   done   done
1543    
1544   # sanity checks; abort if not given  # it's not good to complain here about empty pnames; better to continue later anyway
1545   [ -z "${search_pname}" ] && die "get_uninstall_candidates() \$search_pname not given."  # # sanity checks; abort if not given
1546    # [ -z "${search_pname}" ] && die "get_uninstall_candidates() \$search_pname not given."
1547    
1548    
1549   # check needed global vars   # check needed global vars
1550   [ -z "${INSTALLDB}" ] && die "get_uninstall_candidates() \$INSTALLDB not set."   [ -z "${INSTALLDB}" ] && die "get_uninstall_candidates() \$INSTALLDB not set."
1551    
1552   # set pcatdir to '*' if empty   # set pcatdir to '*' if empty
1553   [ -z "${pcatdir}" ] && pcatdir=*   [ -z "${pcatdir}" ] && pcatdir='*'
1554    
1555   for pkg in ${MROOT}${INSTALLDB}/${pcatdir}/*   for pkg in ${MROOT}${INSTALLDB}/${pcatdir}/*
1556   do   do
# Line 1501  virtuals_add() Line 1639  virtuals_add()
1639    
1640   if virtuals_read ${virtualname}   if virtuals_read ${virtualname}
1641   then   then
1642   # make shure ${PKG_NAME} is *not* in ${VIRTUAL_NAME} already   # make sure ${PKG_NAME} is *not* in ${VIRTUAL_NAME} already
1643   for i in $(virtuals_read ${virtualname} showpkgs)   for i in $(virtuals_read ${virtualname} showpkgs)
1644   do   do
1645   if [[ ${i} = ${pkgname} ]]   if [[ ${i} = ${pkgname} ]]
# Line 1652  minclude() Line 1790  minclude()
1790  {  {
1791   local i   local i
1792    
1793   if [ -n "$@" ]   if [[ -n $* ]]
1794   then   then
1795   for i in $@   for i in $*
1796   do   do
1797   [[ ${MAGEDEBUG} = on ]] && \   [[ ${MAGEDEBUG} = on ]] && \
1798   echo "--- Including ${MAGEDIR}/include/${i}.minc"   echo "--- Including ${MAGEDIR}/include/${i}.minc"
# Line 1668  sminclude() Line 1806  sminclude()
1806  {  {
1807   local i   local i
1808    
1809   if [ -n "$@" ]   if [[ -n $* ]]
1810   then   then
1811   for i in $@   for i in $*
1812   do   do
1813   echo "--- Including ${SMAGESCRIPTSDIR}/include/${i}.sminc"   echo "--- Including ${SMAGESCRIPTSDIR}/include/${i}.sminc"
1814   source ${SMAGESCRIPTSDIR}/include/${i}.sminc   source ${SMAGESCRIPTSDIR}/include/${i}.sminc
# Line 1694  is_newer_mage_version_available() Line 1832  is_newer_mage_version_available()
1832   echo -en ${COLRED}"An update for your packetmanager is available. "${COLDEFAULT}   echo -en ${COLRED}"An update for your packetmanager is available. "${COLDEFAULT}
1833   echo -e ${COLBLUE}"[ ${newest_mage} ]"${COLDEFAULT}   echo -e ${COLBLUE}"[ ${newest_mage} ]"${COLDEFAULT}
1834   echo "It is recommened to install this newer version"   echo "It is recommened to install this newer version"
1835   echo "or your current system installation may brake."   echo "or your current system installation may break."
1836   echo   echo
1837   echo -en "Please update mage by running "   echo -en "Please update mage by running "
1838   echo -e ${COLGREEN}"'mage install mage'"${COLDEFAULT}   echo -e ${COLGREEN}"'mage install mage'"${COLDEFAULT}
# Line 1966  get_value_from_magefile() Line 2104  get_value_from_magefile()
2104   local magefile="$2"   local magefile="$2"
2105   local value   local value
2106    
2107     [[ -z ${var} ]] && return 1
2108     [[ -z ${magefile} ]] && return 1
2109    
2110   # local all possible vars of a mage file   # local all possible vars of a mage file
2111   # to prevent bad issues   # to prevent bad issues
2112   local PKGNAME   local PKGNAME
# Line 2095  mage_install() Line 2236  mage_install()
2236   echo B:${pbuild}   echo B:${pbuild}
2237   fi   fi
2238    
2239   smage2file=${SMAGESCRIPTSDIR}/${pname}/${pname}-${pver}-${pbuild}.smage2   if [[ -z ${MAGE_TARGETS} ]]
2240     then
2241     smage2file=${SMAGESCRIPTSDIR}/${pname}/${pname}-${pver}-${pbuild}.smage2
2242     else
2243     smage2file=${SMAGESCRIPTSDIR}/${pname/${MAGE_TARGETS}/}/${pname/${MAGE_TARGETS}/}-${pver}-${pbuild}.smage2
2244     fi
2245   if [ -f "${smage2file}" ]   if [ -f "${smage2file}" ]
2246   then   then
2247     echo -e " ${COLBLUE}***${COLDEFAULT} building package from source ... "
2248   smage2 ${smage2file} || die "compile failed"   smage2 ${smage2file} || die "compile failed"
2249   else   else
2250   echo   echo
# Line 2111  mage_install() Line 2258  mage_install()
2258   if [[ ${PKGTYPE} != virtual ]] && \   if [[ ${PKGTYPE} != virtual ]] && \
2259   [[ ${PKGTYPE} != sources ]]   [[ ${PKGTYPE} != sources ]]
2260   then   then
2261   # 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  
2262   build_doinstall ${PKGNAME}   build_doinstall ${PKGNAME}
2263   fi   fi
2264    
# Line 2375  mage_uninstall() Line 2515  mage_uninstall()
2515   echo -ne "${COLBLUE} <<< ${COLDEFAULT}"   echo -ne "${COLBLUE} <<< ${COLDEFAULT}"
2516   echo -n "removing: "   echo -n "removing: "
2517   echo -ne "${COLBLUE}${pcat}/${COLDEFAULT}"   echo -ne "${COLBLUE}${pcat}/${COLDEFAULT}"
2518   echo -e "${COLGREEN}${pname}-${pver}-${pbuild}${COLDEFAULT}"   echo -e "${COLRED}${pname}-${pver}-${pbuild}${COLDEFAULT}"
2519    
2520   magefile="${INSTALLDB}/${pcat}/${pname}-${pver}-${pbuild}/${pname}-${pver}-${pbuild}.mage"   magefile="${MROOT}${INSTALLDB}/${pcat}/${pname}-${pver}-${pbuild}/${pname}-${pver}-${pbuild}.mage"
2521   source ${magefile}   source ${magefile}
2522    
2523   ## preremove scripts   ## preremove scripts
# Line 2475  pkgsearch() Line 2615  pkgsearch()
2615   local all_installed   local all_installed
2616   local ipver   local ipver
2617   local ipbuild   local ipbuild
2618     local latest_available
2619     local depsfull
2620     local sdepsfull
2621     local deps
2622     local sdeps
2623     local dep
2624     local sign
2625    
2626   # only names no versions   # only names no versions
2627   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')"
2628   #result="$(find ${MAGEDIR} -type f -name *${string}*.mage | sort)"   #result="$(find ${MAGEDIR} -type f -name '*'${string}'*'.mage | sort)"
2629    
2630   # nothing found   # nothing found
2631   [[ -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 2639  pkgsearch()
2639   # get highest version available   # get highest version available
2640   magefile=$(get_highest_magefile ${pcat} ${pname})   magefile=$(get_highest_magefile ${pcat} ${pname})
2641    
2642   # now get all needed infos to print a nice output   if [[ ! -z ${magefile} ]]
2643   pver="$(magename2pver ${magefile})"   then
2644   pbuild="$(magename2pbuild ${magefile})"   # now get all needed infos to print a nice output
2645   state="$(get_value_from_magefile STATE ${magefile})"   pver="$(magename2pver ${magefile})"
2646   description="$(get_value_from_magefile DESCRIPTION ${magefile})"   pbuild="$(magename2pbuild ${magefile})"
2647   homepage="$(get_value_from_magefile HOMEPAGE ${magefile})"   state="$(get_value_from_magefile STATE ${magefile})"
2648     description="$(get_value_from_magefile DESCRIPTION ${magefile})"
2649     homepage="$(get_value_from_magefile HOMEPAGE ${magefile})"
2650    
2651     # all installed
2652     for i in $(get_uninstall_candidates --pname ${pname} --pcat ${pcat})
2653     do
2654     ipver="$(magename2pver ${i})"
2655     ipbuild="$(magename2pbuild ${i})"
2656    
2657     if [[ -z ${all_installed} ]]
2658     then
2659     all_installed="${ipver}-${ipbuild}"
2660     else
2661     all_installed="${all_installed} ${ipver}-${ipbuild}"
2662     fi
2663     done
2664     [[ -z ${all_installed} ]] && all_installed="none"
2665    
2666     case ${state} in
2667     stable) state=${COLGREEN}"[s] ";;
2668     testing) state=${COLYELLOW}"[t] ";;
2669     unstable) state=${COLRED}"[u] ";;
2670     old) state=${COLGRAY}"[o] ";;
2671     esac
2672    
2673   # all installed   latest_available="${pver}-${pbuild}"
2674   for i in $(get_uninstall_candidates --pname ${pname} --pcat ${pcat})   else
2675   do   # package is masked
2676   ipver="$(magename2pver ${i})"   state="${COLRED}[m] "
2677   ipbuild="$(magename2pbuild ${i})"   latest_available="${COLRED}masked for this distribution.${COLDEFAULT}"
2678     fi
2679    
2680   if [[ -z ${all_installed} ]]   depsfull="$(get_value_from_magefile DEPEND ${magefile})"
2681   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"  
2682    
2683   case ${state} in   while read sign dep
2684   stable) state=${COLGREEN}"[s] ";;   do
2685   testing) state=${COLYELLOW}"[t] ";;   case ${dep} in
2686   unstable) state=${COLRED}"[u] ";;   "") continue;;
2687   old) state=${COLGRAY}"[o] ";;   esac
2688   esac  
2689     deps="${deps} $(basename ${dep%-*})"
2690     done << EOF
2691    ${depsfull}
2692    EOF
2693    
2694     while read sign dep
2695     do
2696     case ${dep} in
2697     "") continue;;
2698     esac
2699    
2700     sdeps="${sdeps} $(basename ${dep%-*})"
2701     done << EOF
2702    ${sdepsfull}
2703    EOF
2704    
2705   echo -e "${state}${pcat}/${pname}"${COLDEFAULT}   echo -e "${state}${pcat}/${pname}"${COLDEFAULT}
2706   echo "      Latest available:   ${pver}-${pbuild}"   echo -e "      Latest available:   ${latest_available}"
2707   echo "      Installed versions: ${all_installed}"   echo "      Installed versions: ${all_installed}"
2708   echo "      Description: ${description}"   echo "      Description: ${description}"
2709   echo "      Homepage: ${homepage}"   echo "      Homepage: ${homepage}"
2710     echo "      Depends: ${deps}"
2711     echo "      SDepends: ${sdeps}"
2712   echo   echo
2713    
2714   unset pcat   unset pcat
# Line 2539  pkgsearch() Line 2722  pkgsearch()
2722   unset all_installed   unset all_installed
2723   unset ipver   unset ipver
2724   unset ipbuild   unset ipbuild
2725     unset depsfull
2726     unset sdepsfull
2727     unset deps
2728     unset sdeps
2729     unset dep
2730     unset sign
2731   done   done
2732  }  }
2733    
# Line 2563  export_inherits() Line 2752  export_inherits()
2752   shift   shift
2753   done   done
2754  }  }
2755    
2756    mlibdir()
2757    {
2758     local libdir=lib
2759     [[ ${ARCH} = x86_64 ]] && libdir=lib64
2760    
2761     echo "${libdir}"
2762    }
2763    
2764    ## blacklisted ${magefile}
2765    blacklisted()
2766    {
2767     [[ -z ${MAGE_DISTRIBUTION} ]] && local MAGE_DISTRIBUTION=stable
2768    
2769     # compat
2770     [[ ${USE_UNSTABLE} = true ]] && local MAGE_DISTRIBUTION=unstable
2771     [[ ${USE_TESTING} = true ]] && local MAGE_DISTRIBUTION=testing
2772    
2773     local EXCLUDED="${MROOT}/etc/mage-profile/package.blacklist-${ARCH}-${MAGE_DISTRIBUTION}"
2774    
2775     # return 0 if the list not exist; nothin is masked
2776     [[ ! -f ${EXCLUDED} ]] && return 0
2777    
2778     local MAGEFILE="$1"
2779    
2780     local PCAT="$(magename2pcat ${MAGEFILE})"
2781     local PNAME="$(magename2pname ${MAGEFILE})"
2782     local PVER="$(magename2pver ${MAGEFILE})"
2783     local PBUILD="$(magename2pbuild ${MAGEFILE})"
2784    
2785     local EXPCAT EXPNAME EXPVER EXPBUILD
2786     while read EXPCAT EXPNAME EXPVER EXPBUILD
2787     do
2788     # ignore spaces and comments
2789             case "${EXPCAT}" in
2790                     \#*|"") continue ;;
2791             esac
2792    
2793     # exclude full pver
2794     if [[ -n ${PCAT} ]] && [[ -n ${PNAME} ]] &&
2795     [[ -n ${EXPCAT} ]] && [[ -n ${EXPNAME} ]] &&
2796     [[ -n ${PVER} ]] && [[ -n ${PBUILD} ]] &&
2797     [[ -n ${EXPVER} ]] && [[ -n ${EXPBUILD} ]]
2798     then
2799     [[ ${EXPCAT}/${EXPNAME}-${EXPVER}-${EXPBUILD} = ${PCAT}/${PNAME}-${PVER}-${PBUILD} ]] && return 1
2800     fi
2801    
2802     # exclude pcat/pname only
2803     if [[ -n ${PCAT} ]] && [[ -n ${PNAME} ]] &&
2804     [[ -n ${EXPCAT} ]] && [[ -n ${EXPNAME} ]] &&
2805     [[ -z ${EXPVER} ]] && [[ -z ${EXPBUILD} ]]
2806     then
2807     [[ ${EXPCAT}/${EXPNAME} = ${PCAT}/${PNAME} ]] && return 1
2808     fi
2809     done << EOF
2810    $( cat ${EXCLUDED}; echo)
2811    EOF
2812    
2813     return 0
2814    }
2815    

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