Magellan Linux

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

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

revision 226 by niro, Fri Sep 9 16:35:46 2005 UTC revision 2156 by niro, Wed Aug 14 07:25:43 2013 UTC
# Line 1  Line 1 
1  #!/bin/sh  #!/bin/bash
2  # Magellan Linux Installer (mage.sh)  # Magellan Linux Installer (mage.sh)
3  # $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.17 2008-06-16 09:29:57 niro Exp $
4    
5  # default die function  # default die function
6  die()  die()
7  {  {
8     echo -e ${COLRED}"Exited ${BASH_SOURCE} at line no ${BASH_LINENO}."${COLDEFAULT}
9   echo -e ${COLRED}"$@"${COLDEFAULT}   echo -e ${COLRED}"$@"${COLDEFAULT}
10   exit 1   exit 1
11  }  }
12    
13  # include all needed files  # include all needed files
14  # [ -f ${MLIBDIR}/conf/mage.rc.global ] &&  \  [ -f /etc/mage.rc.global ] &&  \
15  # source ${MLIBDIR}/conf/mage.rc.global || \   source /etc/mage.rc.global || \
16  # die "${MLIBDIR}/conf/mage.rc.global missing"   die "/etc/mage.rc.global missing"
17  #  
18  # [ -f /etc/mage.rc ] && source /etc/mage.rc || \  [ -f ${MAGERC} ] && source ${MAGERC} || \
19  # die "Your /etc/mage.rc is missing. Aborting."   die "Your ${MAGERC} is missing. Aborting."
20  #  
21  # [ -f ${MLIBDIR}/mage.functions.sh ] && \  [ -f ${MLIBDIR}/mage4.functions.sh ] && \
22  # source ${MLIBDIR}/mage.functions.sh || \   source ${MLIBDIR}/mage4.functions.sh || \
23  # die "mage functions missing"   die "mage functions missing"
   
 # for tests only  
 source /home/tjoke/alx-cvs/magellan-src/mage/usr/lib/mage/mage.rc.global  
 source /etc/mage.rc  
 source /home/tjoke/alx-cvs/magellan-src/mage/usr/lib/mage/mage4.functions.sh  
 MLIBDIR=/home/tjoke/alx-cvs/magellan-src/mage/usr/lib/mage  
   
 ## only for tests -> normally in /etc/rc.d/init.d/functions  
 COLRED="\033[1;6m\033[31m"  
 COLGREEN="\033[1;6m\033[32m"  
 COLBLUE="\033[1;6m\033[34m"  
 COLDEFAULT="\033[0m"  
   
 if [[ ${NOCOLORS} = true ]]  
 then  
  COLRED=""  
  COLGREEN=""  
  COLYELLOW=""  
  COLBLUE=""  
  COLMAGENTA=""  
  COLWHITE=""  
  COLDEFAULT=""  
 fi  
