Magellan Linux

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

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

revision 329 by niro, Thu Feb 16 22:11:06 2006 UTC revision 449 by niro, Tue Mar 27 16:35:57 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.16 2006-02-16 22:11:06 niro Exp $  # $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/mage4.functions.sh,v 1.29 2007-03-27 16:35:57 niro Exp $
4    
5  mage_setup()  mage_setup()
6  {  {
# Line 1106  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 1181  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 1253  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 1286  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    
# Line 1337  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 1456  get_uninstall_candidates() Line 1447  get_uninstall_candidates()
1447   local list   local list
1448   local pcatdir   local pcatdir
1449   local protected   local protected
1450     local i
1451    
1452   # very basic getops   # very basic getops
1453   for i in $*   for i in $*
# Line 1717  minclude() Line 1709  minclude()
1709  {  {
1710   local i   local i
1711    
1712   if [ -n "$@" ]   if [[ -n $* ]]
1713   then   then
1714   for i in $@   for i in $*
1715   do   do
1716   [[ ${MAGEDEBUG} = on ]] && \   [[ ${MAGEDEBUG} = on ]] && \
1717   echo "--- Including ${MAGEDIR}/include/${i}.minc"   echo "--- Including ${MAGEDIR}/include/${i}.minc"
# Line 1733  sminclude() Line 1725  sminclude()
1725  {  {
1726   local i   local i
1727    
1728   if [ -n "$@" ]   if [[ -n $* ]]
1729   then   then
1730   for i in $@   for i in $*
1731   do   do
1732   echo "--- Including ${SMAGESCRIPTSDIR}/include/${i}.sminc"   echo "--- Including ${SMAGESCRIPTSDIR}/include/${i}.sminc"
1733   source ${SMAGESCRIPTSDIR}/include/${i}.sminc   source ${SMAGESCRIPTSDIR}/include/${i}.sminc
# Line 1759  is_newer_mage_version_available() Line 1751  is_newer_mage_version_available()
1751   echo -en ${COLRED}"An update for your packetmanager is available. "${COLDEFAULT}   echo -en ${COLRED}"An update for your packetmanager is available. "${COLDEFAULT}
1752   echo -e ${COLBLUE}"[ ${newest_mage} ]"${COLDEFAULT}   echo -e ${COLBLUE}"[ ${newest_mage} ]"${COLDEFAULT}
1753   echo "It is recommened to install this newer version"   echo "It is recommened to install this newer version"
1754   echo "or your current system installation may brake."   echo "or your current system installation may break."
1755   echo   echo
1756   echo -en "Please update mage by running "   echo -en "Please update mage by running "
1757   echo -e ${COLGREEN}"'mage install mage'"${COLDEFAULT}   echo -e ${COLGREEN}"'mage install mage'"${COLDEFAULT}
# Line 2031  get_value_from_magefile() Line 2023  get_value_from_magefile()
2023   local magefile="$2"   local magefile="$2"
2024   local value   local value
2025    
2026     [[ -z ${var} ]] && return 1
2027     [[ -z ${magefile} ]] && return 1
2028    
2029   # local all possible vars of a mage file   # local all possible vars of a mage file
2030   # to prevent bad issues   # to prevent bad issues
2031   local PKGNAME   local PKGNAME
# Line 2163  mage_install() Line 2158  mage_install()
2158   smage2file=${SMAGESCRIPTSDIR}/${pname}/${pname}-${pver}-${pbuild}.smage2   smage2file=${SMAGESCRIPTSDIR}/${pname}/${pname}-${pver}-${pbuild}.smage2
2159   if [ -f "${smage2file}" ]   if [ -f "${smage2file}" ]
2160   then   then
2161     echo -e " ${COLBLUE}***${COLDEFAULT} building package from source ... "
2162   smage2 ${smage2file} || die "compile failed"   smage2 ${smage2file} || die "compile failed"
2163   else   else
2164   echo   echo
# Line 2176  mage_install() Line 2172  mage_install()
2172   if [[ ${PKGTYPE} != virtual ]] && \   if [[ ${PKGTYPE} != virtual ]] && \
2173   [[ ${PKGTYPE} != sources ]]   [[ ${PKGTYPE} != sources ]]
2174   then   then
2175   # 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  
2176   build_doinstall ${PKGNAME}   build_doinstall ${PKGNAME}
2177   fi   fi
2178    
# Line 2440  mage_uninstall() Line 2429  mage_uninstall()
2429   echo -ne "${COLBLUE} <<< ${COLDEFAULT}"   echo -ne "${COLBLUE} <<< ${COLDEFAULT}"
2430   echo -n "removing: "   echo -n "removing: "
2431   echo -ne "${COLBLUE}${pcat}/${COLDEFAULT}"   echo -ne "${COLBLUE}${pcat}/${COLDEFAULT}"
2432   echo -e "${COLGREEN}${pname}-${pver}-${pbuild}${COLDEFAULT}"   echo -e "${COLRED}${pname}-${pver}-${pbuild}${COLDEFAULT}"
2433    
2434   magefile="${INSTALLDB}/${pcat}/${pname}-${pver}-${pbuild}/${pname}-${pver}-${pbuild}.mage"   magefile="${INSTALLDB}/${pcat}/${pname}-${pver}-${pbuild}/${pname}-${pver}-${pbuild}.mage"
2435   source ${magefile}   source ${magefile}
# Line 2540  pkgsearch() Line 2529  pkgsearch()
2529   local all_installed   local all_installed
2530   local ipver   local ipver
2531   local ipbuild   local ipbuild
2532     local latest_available
2533    
2534   # only names no versions   # only names no versions
2535   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')"
2536   #result="$(find ${MAGEDIR} -type f -name '*'${string}'*'.mage | sort)"   #result="$(find ${MAGEDIR} -type f -name '*'${string}'*'.mage | sort)"
2537    
2538   # nothing found   # nothing found
# Line 2557  pkgsearch() Line 2547  pkgsearch()
2547   # get highest version available   # get highest version available
2548   magefile=$(get_highest_magefile ${pcat} ${pname})   magefile=$(get_highest_magefile ${pcat} ${pname})
2549    
2550   # now get all needed infos to print a nice output   if [[ ! -z ${magefile} ]]
2551   pver="$(magename2pver ${magefile})"   then
2552   pbuild="$(magename2pbuild ${magefile})"   # now get all needed infos to print a nice output
2553   state="$(get_value_from_magefile STATE ${magefile})"   pver="$(magename2pver ${magefile})"
2554   description="$(get_value_from_magefile DESCRIPTION ${magefile})"   pbuild="$(magename2pbuild ${magefile})"
2555   homepage="$(get_value_from_magefile HOMEPAGE ${magefile})"   state="$(get_value_from_magefile STATE ${magefile})"
2556     description="$(get_value_from_magefile DESCRIPTION ${magefile})"
2557   # all installed   homepage="$(get_value_from_magefile HOMEPAGE ${magefile})"
2558   for i in $(get_uninstall_candidates --pname ${pname} --pcat ${pcat})  
2559   do   # all installed
2560   ipver="$(magename2pver ${i})"   for i in $(get_uninstall_candidates --pname ${pname} --pcat ${pcat})
2561   ipbuild="$(magename2pbuild ${i})"   do
2562     ipver="$(magename2pver ${i})"
2563   if [[ -z ${all_installed} ]]   ipbuild="$(magename2pbuild ${i})"
2564   then  
2565   all_installed="${ipver}-${ipbuild}"   if [[ -z ${all_installed} ]]
2566   else   then
2567   all_installed="${all_installed} ${ipver}-${ipbuild}"   all_installed="${ipver}-${ipbuild}"
2568   fi   else
2569   done   all_installed="${all_installed} ${ipver}-${ipbuild}"
2570   [[ -z ${all_installed} ]] && all_installed="none"   fi
2571     done
2572     [[ -z ${all_installed} ]] && all_installed="none"
2573    
2574     case ${state} in
2575     stable) state=${COLGREEN}"[s] ";;
2576     testing) state=${COLYELLOW}"[t] ";;
2577     unstable) state=${COLRED}"[u] ";;
2578     old) state=${COLGRAY}"[o] ";;
2579     esac
2580    
2581   case ${state} in   latest_available="${pver}-${pbuild}"
2582   stable) state=${COLGREEN}"[s] ";;   else
2583   testing) state=${COLYELLOW}"[t] ";;   # package is masked
2584   unstable) state=${COLRED}"[u] ";;   state="${COLRED}[m] "
2585   old) state=${COLGRAY}"[o] ";;   latest_available="${COLRED}masked for this distribution.${COLDEFAULT}"
2586   esac   fi
2587    
2588   echo -e "${state}${pcat}/${pname}"${COLDEFAULT}   echo -e "${state}${pcat}/${pname}"${COLDEFAULT}
2589   echo "      Latest available:   ${pver}-${pbuild}"   echo -e "      Latest available:   ${latest_available}"
2590   echo "      Installed versions: ${all_installed}"   echo "      Installed versions: ${all_installed}"
2591   echo "      Description: ${description}"   echo "      Description: ${description}"
2592   echo "      Homepage: ${homepage}"   echo "      Homepage: ${homepage}"
# Line 2628  export_inherits() Line 2627  export_inherits()
2627   shift   shift
2628   done   done
2629  }  }
2630    
2631    mlibdir()
2632    {
2633     local libdir=lib
2634     [[ ${ARCH} = x86_64 ]] && libdir=lib64
2635    
2636     echo "${libdir}"
2637    }
2638    
2639    ## blacklisted ${magefile}
2640    blacklisted()
2641    {
2642     [[ -z ${MAGE_DISTRIBUTION} ]] && local MAGE_DISTRIBUTION=stable
2643    
2644     # compat
2645     [[ ${USE_UNSTABLE} = true ]] && local MAGE_DISTRIBUTION=unstable
2646     [[ ${USE_TESTING} = true ]] && local MAGE_DISTRIBUTION=testing
2647    
2648     local EXCLUDED="${MROOT}/etc/mage-profile/package.blacklist-${ARCH}-${MAGE_DISTRIBUTION}"
2649    
2650     # return 0 if the list not exist; nothin is masked
2651     [[ ! -f ${EXCLUDED} ]] && return 0
2652    
2653     local MAGEFILE="$1"
2654    
2655     local PCAT="$(magename2pcat ${MAGEFILE})"
2656     local PNAME="$(magename2pname ${MAGEFILE})"
2657     local PVER="$(magename2pver ${MAGEFILE})"
2658     local PBUILD="$(magename2pbuild ${MAGEFILE})"
2659    
2660     local EXPCAT EXPNAME EXPVER EXPBUILD
2661     while read EXPCAT EXPNAME EXPVER EXPBUILD
2662     do
2663     # ignore spaces and comments
2664             case "${EXPCAT}" in
2665                     \#*|"") continue ;;
2666             esac
2667    
2668     # exclude full pver
2669     if [[ -n ${PCAT} ]] && [[ -n ${PNAME} ]] &&
2670     [[ -n ${EXPCAT} ]] && [[ -n ${EXPNAME} ]] &&
2671     [[ -n ${PVER} ]] && [[ -n ${PBUILD} ]] &&
2672     [[ -n ${EXPVER} ]] && [[ -n ${EXPBUILD} ]]
2673     then
2674     [[ ${EXPCAT}/${EXPNAME}-${EXPVER}-${EXPBUILD} = ${PCAT}/${PNAME}-${PVER}-${PBUILD} ]] && return 1
2675     fi
2676    
2677     # exclude pcat/pname only
2678     if [[ -n ${PCAT} ]] && [[ -n ${PNAME} ]] &&
2679     [[ -n ${EXPCAT} ]] && [[ -n ${EXPNAME} ]] &&
2680     [[ -z ${EXPVER} ]] && [[ -z ${EXPBUILD} ]]
2681     then
2682     [[ ${EXPCAT}/${EXPNAME} = ${PCAT}/${PNAME} ]] && return 1
2683     fi
2684     done << EOF
2685    $( cat ${EXCLUDED}; echo)
2686    EOF
2687    
2688     return 0
2689    }
2690    

Legend:
Removed from v.329  
changed lines
  Added in v.449