Magellan Linux

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

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

revision 328 by niro, Wed Feb 15 18:23:30 2006 UTC revision 445 by niro, Mon Mar 19 20:00:35 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.15 2006-02-15 18:23:30 niro Exp $  # $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/mage4.functions.sh,v 1.28 2007-03-19 20:00:35 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 1468  get_uninstall_candidates() Line 1459  get_uninstall_candidates()
1459   shift   shift
1460   done   done
1461    
1462   # sanity checks; abort if not given  # it's not good to complain here about empty pnames; better to continue later anyway
1463   [ -z "${search_pname}" ] && die "get_uninstall_candidates() \$search_pname not given."  # # sanity checks; abort if not given
1464    # [ -z "${search_pname}" ] && die "get_uninstall_candidates() \$search_pname not given."
1465    
1466    
1467   # check needed global vars   # check needed global vars
1468   [ -z "${INSTALLDB}" ] && die "get_uninstall_candidates() \$INSTALLDB not set."   [ -z "${INSTALLDB}" ] && die "get_uninstall_candidates() \$INSTALLDB not set."
1469    
1470   # set pcatdir to '*' if empty   # set pcatdir to '*' if empty
1471   [ -z "${pcatdir}" ] && pcatdir=*   [ -z "${pcatdir}" ] && pcatdir='*'
1472    
1473   for pkg in ${MROOT}${INSTALLDB}/${pcatdir}/*   for pkg in ${MROOT}${INSTALLDB}/${pcatdir}/*
1474   do   do
# Line 1565  virtuals_add() Line 1557  virtuals_add()
1557    
1558   if virtuals_read ${virtualname}   if virtuals_read ${virtualname}
1559   then   then
1560   # make shure ${PKG_NAME} is *not* in ${VIRTUAL_NAME} already   # make sure ${PKG_NAME} is *not* in ${VIRTUAL_NAME} already
1561   for i in $(virtuals_read ${virtualname} showpkgs)   for i in $(virtuals_read ${virtualname} showpkgs)
1562   do   do
1563   if [[ ${i} = ${pkgname} ]]   if [[ ${i} = ${pkgname} ]]
# Line 1716  minclude() Line 1708  minclude()
1708  {  {
1709   local i   local i
1710    
1711   if [ -n "$@" ]   if [[ -n $* ]]
1712   then   then
1713   for i in $@   for i in $*
1714   do   do
1715   [[ ${MAGEDEBUG} = on ]] && \   [[ ${MAGEDEBUG} = on ]] && \
1716   echo "--- Including ${MAGEDIR}/include/${i}.minc"   echo "--- Including ${MAGEDIR}/include/${i}.minc"
# Line 1732  sminclude() Line 1724  sminclude()
1724  {  {
1725   local i   local i
1726    
1727   if [ -n "$@" ]   if [[ -n $* ]]
1728   then   then
1729   for i in $@   for i in $*
1730   do   do
1731   echo "--- Including ${SMAGESCRIPTSDIR}/include/${i}.sminc"   echo "--- Including ${SMAGESCRIPTSDIR}/include/${i}.sminc"
1732   source ${SMAGESCRIPTSDIR}/include/${i}.sminc   source ${SMAGESCRIPTSDIR}/include/${i}.sminc
# Line 1758  is_newer_mage_version_available() Line 1750  is_newer_mage_version_available()
1750   echo -en ${COLRED}"An update for your packetmanager is available. "${COLDEFAULT}   echo -en ${COLRED}"An update for your packetmanager is available. "${COLDEFAULT}
1751   echo -e ${COLBLUE}"[ ${newest_mage} ]"${COLDEFAULT}   echo -e ${COLBLUE}"[ ${newest_mage} ]"${COLDEFAULT}
1752   echo "It is recommened to install this newer version"   echo "It is recommened to install this newer version"
1753   echo "or your current system installation may brake."   echo "or your current system installation may break."
1754   echo   echo
1755   echo -en "Please update mage by running "   echo -en "Please update mage by running "
1756   echo -e ${COLGREEN}"'mage install mage'"${COLDEFAULT}   echo -e ${COLGREEN}"'mage install mage'"${COLDEFAULT}
# Line 2030  get_value_from_magefile() Line 2022  get_value_from_magefile()
2022   local magefile="$2"   local magefile="$2"
2023   local value   local value
2024    
2025     [[ -z ${var} ]] && return 1
2026     [[ -z ${magefile} ]] && return 1
2027    
2028   # local all possible vars of a mage file   # local all possible vars of a mage file
2029   # to prevent bad issues   # to prevent bad issues
2030   local PKGNAME   local PKGNAME
# Line 2162  mage_install() Line 2157  mage_install()
2157   smage2file=${SMAGESCRIPTSDIR}/${pname}/${pname}-${pver}-${pbuild}.smage2   smage2file=${SMAGESCRIPTSDIR}/${pname}/${pname}-${pver}-${pbuild}.smage2
2158   if [ -f "${smage2file}" ]   if [ -f "${smage2file}" ]
2159   then   then
2160     echo -e " ${COLBLUE}***${COLDEFAULT} building package from source ... "
2161   smage2 ${smage2file} || die "compile failed"   smage2 ${smage2file} || die "compile failed"
2162   else   else
2163   echo   echo
# Line 2175  mage_install() Line 2171  mage_install()
2171   if [[ ${PKGTYPE} != virtual ]] && \   if [[ ${PKGTYPE} != virtual ]] && \
2172   [[ ${PKGTYPE} != sources ]]   [[ ${PKGTYPE} != sources ]]
2173   then   then
2174   # 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  
2175   build_doinstall ${PKGNAME}   build_doinstall ${PKGNAME}
2176   fi   fi
2177    
# Line 2439  mage_uninstall() Line 2428  mage_uninstall()
2428   echo -ne "${COLBLUE} <<< ${COLDEFAULT}"   echo -ne "${COLBLUE} <<< ${COLDEFAULT}"
2429   echo -n "removing: "   echo -n "removing: "
2430   echo -ne "${COLBLUE}${pcat}/${COLDEFAULT}"   echo -ne "${COLBLUE}${pcat}/${COLDEFAULT}"
2431   echo -e "${COLGREEN}${pname}-${pver}-${pbuild}${COLDEFAULT}"   echo -e "${COLRED}${pname}-${pver}-${pbuild}${COLDEFAULT}"
2432    
2433   magefile="${INSTALLDB}/${pcat}/${pname}-${pver}-${pbuild}/${pname}-${pver}-${pbuild}.mage"   magefile="${INSTALLDB}/${pcat}/${pname}-${pver}-${pbuild}/${pname}-${pver}-${pbuild}.mage"
2434   source ${magefile}   source ${magefile}
# Line 2539  pkgsearch() Line 2528  pkgsearch()
2528   local all_installed   local all_installed
2529   local ipver   local ipver
2530   local ipbuild   local ipbuild
2531     local latest_available
2532    
2533   # only names no versions   # only names no versions
2534   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')"
2535   #result="$(find ${MAGEDIR} -type f -name '*'${string}'*'.mage | sort)"   #result="$(find ${MAGEDIR} -type f -name '*'${string}'*'.mage | sort)"
2536    
2537   # nothing found   # nothing found
# Line 2556  pkgsearch() Line 2546  pkgsearch()
2546   # get highest version available   # get highest version available
2547   magefile=$(get_highest_magefile ${pcat} ${pname})   magefile=$(get_highest_magefile ${pcat} ${pname})
2548    
2549   # now get all needed infos to print a nice output   if [[ ! -z ${magefile} ]]
2550   pver="$(magename2pver ${magefile})"   then
2551   pbuild="$(magename2pbuild ${magefile})"   # now get all needed infos to print a nice output
2552   state="$(get_value_from_magefile STATE ${magefile})"   pver="$(magename2pver ${magefile})"
2553   description="$(get_value_from_magefile DESCRIPTION ${magefile})"   pbuild="$(magename2pbuild ${magefile})"
2554   homepage="$(get_value_from_magefile HOMEPAGE ${magefile})"   state="$(get_value_from_magefile STATE ${magefile})"
2555     description="$(get_value_from_magefile DESCRIPTION ${magefile})"
2556   # all installed   homepage="$(get_value_from_magefile HOMEPAGE ${magefile})"
2557   for i in $(get_uninstall_candidates --pname ${pname} --pcat ${pcat})  
2558   do   # all installed
2559   ipver="$(magename2pver ${i})"   for i in $(get_uninstall_candidates --pname ${pname} --pcat ${pcat})
2560   ipbuild="$(magename2pbuild ${i})"   do
2561     ipver="$(magename2pver ${i})"
2562   if [[ -z ${all_installed} ]]   ipbuild="$(magename2pbuild ${i})"
2563   then  
2564   all_installed="${ipver}-${ipbuild}"   if [[ -z ${all_installed} ]]
2565   else   then
2566   all_installed="${all_installed} ${ipver}-${ipbuild}"   all_installed="${ipver}-${ipbuild}"
2567   fi   else
2568   done   all_installed="${all_installed} ${ipver}-${ipbuild}"
2569   [[ -z ${all_installed} ]] && all_installed="none"   fi
2570     done
2571     [[ -z ${all_installed} ]] && all_installed="none"
2572    
2573     case ${state} in
2574     stable) state=${COLGREEN}"[s] ";;
2575     testing) state=${COLYELLOW}"[t] ";;
2576     unstable) state=${COLRED}"[u] ";;
2577     old) state=${COLGRAY}"[o] ";;
2578     esac
2579    
2580   case ${state} in   latest_available="${pver}-${pbuild}"
2581   stable) state=${COLGREEN}"[s] ";;   else
2582   testing) state=${COLYELLOW}"[t] ";;   # package is masked
2583   unstable) state=${COLRED}"[u] ";;   state="${COLRED}[m] "
2584   old) state=${COLGRAY}"[o] ";;   latest_available="${COLRED}masked for this distribution.${COLDEFAULT}"
2585   esac   fi
2586    
2587   echo -e "${state}${pcat}/${pname}"${COLDEFAULT}   echo -e "${state}${pcat}/${pname}"${COLDEFAULT}
2588   echo "      Latest available:   ${pver}-${pbuild}"   echo -e "      Latest available:   ${latest_available}"
2589   echo "      Installed versions: ${all_installed}"   echo "      Installed versions: ${all_installed}"
2590   echo "      Description: ${description}"   echo "      Description: ${description}"
2591   echo "      Homepage: ${homepage}"   echo "      Homepage: ${homepage}"
# Line 2627  export_inherits() Line 2626  export_inherits()
2626   shift   shift
2627   done   done
2628  }  }
2629    
2630    mlibdir()
2631    {
2632     local libdir=lib
2633     [[ ${ARCH} = x86_64 ]] && libdir=lib64
2634    
2635     echo "${libdir}"
2636    }
2637    
2638    ## blacklisted ${magefile}
2639    blacklisted()
2640    {
2641     [[ -z ${MAGE_DISTRIBUTION} ]] && local MAGE_DISTRIBUTION=stable
2642    
2643     # compat
2644     [[ ${USE_UNSTABLE} = true ]] && local MAGE_DISTRIBUTION=unstable
2645     [[ ${USE_TESTING} = true ]] && local MAGE_DISTRIBUTION=testing
2646    
2647     local EXCLUDED="${MROOT}/etc/mage-profile/package.blacklist-${ARCH}-${MAGE_DISTRIBUTION}"
2648    
2649     # return 0 if the list not exist; nothin is masked
2650     [[ ! -f ${EXCLUDED} ]] && return 0
2651    
2652     local MAGEFILE="$1"
2653    
2654     local PCAT="$(magename2pcat ${MAGEFILE})"
2655     local PNAME="$(magename2pname ${MAGEFILE})"
2656     local PVER="$(magename2pver ${MAGEFILE})"
2657     local PBUILD="$(magename2pbuild ${MAGEFILE})"
2658    
2659     local EXPCAT EXPNAME EXPVER EXPBUILD
2660     while read EXPCAT EXPNAME EXPVER EXPBUILD
2661     do
2662     # ignore spaces and comments
2663             case "${EXPCAT}" in
2664                     \#*|"") continue ;;
2665             esac
2666    
2667     # exclude full pver
2668     if [[ -n ${PCAT} ]] && [[ -n ${PNAME} ]] &&
2669     [[ -n ${EXPCAT} ]] && [[ -n ${EXPNAME} ]] &&
2670     [[ -n ${PVER} ]] && [[ -n ${PBUILD} ]] &&
2671     [[ -n ${EXPVER} ]] && [[ -n ${EXPBUILD} ]]
2672     then
2673     [[ ${EXPCAT}/${EXPNAME}-${EXPVER}-${EXPBUILD} = ${PCAT}/${PNAME}-${PVER}-${PBUILD} ]] && return 1
2674     fi
2675    
2676     # exclude pcat/pname only
2677     if [[ -n ${PCAT} ]] && [[ -n ${PNAME} ]] &&
2678     [[ -n ${EXPCAT} ]] && [[ -n ${EXPNAME} ]] &&
2679     [[ -z ${EXPVER} ]] && [[ -z ${EXPBUILD} ]]
2680     then
2681     [[ ${EXPCAT}/${EXPNAME} = ${PCAT}/${PNAME} ]] && return 1
2682     fi
2683     done << EOF
2684    $( cat ${EXCLUDED}; echo)
2685    EOF
2686    
2687     return 0
2688    }
2689    

Legend:
Removed from v.328  
changed lines
  Added in v.445