24    
25  # export default path  # export default path
26  export PATH="${PATH}:${MLIBDIR}"  export PATH="${PATH}:${MLIBDIR}"
# Line 53  export LC_ALL=C Line 31  export LC_ALL=C
31  # sanity checks  # sanity checks
32  [ ! -e ${VIRTUALDB_FILE} ] && touch ${VIRTUALDB_FILE}  [ ! -e ${VIRTUALDB_FILE} ] && touch ${VIRTUALDB_FILE}
33    
34  if [ ! -e ${VIRTUALDB_DEFAULTS} ] && [[ $1 != update ]]  if [ ! -e ${VIRTUALDB_DEFAULTS} ] && [[ $1 != update ]] && [[ $1 != update-tarball ]]
35  then  then
36   echo   echo
37   echo "Please choose an profile from the mage tree."   echo "Please choose an profile from the mage tree."
# Line 62  then Line 40  then
40  fi  fi
41    
42  # default messages  # default messages
43  showversion() {  showversion()
44    {
45   local MAGEVERSION="$(< ${MLIBDIR}/version)"   local MAGEVERSION="$(< ${MLIBDIR}/version)"
46    
47   echo -en "Magellan Package Manager v${MAGEVERSION} "   echo -en "Magellan Package Manager v${MAGEVERSION} "
48   echo -e  "-- Niels Rogalla (niro@magellan-linux.de)"   echo -e  "-- Niels Rogalla (niro@magellan-linux.de)"
49  }  }
50    
51  print_usage(){  print_usage()
52   showversion  {
53   echo   #showversion
54     #echo
55   echo "Usage: $(basename $0) [option] pkgname ..."   echo "Usage: $(basename $0) [option] pkgname ..."
56   echo "Options:"   echo "Options:"
57   echo "     pretend        - pretends dependencies of a package"   echo "    pretend         - pretends dependencies of a package"
58   echo "     srcpretend     - pretends dependencies of a package (build from source)"   echo "    srcpretend      - pretends dependencies of a package (build from source)"
59   echo "     install        - installs a package"   echo "    install         - installs a package"
60   echo "     srcinstall     - installs a package from source"   echo "    srcinstall      - installs a package from source"
61   echo "     uninstall      - removes a package"   echo "    uninstall       - removes a package"
62   echo "     update         - updates mage-tree"   echo "    update          - updates the mage-tree via rsync"
63   echo "     search         - searches mage-tree for a package"   echo "    update-tarball  - updates the mage-tree via a tarball"
64   echo "     clean          - removes *all* downloaded packages"   echo "    uppretend       - pretend dependencies for a system upgrade"
65  # echo "     unpack         - unpacks a package"   echo "    upgrade         - runs a complete system upgrade"
66   echo "     download       - downloads a package"   echo "    srcuppretend    - pretend dependencies for a system upgrade from source"
67   echo "     version        - prints version info"   echo "    srcupgrade      - runs a complete system upgrade from source"
68     echo "    search          - searches mage-tree for a package"
69     echo "    clean           - removes *all* downloaded packages"
70     echo "    unpack          - unpacks *all* needed package for 'foo'"
71     echo "    download        - downloads *all* needed packages for 'foo'"
72     echo "    print-features  - prints all enabled mage-features"
73     echo "    version         - prints version info"
74     echo "    regen-mage-tree - regenerates the whole mage database (for devs only)"
75   echo   echo
76   echo "Other options:"   echo "Other options:"
77  # echo "NOINSTALL=yes $(basename $0) srcinstall PACKAGE"  # echo "NOINSTALL=yes $(basename $0) srcinstall PACKAGE"
78  # echo "Builds a Package with its dependencies, but won't install anything."  # echo "Builds a Package with its dependencies, but won't install anything."
79  # echo  # echo
80   echo "USE_UNSTABLE=true $(basename $0) [src]install PACKAGE"   echo "MAGE_DISTRIBUTION=unstable $(basename $0) [src]install PACKAGE"
81   echo "Overrides stable packages; you can install packages that are marked unstable."   echo "Overrides stable packages; you can install packages that are marked unstable."
82   echo   echo
83   echo "USE_TESTING=true $(basename $0) [src]install PACKAGE"   echo "MAGE_DISTRIBUTION=testing $(basename $0) [src]install PACKAGE"
84   echo "Overrides stable packages; you can install packages that are marked testing."   echo "Overrides stable packages; you can install packages that are marked testing."
85   echo   echo
86   echo "NOCOLORS=true $(basename $0) [src]install PACKAGE"   echo "NOCOLORS=true $(basename $0) [src]install PACKAGE"
# Line 105  print_usage(){ Line 92  print_usage(){
92  showversion  showversion
93  echo  echo
94    
 # before anything run mage_setup  
 mage_setup || die "error in mage_setup()"  
   
95  # install method  # install method
96  METHOD="$1"  METHOD="$1"
97    
98  # initial unversionized packagename, gets overridden later  # initial unversionized packagename, gets overridden later on
99  MAGENAME="$2"  MAGENAME="$2"
100    
101  [[ -z ${METHOD} ]] || [[ -z ${MAGENAME} ]] && print_usage && exit 1  if [[ ${METHOD} != upgrade ]] &&
102     [[ ${METHOD} != srcupgrade ]] &&
103     [[ ${METHOD} != uppretend ]] &&
104     [[ ${METHOD} != srcuppretend ]] &&
105     [[ ${METHOD} != update ]] &&
106     [[ ${METHOD} != update-tarball ]] &&
107     [[ ${METHOD} != clean ]] &&
108     [[ ${METHOD} != version ]] &&
109     [[ ${METHOD} != search ]] &&
110     [[ ${METHOD} != regen-mage-tree ]] &&
111     [[ ${METHOD} != print-features ]]
112    then
113     [[ -z ${METHOD} ]] || [[ -z ${MAGENAME} ]] && print_usage && exit 1
114    fi
115    
116    # set PKGDIR and BUILDDIR to MROOT
117    if [[ -n ${MROOT} ]]
118    then
119     PKGDIR=${MROOT}/${PKGDIR}
120     BUILDDIR=${MROOT}/${BUILDDIR}
121    fi
122    
123    # before anything run mage_setup
124    mage_setup || die "error in mage_setup()"
125    
126    # load supported mage features
127    load_mage_features
128    
129  case ${METHOD} in  case ${METHOD} in
130   download)   download)
# Line 126  case ${METHOD} in Line 135  case ${METHOD} in
135   [ -z "${PCAT}" ] && die "Package '${MAGENAME}' does not exist."   [ -z "${PCAT}" ] && die "Package '${MAGENAME}' does not exist."
136    
137   # source the highest magefile of this pkg   # source the highest magefile of this pkg
138   source $(get_highest_magefile ${PCAT} ${MAGENAME})   PKGNAME=$(get_value_from_magefile PKGNAME $(get_highest_magefile ${PCAT} ${MAGENAME}))
139    
140     # package is masked
141     [ -z "${PKGNAME}" ] && die "Package '${MAGENAME}' is masked and not available for installation."
142    
143   # convert PKGNAME to PNAME/PVER/PBUILD   # convert PKGNAME to PNAME/PVER/PBUILD
144   # we're working *only* with these three vars from here on   # we're working *only* with these three vars from here on
# Line 142  case ${METHOD} in Line 154  case ${METHOD} in
154   --pver ${PVER} \   --pver ${PVER} \
155   --pbuild ${PBUILD})"   --pbuild ${PBUILD})"
156   fetch_packages ${ALLDEPS} || die "fetching packages"   fetch_packages ${ALLDEPS} || die "fetching packages"
157     md5sum_packages ${ALLDEPS} || die "md5 sum packages"
158   ;;   ;;
159    
160   srcdownload)   srcdownload)
# Line 152  case ${METHOD} in Line 165  case ${METHOD} in
165   [ -z "${PCAT}" ] && die "Package '${MAGENAME}' does not exist."   [ -z "${PCAT}" ] && die "Package '${MAGENAME}' does not exist."
166    
167   # source the highest magefile of this pkg   # source the highest magefile of this pkg
168   source $(get_highest_magefile ${PCAT} ${MAGENAME})   PKGNAME=$(get_value_from_magefile PKGNAME $(get_highest_magefile ${PCAT} ${MAGENAME}))
169    
170     # package is masked
171     [ -z "${PKGNAME}" ] && die "Package '${MAGENAME}' is masked and not available for installation."
172    
173   # convert PKGNAME to PNAME/PVER/PBUILD   # convert PKGNAME to PNAME/PVER/PBUILD
174   # we're working *only* with these three vars from here on   # we're working *only* with these three vars from here on
# Line 178  case ${METHOD} in Line 194  case ${METHOD} in
194   [ -z "${PCAT}" ] && die "Package '${MAGENAME}' does not exist."   [ -z "${PCAT}" ] && die "Package '${MAGENAME}' does not exist."
195    
196   # source the highest magefile of this pkg   # source the highest magefile of this pkg
197   source $(get_highest_magefile ${PCAT} ${MAGENAME})   PKGNAME=$(get_value_from_magefile PKGNAME $(get_highest_magefile ${PCAT} ${MAGENAME}))
198    
199     # package is masked
200     [ -z "${PKGNAME}" ] && die "Package '${MAGENAME}' is masked and not available for installation."
201    
202   # convert PKGNAME to PNAME/PVER/PBUILD   # convert PKGNAME to PNAME/PVER/PBUILD
203   # we're working *only* with these three vars from here on   # we're working *only* with these three vars from here on
# Line 204  case ${METHOD} in Line 223  case ${METHOD} in
223   ;;   ;;
224    
225   install)   install)
226     have_root_privileges || die "You must be root to run this operation."
227    
228   # first of all get the right pkg which going to be installed   # first of all get the right pkg which going to be installed
229   PCAT="$(pname2pcat ${MAGENAME})"   PCAT="$(pname2pcat ${MAGENAME})"
230    
# Line 211  case ${METHOD} in Line 232  case ${METHOD} in
232   [ -z "${PCAT}" ] && die "Package '${MAGENAME}' does not exist."   [ -z "${PCAT}" ] && die "Package '${MAGENAME}' does not exist."
233    
234   # source the highest magefile of this pkg   # source the highest magefile of this pkg
235   source $(get_highest_magefile ${PCAT} ${MAGENAME})   PKGNAME=$(get_value_from_magefile PKGNAME $(get_highest_magefile ${PCAT} ${MAGENAME}))
236    
237     # package is masked
238     [ -z "${PKGNAME}" ] && die "Package '${MAGENAME}' is masked and not available for installation."
239    
240   # convert PKGNAME to PNAME/PVER/PBUILD   # convert PKGNAME to PNAME/PVER/PBUILD
241   # we're working *only* with these three vars from here on   # we're working *only* with these three vars from here on
# Line 222  case ${METHOD} in Line 246  case ${METHOD} in
246   if is_installed ${PCAT}/${PNAME}-${PVER}-${PBUILD}   if is_installed ${PCAT}/${PNAME}-${PVER}-${PBUILD}
247   then   then
248   echo -en "Package "   echo -en "Package "
249   echo -en "${COLRED}${PNAME}-${PVER}-${PBUILD}${COLDEFAULT}"   echo -en "${COLRED}${PCAT}/${PNAME}-${PVER}-${PBUILD}${COLDEFAULT}"
250   echo -e  " already installed."   echo -e  " already installed."
251   exit 3   exit 3
252   fi   fi
# Line 238  case ${METHOD} in Line 262  case ${METHOD} in
262   # first fetch all packages   # first fetch all packages
263   fetch_packages ${ALLDEPS} || die "fetching packages"   fetch_packages ${ALLDEPS} || die "fetching packages"
264   md5sum_packages ${ALLDEPS} || die "md5 sum packages"   md5sum_packages ${ALLDEPS} || die "md5 sum packages"
  unpack_packages ${ALLDEPS} || die "unpacking packages"  
