--- trunk/mage/usr/lib/mage/mage4.sh 2005/09/09 16:35:46 226 +++ trunk/mage/usr/lib/mage/mage4.sh 2005/09/09 17:49:43 230 @@ -1,6 +1,6 @@ #!/bin/sh # Magellan Linux Installer (mage.sh) -# $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/mage4.sh,v 1.1 2005-09-09 16:35:41 niro Exp $ +# $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/mage4.sh,v 1.2 2005-09-09 17:49:43 niro Exp $ # default die function die() @@ -80,10 +80,14 @@ echo " srcinstall - installs a package from source" echo " uninstall - removes a package" echo " update - updates mage-tree" + echo " uppretend - pretend dependencies for a system upgrade" + echo " upgrade - runs a complete system upgrade" + echo " srcuppretend - pretend dependencies for a system upgrade from source" + echo " srcupgrade - runs a complete system upgrade from source" echo " search - searches mage-tree for a package" echo " clean - removes *all* downloaded packages" -# echo " unpack - unpacks a package" - echo " download - downloads a package" + echo " unpack - unpacks *all* needed package for 'foo'" + echo " download - downloads *all* needed packages for 'foo'" echo " version - prints version info" echo echo "Other options:" @@ -114,7 +118,13 @@ # initial unversionized packagename, gets overridden later MAGENAME="$2" -[[ -z ${METHOD} ]] || [[ -z ${MAGENAME} ]] && print_usage && exit 1 +if [[ ${METHOD} != upgrade ]] && \ + [[ ${METHOD} != srcupgrade ]] && \ + [[ ${METHOD} != uppretend ]] && \ + [[ ${METHOD} != srcuppretend ]] +then + [[ -z ${METHOD} ]] || [[ -z ${MAGENAME} ]] && print_usage && exit 1 +fi case ${METHOD} in @@ -142,6 +152,7 @@ --pver ${PVER} \ --pbuild ${PBUILD})" fetch_packages ${ALLDEPS} || die "fetching packages" + md5sum_packages ${ALLDEPS} || die "md5 sum packages" ;; srcdownload) @@ -286,13 +297,58 @@ uninstall_packages ${ALLDEPS} ;; + uppretend|srcuppretend) + ${MLIBDIR}/depwalker.sh \ + --method ${METHOD} \ + --pcat ${METHOD} \ + --pname ${METHOD} \ + --pver ${METHOD} \ + --pbuild ${METHOD} + ;; + + upgrade|srcupgrade) + # get all dependencies of *all* installed packages + # fake pcat,pname,pver,pbuild ... + ALLDEPS="$(${MLIBDIR}/depwalker.sh \ + --method ${METHOD} \ + --pcat ${METHOD} \ + --pname ${METHOD} \ + --pver ${METHOD} \ + --pbuild ${METHOD})" + + echo "DEBUG: ${ALLDEPS}" + ;; search) ${MLIBDIR}/pkgsearch.sh ${MAGENAME} ;; -# unpack) -# build_unpackpkg -# ;; + unpack) + # first of all get the right pkg which going to be installed + PCAT="$(pname2pcat ${MAGENAME})" + + # package does not exists + [ -z "${PCAT}" ] && die "Package '${MAGENAME}' does not exist." + + # source the highest magefile of this pkg + source $(get_highest_magefile ${PCAT} ${MAGENAME}) + + # convert PKGNAME to PNAME/PVER/PBUILD + # we're working *only* with these three vars from here on + PNAME="$(pkgname2pname ${PKGNAME})" + PVER="$(pkgname2pver ${PKGNAME})" + PBUILD="$(pkgname2pbuild ${PKGNAME})" + + # get all dependencies of this package + ALLDEPS="$(${MLIBDIR}/depwalker.sh \ + --method install \ + --pcat ${PCAT} \ + --pname ${PNAME} \ + --pver ${PVER} \ + --pbuild ${PBUILD})" + fetch_packages ${ALLDEPS} || die "fetching packages" + md5sum_packages ${ALLDEPS} || die "md5 sum packages" + unpack_packages ${ALLDEPS} || die "unpacking packages" + ;; update) syncmage