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 391 by niro, Sun Aug 27 19:17:14 2006 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.22 2006-08-27 19:17:14 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 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 1123  syncmage() Line 1187  syncmage()
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 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 1404  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 1501  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 1694  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 1966  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 2098  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 2111  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 2477  pkgsearch() Line 2530  pkgsearch()
2530   local ipbuild   local ipbuild
2531    
2532   # only names no versions   # only names no versions
2533   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')"
2534   #result="$(find ${MAGEDIR} -type f -name *${string}*.mage | sort)"   #result="$(find ${MAGEDIR} -type f -name '*'${string}'*'.mage | sort)"
2535    
2536   # nothing found   # nothing found
2537   [[ -z ${result} ]] && die "No package found containing '${string}' in the name."   [[ -z ${result} ]] && die "No package found containing '${string}' in the name."
# Line 2563  export_inherits() Line 2616  export_inherits()
2616   shift   shift
2617   done   done
2618  }  }
2619    
2620    mlibdir()
2621    {
2622     local libdir=lib
2623     [[ ${ARCH} = x86_64 ]] && libdir=lib64
2624    
2625     echo "${libdir}"
2626    }
2627    
2628    ## blacklisted ${magefile}
2629    blacklisted()
2630    {
2631     [[ -z ${MAGE_DISTRIBUTION} ]] && local MAGE_DISTRIBUTION=stable
2632    
2633     # compat
2634     [[ ${USE_UNSTABLE} = true ]] && local MAGE_DISTRIBUTION=unstable
2635     [[ ${USE_TESTING} = true ]] && local MAGE_DISTRIBUTION=testing
2636    
2637     local EXCLUDED="${MROOT}/etc/mage-profile/package.blacklist-${ARCH}-${MAGE_DISTRIBUTION}"
2638    
2639     # return 0 if the list not exist; nothin is masked
2640     [[ ! -f ${EXCLUDED} ]] && return 0
2641    
2642     local MAGEFILE="$1"
2643    
2644     local PCAT="$(magename2pcat ${MAGEFILE})"
2645     local PNAME="$(magename2pname ${MAGEFILE})"
2646     local PVER="$(magename2pver ${MAGEFILE})"
2647     local PBUILD="$(magename2pbuild ${MAGEFILE})"
2648    
2649     local EXPCAT EXPNAME EXPVER EXPBUILD
2650     while read EXPCAT EXPNAME EXPVER EXPBUILD
2651     do
2652     # ignore spaces and comments
2653             case "${EXPCAT}" in
2654                     \#*|"") continue ;;
2655             esac
2656    
2657     # exclude full pver
2658     if [[ -n ${PCAT} ]] && [[ -n ${PNAME} ]] &&
2659     [[ -n ${EXPCAT} ]] && [[ -n ${EXPNAME} ]] &&
2660     [[ -n ${PVER} ]] && [[ -n ${PBUILD} ]] &&
2661     [[ -n ${EXPVER} ]] && [[ -n ${EXPBUILD} ]]
2662     then
2663     [[ ${EXPCAT}/${EXPNAME}-${EXPVER}-${EXPBUILD} = ${PCAT}/${PNAME}-${PVER}-${PBUILD} ]] && return 1
2664     fi
2665    
2666     # exclude pcat/pname only
2667     if [[ -n ${PCAT} ]] && [[ -n ${PNAME} ]] &&
2668     [[ -n ${EXPCAT} ]] && [[ -n ${EXPNAME} ]] &&
2669     [[ -z ${EXPVER} ]] && [[ -z ${EXPBUILD} ]]
2670     then
2671     [[ ${EXPCAT}/${EXPNAME} = ${PCAT}/${PNAME} ]] && return 1
2672     fi
2673     done << EOF
2674    $( cat ${EXCLUDED}; echo)
2675    EOF
2676    
2677     return 0
2678    }
2679    

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