265   install_packages ${ALLDEPS} || die "installing packages"   install_packages ${ALLDEPS} || die "installing packages"
266   ;;   ;;
267    
268   srcinstall)   srcinstall)
269     have_root_privileges || die "You must be root to run this operation."
270    
271   # first of all get the right pkg which going to be installed   # first of all get the right pkg which going to be installed
272   PCAT="$(pname2pcat ${MAGENAME})"   PCAT="$(pname2pcat ${MAGENAME})"
273    
# Line 250  case ${METHOD} in Line 275  case ${METHOD} in
275   [ -z "${PCAT}" ] && die "Package '${MAGENAME}' does not exist."   [ -z "${PCAT}" ] && die "Package '${MAGENAME}' does not exist."
276    
277   # source the highest magefile of this pkg   # source the highest magefile of this pkg
278   source $(get_highest_magefile ${PCAT} ${MAGENAME})   PKGNAME=$(get_value_from_magefile PKGNAME $(get_highest_magefile ${PCAT} ${MAGENAME}))
279    
280     # package is masked
281     [ -z "${PKGNAME}" ] && die "Package '${MAGENAME}' is masked and not available for installation."
282    
283   # convert PKGNAME to PNAME/PVER/PBUILD   # convert PKGNAME to PNAME/PVER/PBUILD
284   # we're working *only* with these three vars from here on   # we're working *only* with these three vars from here on
# Line 261  case ${METHOD} in Line 289  case ${METHOD} in
289   if is_installed ${PCAT}/${PNAME}-${PVER}-${PBUILD}   if is_installed ${PCAT}/${PNAME}-${PVER}-${PBUILD}
290   then   then
291   echo -en "Package "   echo -en "Package "
292   echo -en "${COLRED}${PNAME}-${PVER}-${PBUILD}${COLDEFAULT}"   echo -en "${COLRED}${PCAT}/${PNAME}-${PVER}-${PBUILD}${COLDEFAULT}"
293   echo -e  " already installed."   echo -e  " already installed."
294   exit 3   exit 3
295   fi   fi
# Line 278  case ${METHOD} in Line 306  case ${METHOD} in
306   ;;   ;;
307    
308   uninstall)   uninstall)
309   ALLDEPS="$(get_uninstall_candidates --pname ${MAGENAME})"   have_root_privileges || die "You must be root to run this operation."
310   if [ -z "${ALLDEPS}" ]  
311   then   ALLDEPS="$(get_uninstall_candidates --pname ${MAGENAME})"
312   die "No package installed named '${MAGENAME}'."   if [ -z "${ALLDEPS}" ]
313   fi   then
314   uninstall_packages ${ALLDEPS}   die "No package installed named '${MAGENAME}'."
315     fi
316     uninstall_packages ${ALLDEPS}
317     ;;
318    
319     uppretend|srcuppretend)
320     ${MLIBDIR}/depwalker.sh \
321     --method ${METHOD} \
322     --pcat ${METHOD} \
323     --pname ${METHOD} \
324     --pver ${METHOD} \
325     --pbuild ${METHOD}
326     ;;
327    
328     upgrade)
329     have_root_privileges || die "You must be root to run this operation."
330    
331     # get all dependencies of *all* installed packages
332     # fake pcat,pname,pver,pbuild ...
333     ALLDEPS="$(${MLIBDIR}/depwalker.sh \
334     --method ${METHOD} \
335     --pcat ${METHOD} \
336     --pname ${METHOD} \
337     --pver ${METHOD} \
338     --pbuild ${METHOD})"
339    
340     # first fetch all packages
341     fetch_packages ${ALLDEPS} || die "fetching packages"
342     md5sum_packages ${ALLDEPS} || die "md5 sum packages"
343     install_packages ${ALLDEPS} || die "installing packages"
344     ;;
345    
346     srcupgrade)
347     have_root_privileges || die "You must be root to run this operation."
348    
349     # get all dependencies of *all* installed packages
350     # fake pcat,pname,pver,pbuild ...
351     ALLDEPS="$(${MLIBDIR}/depwalker.sh \
352     --method ${METHOD} \
353     --pcat ${METHOD} \
354     --pname ${METHOD} \
355     --pver ${METHOD} \
356     --pbuild ${METHOD})"
357    
358     install_packages --src-install ${ALLDEPS} || die "src-installing packages"
359   ;;   ;;
360    
361   search)   search)
362   ${MLIBDIR}/pkgsearch.sh ${MAGENAME}   pkgsearch "${MAGENAME}"
363   ;;   ;;
364    
365  # unpack)   unpack)
366  # build_unpackpkg   have_root_privileges || die "You must be root to run this operation."
367  # ;;  
368     # first of all get the right pkg which going to be installed
369     PCAT="$(pname2pcat ${MAGENAME})"
370    
371     # package does not exists
372     [ -z "${PCAT}" ] && die "Package '${MAGENAME}' does not exist."
373    
374     # source the highest magefile of this pkg
375     PKGNAME=$(get_value_from_magefile PKGNAME $(get_highest_magefile ${PCAT} ${MAGENAME}))
376    
377     # package is masked
378     [ -z "${PKGNAME}" ] && die "Package '${MAGENAME}' is masked and not available for installation."
379    
380     # convert PKGNAME to PNAME/PVER/PBUILD
381     # we're working *only* with these three vars from here on
382     PNAME="$(pkgname2pname ${PKGNAME})"
383     PVER="$(pkgname2pver ${PKGNAME})"
384     PBUILD="$(pkgname2pbuild ${PKGNAME})"
385    
386     # get all dependencies of this package
387     ALLDEPS="$(${MLIBDIR}/depwalker.sh \
388     --method install \
389     --pcat ${PCAT} \
390     --pname ${PNAME} \
391     --pver ${PVER} \
392     --pbuild ${PBUILD})"
393     fetch_packages ${ALLDEPS} || die "fetching packages"
394     md5sum_packages ${ALLDEPS} || die "md5 sum packages"
395     unpack_packages ${ALLDEPS} || die "unpacking packages"
396     ;;
397    
398   update)   update)
399     have_root_privileges || die "You must be root to run this operation."
400   syncmage   syncmage
401   ;;   ;;
402    
403     update-tarball)
404     have_root_privileges || die "You must be root to run this operation."
405     syncmage_tarball
406     ;;
407    
408   clean)   clean)
409     have_root_privileges || die "You must be root to run this operation."
410   cleanpkg   cleanpkg
411   ;;   ;;
412    
413   version)   version)
414   showversion   # showversion
415     exit 0
416   ;;   ;;
417    
418   regen-mage-tree)   regen-mage-tree)
419     have_root_privileges || die "You must be root to run this operation."
420    
421   if [ -z "${SMAGESCRIPTSDIR}" ] || [ ! -d "${SMAGESCRIPTSDIR}" ]   if [ -z "${SMAGESCRIPTSDIR}" ] || [ ! -d "${SMAGESCRIPTSDIR}" ]
422   then   then
423   echo "SMAGESCRIPTSDIR not found. Check your mage.rc or check out smage repos."   echo "SMAGESCRIPTSDIR not found. Check your mage.rc or check out smage repos."
# Line 318  case ${METHOD} in Line 429  case ${METHOD} in
429   done   done
430   ;;   ;;
431    
432     print-features)
433     mprintfeatures
434     ;;
435    
436   *)   *)
437   print_usage   print_usage
438   ;;   ;;

Legend:
Removed from v.226  
changed lines
  Added in v.2156