Magellan Linux

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

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

revision 458 by niro, Tue Apr 10 09:21:55 2007 UTC revision 966 by niro, Fri Feb 19 19:59:22 2010 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.31 2007-04-10 09:21:55 niro Exp $  # $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/mage4.functions.sh,v 1.38 2008-10-05 10:32:24 niro Exp $
4    
5  mage_setup()  mage_setup()
6  {  {
# Line 198  install_files() Line 198  install_files()
198   is_config_protected "${pathto}"   is_config_protected "${pathto}"
199   retval="$?"   retval="$?"
200    
201   # 0 - not protected        #   # 0 - not protected         #
202   # 1 - error                #   # 1 - error                 #
203   # 2 - protected            #   # 2 - protected             #
204   # 3 - protected but masked #   # 3 - protected but masked  #
205     # 4 - protected but ignored #
206    
207   case ${retval} in   case ${retval} in
208   # file is not protected - (over)write it   # file is not protected - (over)write it
# Line 252  install_files() Line 253  install_files()
253   (( MAGE_PROTECT_COUNTER++ ))   (( MAGE_PROTECT_COUNTER++ ))
254   export MAGE_PROTECT_COUNTER   export MAGE_PROTECT_COUNTER
255   ;;   ;;
256    
257     # file is protected but ignored, delete the update/do nothing
258     4)
259     if [[ ${VERBOSE} = on ]]
260     then
261     echo -en "${COLRED}"
262     echo -n "! ignr "
263     echo -en "${COLDEFAULT}"
264     echo " === FILE: ${MROOT}${pathto}"
265     fi
266     # simply do nothing here
267     ;;
268   esac   esac
269   done < ${BUILDDIR}/${pkgname}/.files   done < ${BUILDDIR}/${pkgname}/.files
270    
# Line 298  install_symlinks() Line 311  install_symlinks()
311    
312   ln -snf "${link}" "${MROOT}${pathto}"   ln -snf "${link}" "${MROOT}${pathto}"
313    
314   # fix mtime and db  # # fix mtime and db
315   fix_descriptor ${pkgname}/.symlinks \  # fix_descriptor ${pkgname}/.symlinks \
316   "${pathto}" \  # "${pathto}" \
317   "${posix}" \  # "${posix}" \
318   "${link}" \  # "${link}" \
319   "$(fix_mtime "${BUILDDIR}/${pkgname}"/.mtime \  # "$(fix_mtime "${BUILDDIR}/${pkgname}"/.mtime \
320   "${MROOT}${pathto}")"  # "${MROOT}${pathto}")"
321    
322   done < ${BUILDDIR}/${pkgname}/.symlinks   done < ${BUILDDIR}/${pkgname}/.symlinks
323    
324   # now copy the fixed file over the old one  # # now copy the fixed file over the old one
325   [ -f ${BUILDDIR}/${pkgname}/.symlinks_fixed ] && \  # [ -f ${BUILDDIR}/${pkgname}/.symlinks_fixed ] && \
326   cp -f ${BUILDDIR}/${pkgname}/.symlinks{_fixed,}  # cp -f ${BUILDDIR}/${pkgname}/.symlinks{_fixed,}
327    
328   # very important: unsetting the '§' fieldseperator   # very important: unsetting the '§' fieldseperator
329   IFS=$'\n'   IFS=$'\n'
# Line 809  remove_files() Line 822  remove_files()
822   is_config_protected "${pathto}"   is_config_protected "${pathto}"
823   retval="$?"   retval="$?"
824    
825   # 0 - not protected        #   # 0 - not protected         #
826   # 1 - error                #   # 1 - error                 #
827   # 2 - protected            #   # 2 - protected             #
828   # 3 - protected but masked #   # 3 - protected but masked  #
829     # 4 - protected but ignored #
830    
831   case ${retval} in   case ${retval} in
832   # file is not protected - delete it   # file is not protected - delete it
# Line 831  remove_files() Line 845  remove_files()
845   echo " === FILE: ${MROOT}${pathto}"   echo " === FILE: ${MROOT}${pathto}"
846   fi   fi
847   ;;   ;;
848    
849     # file is protected but ignored, delete the update/do nothing
850     4)
851     if [[ ${VERBOSE} = on ]]
852     then
853     echo -en "${COLRED}"
854     echo -n "! ignr "
855     echo -en "${COLDEFAULT}"
856     echo " === FILE: ${MROOT}${pathto}"
857     fi
858     # simply do nothing here
859     ;;
860   esac   esac
861   ;;   ;;
862   1)   1)
# Line 1199  syncmage() Line 1225  syncmage()
1225   # clean up backup files (foo~)   # clean up backup files (foo~)
1226   find ${MAGEDIR} -name *~ -exec rm '{}' ';'   find ${MAGEDIR} -name *~ -exec rm '{}' ';'
1227    
1228   # check if an newer mage version is available   # check if a newer mage version is available
1229   is_newer_mage_version_available   is_newer_mage_version_available
1230  }  }
1231    
1232    syncmage_tarball()
1233    {
1234     local latest_tarball
1235     local temp="$(mktemp -d)"
1236     local mirr mymirr
1237    
1238     # try to get the tarball marked as latest on the server
1239     latest_tarball="mage-latest.tar.bz2"
1240    
1241     for mirr in ${MIRRORS}
1242     do
1243     # path without distribution
1244     mymirr="${mirr%/*}"
1245    
1246     echo -ne "${COLBLUE} --- ${COLDEFAULT}"
1247     echo "fetching latest tarball from ${mymirr} ..."
1248    
1249     wget \
1250     --passive-ftp \
1251     --tries 3 \
1252     --continue \
1253     --progress bar \
1254     --directory-prefix=${temp} \
1255     ${mymirr}/rsync/tarballs/${latest_tarball}
1256     if [[ $? = 0 ]]
1257     then
1258     break
1259     else
1260     continue
1261     fi
1262     done
1263    
1264     if [[ -f ${temp}/${latest_tarball} ]]
1265     then
1266     if [[ -d ${MAGEDIR} ]]
1267     then
1268     echo -ne "${COLBLUE} --- ${COLDEFAULT}"
1269     echo "cleaning old mage-tree ${MAGEDIR}..."
1270     rm -rf ${MAGEDIR}
1271     fi
1272    
1273     echo -ne "${COLBLUE} --- ${COLDEFAULT}"
1274     echo "updating mage-tree from tarball ..."
1275     # unpack in dirname of MAGEDIR, as the tarball has already the mage
1276     tar xjmf ${temp}/${latest_tarball} -C ${MAGEDIR%/*} || die "Unpacking tarball"
1277    
1278     if [[ -d ${temp} ]]
1279     then
1280     echo -ne "${COLBLUE} --- ${COLDEFAULT}"
1281     echo "clenaing temp-files ..."
1282     rm -rf ${temp}
1283     fi
1284    
1285     # check if a newer mage version is available
1286     is_newer_mage_version_available
1287     else
1288     die "Could not fetch the latest tarball ... aborting"
1289     fi
1290    }
1291    
1292  cleanpkg()  cleanpkg()
1293  {  {
1294   if [ -d "${PKGDIR}" ]   if [ -d "${PKGDIR}" ]
# Line 1315  get_highest_magefile() Line 1401  get_highest_magefile()
1401   local PNAME="$2"   local PNAME="$2"
1402   local magefile   local magefile
1403    
1404   for magefile in $(ls --format=single-column -v ${MAGEDIR}/${PCAT}/${PNAME}/*)   # do not list the content of a directory, only the name (-d)
1405     for magefile in $(ls --format=single-column -v -d ${MAGEDIR}/${PCAT}/${PNAME}/*)
1406   do   do
1407     [[ -z ${magefile} ]] && continue
1408   # we exclude subdirs (for stuff like a md5sum dir)   # we exclude subdirs (for stuff like a md5sum dir)
1409   [ -d ${magefile} ] && continue   [[ -d ${magefile} ]] && continue
1410   if check_stable_package ${magefile}   if check_stable_package ${magefile}
1411   then   then
1412   HIGHEST_MAGEFILE=${magefile}   HIGHEST_MAGEFILE=${magefile}
# Line 1363  get_highest_magefile() Line 1451  get_highest_magefile()
1451  #        1 - error                                #  #        1 - error                                #
1452  #        2 - protected                            #  #        2 - protected                            #
1453  #        3 - protected but masked                 #  #        3 - protected but masked                 #
1454    #        4 - protected but ignored                #
1455  #                                                 #  #                                                 #
1456  ###################################################  ###################################################
1457  is_config_protected()  is_config_protected()
# Line 1371  is_config_protected() Line 1460  is_config_protected()
1460   local TEST   local TEST
1461   local PROTECTED   local PROTECTED
1462   local IFS   local IFS
1463     local i
1464     local x
1465    
1466   EXPFILE="${MROOT}$1"   EXPFILE="${MROOT}$1"
1467    
# Line 1380  is_config_protected() Line 1471  is_config_protected()
1471   # to be safe; it may be '§'   # to be safe; it may be '§'
1472   IFS=' '   IFS=' '
1473    
1474   # check ob in config protect   # check if config protected
1475   for i in ${CONFIG_PROTECT}   for i in ${CONFIG_PROTECT}
1476   do   do
1477   # ersetzen von $i nur wenn am anfang der variable   # only replace $i in the beginning of the variable
1478   TEST="${EXPFILE/#${MROOT}${i}/Protected}"   TEST="${EXPFILE/#${MROOT}${i}/Protected}"
1479   if [[ ${TEST} != ${EXPFILE} ]]   if [[ ${TEST} != ${EXPFILE} ]]
1480   then   then
1481   # setzen das es protected ist   # file is config proteced
1482   PROTECTED=TRUE   PROTECTED=TRUE
1483    
1484   # check ob nicht doch maskiert   # check if not masked
1485   for x in ${CONFIG_PROTECT_MASK}   for x in ${CONFIG_PROTECT_MASK}
1486   do   do
1487   TEST="${EXPFILE/#${MROOT}${x}/Protect_Masked}"   TEST="${EXPFILE/#${MROOT}${x}/Protect_Masked}"
# Line 1399  is_config_protected() Line 1490  is_config_protected()
1490   PROTECTED=MASKED   PROTECTED=MASKED
1491   fi   fi
1492   done   done
1493    
1494     # check if not ignored
1495     for x in ${CONFIG_PROTECT_IGNORE}
1496     do
1497     TEST="${EXPFILE/#${MROOT}${x}/Protect_Ignored}"
1498     if [[ ${TEST} != ${EXPFILE} ]]
1499     then
1500     PROTECTED=IGNORED
1501     fi
1502     done
1503   fi   fi
1504   done   done
1505    
# Line 1413  is_config_protected() Line 1514  is_config_protected()
1514   #echo "I'm protected, but masked - delete me"   #echo "I'm protected, but masked - delete me"
1515   return 3   return 3
1516   ;;   ;;
1517     IGNORED)
1518     #echo "I'm protected, but ignored - keep me, del update"
1519     return 4
1520     ;;
1521   *)   *)
1522   #echo "delete me"   #echo "delete me"
1523   return 0   return 0
# Line 1430  is_config_protected() Line 1535  is_config_protected()
1535  ###################################################  ###################################################
1536  count_protected_files()  count_protected_files()
1537  {  {
1538   ${MLIBDIR}/writeprotected "$1"   local file="$1"
1539     local dirname="${file%/*}"
1540     local filename="${file##*/}"
1541     local count
1542     local output
1543     local i
1544    
1545     declare -i count=0
1546    
1547     # check if there are already protected files
1548     for oldpretected in $(find ${dirname} -iname "._cfg????_${filename}" |
1549     sed -e "s:\(^.*/\)\(._cfg*_\)\(/.*$\):\1\2\3\%\2\%\3:" |
1550     sort -t'%' -k3 -k2 | cut -f1 -d'%')
1551     do
1552     count=$(echo ${oldpretected} | cut -d_ -f2 | sed -e "s:cfg::")
1553     done
1554     (( count ++ ))
1555    
1556     # fill output up with zeros
1557     for (( i=${#count}; i < 4; i++ )); do output="${output}0"; done
1558     output="${output}${count}"
1559    
1560     echo "${output}"
1561  }  }
1562    
1563  # call with  # call with
# Line 2036  get_value_from_magefile() Line 2163  get_value_from_magefile()
2163   local SDEPEND   local SDEPEND
2164   local PROVIDE   local PROVIDE
2165   local PKGTYPE   local PKGTYPE
2166     local MAGE_TARGETS
2167     local SPLIT_PACKAGE_BASE
2168   local preinstall   local preinstall
2169   local postinstall   local postinstall
2170   local preremove   local preremove
# Line 2082  mage_install() Line 2211  mage_install()
2211   local count_current   local count_current
2212   local magefile   local magefile
2213   local src_install   local src_install
2214     local i
2215    
2216   # very basic getops   # very basic getops
2217   for i in $*   for i in $*
# Line 2155  mage_install() Line 2285  mage_install()
2285   echo B:${pbuild}   echo B:${pbuild}
2286   fi   fi
2287    
2288   smage2file=${SMAGESCRIPTSDIR}/${pname}/${pname}-${pver}-${pbuild}.smage2   if [[ -n ${MAGE_TARGETS} ]]
2289     then
2290     # basic svn compat
2291     if [[ -d ${SMAGESCRIPTSDIR}/trunk ]]
2292     then
2293     for i in ${SMAGESCRIPTSDIR}/trunk/*/${pname/${MAGE_TARGETS}/}/${pname/${MAGE_TARGETS}/}-${pver}-${pbuild}.smage2
2294     do
2295     smage2file="${i}"
2296     done
2297     else
2298     smage2file=${SMAGESCRIPTSDIR}/${pname/${MAGE_TARGETS}/}/${pname/${MAGE_TARGETS}/}-${pver}-${pbuild}.smage2
2299     fi
2300    
2301     elif [[ -n ${SPLIT_PACKAGE_BASE} ]]
2302     then
2303     # basic svn compat
2304     if [[ -d ${SMAGESCRIPTSDIR}/trunk ]]
2305     then
2306     for i in ${SMAGESCRIPTSDIR}/trunk/*/${SPLIT_PACKAGE_BASE}/${SPLIT_PACKAGE_BASE}-${pver}-${pbuild}.smage2
2307     do
2308     smage2file="${i}"
2309     done
2310     else
2311     smage2file=${SMAGESCRIPTSDIR}/${SPLIT_PACKAGE_BASE}/${SPLIT_PACKAGE_BASE}-${pver}-${pbuild}.smage2
2312     fi
2313    
2314     else
2315     # basic svn compat
2316     if [[ -d ${SMAGESCRIPTSDIR}/trunk ]]
2317     then
2318     for i in ${SMAGESCRIPTSDIR}/trunk/*/${pname}/${pname}-${pver}-${pbuild}.smage2
2319     do
2320     smage2file="${i}"
2321     done
2322     else
2323     smage2file=${SMAGESCRIPTSDIR}/${pname}/${pname}-${pver}-${pbuild}.smage2
2324     fi
2325     fi
2326    
2327   if [ -f "${smage2file}" ]   if [ -f "${smage2file}" ]
2328   then   then
2329   echo -e " ${COLBLUE}***${COLDEFAULT} building package from source ... "   echo -e " ${COLBLUE}***${COLDEFAULT} building package from source ... "
# Line 2431  mage_uninstall() Line 2599  mage_uninstall()
2599   echo -ne "${COLBLUE}${pcat}/${COLDEFAULT}"   echo -ne "${COLBLUE}${pcat}/${COLDEFAULT}"
2600   echo -e "${COLRED}${pname}-${pver}-${pbuild}${COLDEFAULT}"   echo -e "${COLRED}${pname}-${pver}-${pbuild}${COLDEFAULT}"
2601    
2602   magefile="${INSTALLDB}/${pcat}/${pname}-${pver}-${pbuild}/${pname}-${pver}-${pbuild}.mage"   magefile="${MROOT}${INSTALLDB}/${pcat}/${pname}-${pver}-${pbuild}/${pname}-${pver}-${pbuild}.mage"
2603   source ${magefile}   source ${magefile}
2604    
2605   ## preremove scripts   ## preremove scripts
# Line 2684  blacklisted() Line 2852  blacklisted()
2852   [[ ${USE_UNSTABLE} = true ]] && local MAGE_DISTRIBUTION=unstable   [[ ${USE_UNSTABLE} = true ]] && local MAGE_DISTRIBUTION=unstable
2853   [[ ${USE_TESTING} = true ]] && local MAGE_DISTRIBUTION=testing   [[ ${USE_TESTING} = true ]] && local MAGE_DISTRIBUTION=testing
2854    
2855   local EXCLUDED="${MROOT}/etc/mage-profile/package.blacklist-${ARCH}-${MAGE_DISTRIBUTION}"   # support both types for the moment
2856     if [[ -f /etc/mage-profile/package.blacklist-${ARCH}-${MAGE_DISTRIBUTION} ]]
2857     then
2858     local EXCLUDED="/etc/mage-profile/package.blacklist-${ARCH}-${MAGE_DISTRIBUTION}"
2859     else
2860     local EXCLUDED="/etc/mage-profile/package.blacklist-${ARCH}"
2861     fi
2862    
2863   # return 0 if the list not exist; nothin is masked   # return 0 if the list not exist; nothin is masked
2864   [[ ! -f ${EXCLUDED} ]] && return 0   [[ ! -f ${EXCLUDED} ]] && return 0

Legend:
Removed from v.458  
changed lines
  Added in v.966