--- trunk/mage/usr/lib/mage/mage4.functions.sh 2007/03/28 20:26:08 451 +++ trunk/mage/usr/lib/mage/mage4.functions.sh 2009/08/04 19:52:16 892 @@ -1,6 +1,6 @@ #!/bin/bash # Magellan Linux Installer Functions (mage.functions.sh) -# $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/mage4.functions.sh,v 1.30 2007-03-28 20:26:08 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 $ mage_setup() { @@ -298,19 +298,19 @@ ln -snf "${link}" "${MROOT}${pathto}" - # fix mtime and db - fix_descriptor ${pkgname}/.symlinks \ - "${pathto}" \ - "${posix}" \ - "${link}" \ - "$(fix_mtime "${BUILDDIR}/${pkgname}"/.mtime \ - "${MROOT}${pathto}")" +# # fix mtime and db +# fix_descriptor ${pkgname}/.symlinks \ +# "${pathto}" \ +# "${posix}" \ +# "${link}" \ +# "$(fix_mtime "${BUILDDIR}/${pkgname}"/.mtime \ +# "${MROOT}${pathto}")" done < ${BUILDDIR}/${pkgname}/.symlinks - # now copy the fixed file over the old one - [ -f ${BUILDDIR}/${pkgname}/.symlinks_fixed ] && \ - cp -f ${BUILDDIR}/${pkgname}/.symlinks{_fixed,} +# # now copy the fixed file over the old one +# [ -f ${BUILDDIR}/${pkgname}/.symlinks_fixed ] && \ +# cp -f ${BUILDDIR}/${pkgname}/.symlinks{_fixed,} # very important: unsetting the '§' fieldseperator IFS=$'\n' @@ -1203,6 +1203,63 @@ is_newer_mage_version_available } +syncmage_tarball() +{ + local latest_tarball + local temp="$(mktemp -d)" + local mirr mymirr + + # try to get the tarball marked as latest on the server + latest_tarball="mage-latest.tar.bz2" + + for mirr in ${MIRRORS} + do + # path without distribution + mymirr="${mirr%/*}" + + echo -ne "${COLBLUE} --- ${COLDEFAULT}" + echo "fetching latest tarball from ${mymirr} ..." + + wget \ + --passive-ftp \ + --tries 3 \ + --continue \ + --progress bar \ + --directory-prefix=${temp} \ + ${mymirr}/rsync/tarballs/${latest_tarball} + if [[ $? = 0 ]] + then + break + else + continue + fi + done + + if [[ -f ${temp}/${latest_tarball} ]] + then + if [[ -d ${MAGEDIR} ]] + then + echo -ne "${COLBLUE} --- ${COLDEFAULT}" + echo "cleaning old mage-tree ${MAGEDIR}..." + rm -rf ${MAGEDIR} + fi + + echo -ne "${COLBLUE} --- ${COLDEFAULT}" + echo "updating mage-tree from tarball ..." + # unpack in dirname of MAGEDIR, as the tarball has already the mage + tar xjmf ${temp}/${latest_tarball} -C ${MAGEDIR%/*} || die "Unpacking tarball" + + if [[ -d ${temp} ]] + then + echo -ne "${COLBLUE} --- ${COLDEFAULT}" + echo "clenaing temp-files ..." + rm -rf ${temp} + fi + else + die "Could not fetch the latest tarball ... aborting" + fi +} + cleanpkg() { if [ -d "${PKGDIR}" ] @@ -1315,10 +1372,12 @@ local PNAME="$2" local magefile - for magefile in $(ls --format=single-column -v ${MAGEDIR}/${PCAT}/${PNAME}/*) + # do not list the content of a directory, only the name (-d) + for magefile in $(ls --format=single-column -v -d ${MAGEDIR}/${PCAT}/${PNAME}/*) do + [[ -z ${magefile} ]] && continue # we exclude subdirs (for stuff like a md5sum dir) - [ -d ${magefile} ] && continue + [[ -d ${magefile} ]] && continue if check_stable_package ${magefile} then HIGHEST_MAGEFILE=${magefile} @@ -1430,7 +1489,29 @@ ################################################### count_protected_files() { - ${MLIBDIR}/writeprotected "$1" + local file="$1" + local dirname="${file%/*}" + local filename="${file##*/}" + local count + local output + local i + + declare -i count=0 + + # check if there are already protected files + for oldpretected in $(find ${dirname} -iname "._cfg????_${filename}" | + sed -e "s:\(^.*/\)\(._cfg*_\)\(/.*$\):\1\2\3\%\2\%\3:" | + sort -t'%' -k3 -k2 | cut -f1 -d'%') + do + count=$(echo ${oldpretected} | cut -d_ -f2 | sed -e "s:cfg::") + done + (( count ++ )) + + # fill output up with zeros + for (( i=${#count}; i < 4; i++ )); do output="${output}0"; done + output="${output}${count}" + + echo "${output}" } # call with @@ -2082,6 +2163,7 @@ local count_current local magefile local src_install + local i # very basic getops for i in $* @@ -2155,7 +2237,30 @@ echo B:${pbuild} fi - smage2file=${SMAGESCRIPTSDIR}/${pname}/${pname}-${pver}-${pbuild}.smage2 + if [[ -z ${MAGE_TARGETS} ]] + then + # basic svn compat + if [[ -d ${SMAGESCRIPTSDIR}/trunk ]] + then + for i in ${SMAGESCRIPTSDIR}/trunk/*/${pname}/${pname}-${pver}-${pbuild}.smage2 + do + smage2file="${i}" + done + else + smage2file=${SMAGESCRIPTSDIR}/${pname}/${pname}-${pver}-${pbuild}.smage2 + fi + else + # basic svn compat + if [[ -d ${SMAGESCRIPTSDIR}/trunk ]] + then + for i in ${SMAGESCRIPTSDIR}/trunk/*/${pname/${MAGE_TARGETS}/}/${pname/${MAGE_TARGETS}/}-${pver}-${pbuild}.smage2 + do + smage2file="${i}" + done + else + smage2file=${SMAGESCRIPTSDIR}/${pname/${MAGE_TARGETS}/}/${pname/${MAGE_TARGETS}/}-${pver}-${pbuild}.smage2 + fi + fi if [ -f "${smage2file}" ] then echo -e " ${COLBLUE}***${COLDEFAULT} building package from source ... " @@ -2431,7 +2536,7 @@ echo -ne "${COLBLUE}${pcat}/${COLDEFAULT}" echo -e "${COLRED}${pname}-${pver}-${pbuild}${COLDEFAULT}" - magefile="${INSTALLDB}/${pcat}/${pname}-${pver}-${pbuild}/${pname}-${pver}-${pbuild}.mage" + magefile="${MROOT}${INSTALLDB}/${pcat}/${pname}-${pver}-${pbuild}/${pname}-${pver}-${pbuild}.mage" source ${magefile} ## preremove scripts @@ -2530,6 +2635,12 @@ local ipver local ipbuild local latest_available + local depsfull + local sdepsfull + local deps + local sdeps + local dep + local sign # only names no versions result="$(find ${MAGEDIR} -mindepth 2 -maxdepth 2 -type d -name '*'${string}'*'| sed '/profiles/d' | sed '/includes/d')" @@ -2585,11 +2696,38 @@ latest_available="${COLRED}masked for this distribution.${COLDEFAULT}" fi + depsfull="$(get_value_from_magefile DEPEND ${magefile})" + sdepsfull="$(get_value_from_magefile SDEPEND ${magefile})" + + while read sign dep + do + case ${dep} in + "") continue;; + esac + + deps="${deps} $(basename ${dep%-*})" + done << EOF +${depsfull} +EOF + + while read sign dep + do + case ${dep} in + "") continue;; + esac + + sdeps="${sdeps} $(basename ${dep%-*})" + done << EOF +${sdepsfull} +EOF + echo -e "${state}${pcat}/${pname}"${COLDEFAULT} echo -e " Latest available: ${latest_available}" echo " Installed versions: ${all_installed}" echo " Description: ${description}" echo " Homepage: ${homepage}" + echo " Depends: ${deps}" + echo " SDepends: ${sdeps}" echo unset pcat @@ -2603,6 +2741,12 @@ unset all_installed unset ipver unset ipbuild + unset depsfull + unset sdepsfull + unset deps + unset sdeps + unset dep + unset sign done } @@ -2645,7 +2789,13 @@ [[ ${USE_UNSTABLE} = true ]] && local MAGE_DISTRIBUTION=unstable [[ ${USE_TESTING} = true ]] && local MAGE_DISTRIBUTION=testing - local EXCLUDED="${MROOT}/etc/mage-profile/package.blacklist-${ARCH}-${MAGE_DISTRIBUTION}" + # support both types for the moment + if [[ -f /etc/mage-profile/package.blacklist-${ARCH}-${MAGE_DISTRIBUTION} ]] + then + local EXCLUDED="/etc/mage-profile/package.blacklist-${ARCH}-${MAGE_DISTRIBUTION}" + else + local EXCLUDED="/etc/mage-profile/package.blacklist-${ARCH}" + fi # return 0 if the list not exist; nothin is masked [[ ! -f ${EXCLUDED} ]] && return 0