Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 233 - (hide annotations) (download) (as text)
Fri Sep 9 18:05:45 2005 UTC (18 years, 8 months ago) by niro
File MIME type: application/x-sh
File size: 10686 byte(s)
fixed some not working methods

1 niro 226 #!/bin/sh
2     # Magellan Linux Installer (mage.sh)
3 niro 233 # $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/mage4.sh,v 1.4 2005-09-09 18:05:45 niro Exp $
4 niro 226
5     # default die function
6     die()
7     {
8     echo -e ${COLRED}"$@"${COLDEFAULT}
9     exit 1
10     }
11    
12     # include all needed files
13 niro 232 [ -f ${MLIBDIR}/conf/mage.rc.global ] && \
14     source ${MLIBDIR}/conf/mage.rc.global || \
15     die "${MLIBDIR}/conf/mage.rc.global missing"
16 niro 226
17 niro 232 [ -f /etc/mage.rc ] && source /etc/mage.rc || \
18     die "Your /etc/mage.rc is missing. Aborting."
19    
20     [ -f ${MLIBDIR}/mage.functions.sh ] && \
21     source ${MLIBDIR}/mage.functions.sh || \
22     die "mage functions missing"
23    
24 niro 226 # for tests only
25 niro 232 #source /home/tjoke/alx-cvs/magellan-src/mage/usr/lib/mage/mage.rc.global
26     #source /etc/mage.rc
27     #source /home/tjoke/alx-cvs/magellan-src/mage/usr/lib/mage/mage4.functions.sh
28     #MLIBDIR=/home/tjoke/alx-cvs/magellan-src/mage/usr/lib/mage
29 niro 226
30     ## only for tests -> normally in /etc/rc.d/init.d/functions
31     COLRED="\033[1;6m\033[31m"
32     COLGREEN="\033[1;6m\033[32m"
33     COLBLUE="\033[1;6m\033[34m"
34     COLDEFAULT="\033[0m"
35    
36     if [[ ${NOCOLORS} = true ]]
37     then
38     COLRED=""
39     COLGREEN=""
40     COLYELLOW=""
41     COLBLUE=""
42     COLMAGENTA=""
43     COLWHITE=""
44     COLDEFAULT=""
45     fi
46    
47     # export default path
48     export PATH="${PATH}:${MLIBDIR}"
49    
50     # export the default C locale
51     export LC_ALL=C
52    
53     # sanity checks
54     [ ! -e ${VIRTUALDB_FILE} ] && touch ${VIRTUALDB_FILE}
55    
56     if [ ! -e ${VIRTUALDB_DEFAULTS} ] && [[ $1 != update ]]
57     then
58     echo
59     echo "Please choose an profile from the mage tree."
60     echo "ln -snf ${MAGEDIR}/profiles/profilename /etc/mage-profile"
61     exit 1
62     fi
63    
64     # default messages
65     showversion() {
66     local MAGEVERSION="$(< ${MLIBDIR}/version)"
67    
68     echo -en "Magellan Package Manager v${MAGEVERSION} "
69     echo -e "-- Niels Rogalla (niro@magellan-linux.de)"
70     }
71    
72     print_usage(){
73     showversion
74     echo
75     echo "Usage: $(basename $0) [option] pkgname ..."
76     echo "Options:"
77     echo " pretend - pretends dependencies of a package"
78     echo " srcpretend - pretends dependencies of a package (build from source)"
79     echo " install - installs a package"
80     echo " srcinstall - installs a package from source"
81     echo " uninstall - removes a package"
82     echo " update - updates mage-tree"
83 niro 230 echo " uppretend - pretend dependencies for a system upgrade"
84     echo " upgrade - runs a complete system upgrade"
85     echo " srcuppretend - pretend dependencies for a system upgrade from source"
86     echo " srcupgrade - runs a complete system upgrade from source"
87 niro 226 echo " search - searches mage-tree for a package"
88     echo " clean - removes *all* downloaded packages"
89 niro 230 echo " unpack - unpacks *all* needed package for 'foo'"
90     echo " download - downloads *all* needed packages for 'foo'"
91 niro 226 echo " version - prints version info"
92     echo
93     echo "Other options:"
94     # echo "NOINSTALL=yes $(basename $0) srcinstall PACKAGE"
95     # echo "Builds a Package with its dependencies, but won't install anything."
96     # echo
97     echo "USE_UNSTABLE=true $(basename $0) [src]install PACKAGE"
98     echo "Overrides stable packages; you can install packages that are marked unstable."
99     echo
100     echo "USE_TESTING=true $(basename $0) [src]install PACKAGE"
101     echo "Overrides stable packages; you can install packages that are marked testing."
102     echo
103     echo "NOCOLORS=true $(basename $0) [src]install PACKAGE"
104     echo "Disables all colors in the messages."
105     echo
106     }
107    
108    
109     showversion
110     echo
111    
112     # before anything run mage_setup
113     mage_setup || die "error in mage_setup()"
114    
115     # install method
116     METHOD="$1"
117    
118     # initial unversionized packagename, gets overridden later
119     MAGENAME="$2"
120    
121 niro 230 if [[ ${METHOD} != upgrade ]] && \
122     [[ ${METHOD} != srcupgrade ]] && \
123     [[ ${METHOD} != uppretend ]] && \
124 niro 233 [[ ${METHOD} != srcuppretend ]] && \
125     [[ ${METHOD} != update ]] && \
126     [[ ${METHOD} != clean ]] && \
127     [[ ${METHOD} != version ]] && \
128     [[ ${METHOD} != search ]] && \
129     [[ ${METHOD} != regen-mage-tree ]]
130 niro 230 then
131     [[ -z ${METHOD} ]] || [[ -z ${MAGENAME} ]] && print_usage && exit 1
132     fi
133 niro 226
134    
135     case ${METHOD} in
136     download)
137     # first of all get the right pkg which going to be installed
138     PCAT="$(pname2pcat ${MAGENAME})"
139    
140     # package does not exists
141     [ -z "${PCAT}" ] && die "Package '${MAGENAME}' does not exist."
142    
143     # source the highest magefile of this pkg
144     source $(get_highest_magefile ${PCAT} ${MAGENAME})
145    
146     # convert PKGNAME to PNAME/PVER/PBUILD
147     # we're working *only* with these three vars from here on
148     PNAME="$(pkgname2pname ${PKGNAME})"
149     PVER="$(pkgname2pver ${PKGNAME})"
150     PBUILD="$(pkgname2pbuild ${PKGNAME})"
151    
152     # get all dependencies of this package
153     ALLDEPS="$(${MLIBDIR}/depwalker.sh \
154     --method install \
155     --pcat ${PCAT} \
156     --pname ${PNAME} \
157     --pver ${PVER} \
158     --pbuild ${PBUILD})"
159     fetch_packages ${ALLDEPS} || die "fetching packages"
160 niro 230 md5sum_packages ${ALLDEPS} || die "md5 sum packages"
161 niro 226 ;;
162    
163     srcdownload)
164     # first of all get the right pkg which going to be installed
165     PCAT="$(pname2pcat ${MAGENAME})"
166    
167     # package does not exists
168     [ -z "${PCAT}" ] && die "Package '${MAGENAME}' does not exist."
169    
170     # source the highest magefile of this pkg
171     source $(get_highest_magefile ${PCAT} ${MAGENAME})
172    
173     # convert PKGNAME to PNAME/PVER/PBUILD
174     # we're working *only* with these three vars from here on
175     PNAME="$(pkgname2pname ${PKGNAME})"
176     PVER="$(pkgname2pver ${PKGNAME})"
177     PBUILD="$(pkgname2pbuild ${PKGNAME})"
178    
179     # get all dependencies of this package
180     ALLDEPS="$(${MLIBDIR}/depwalker.sh \
181     --method srcinstall \
182     --pcat ${PCAT} \
183     --pname ${PNAME} \
184     --pver ${PVER} \
185     --pbuild ${PBUILD})"
186     fetch_packages ${ALLDEPS} || die "fetching packages"
187     ;;
188    
189     pretend|srcpretend)
190     # first of all get the right pkg which going to be installed
191     PCAT="$(pname2pcat ${MAGENAME})"
192    
193     # package does not exists
194     [ -z "${PCAT}" ] && die "Package '${MAGENAME}' does not exist."
195    
196     # source the highest magefile of this pkg
197     source $(get_highest_magefile ${PCAT} ${MAGENAME})
198    
199     # convert PKGNAME to PNAME/PVER/PBUILD
200     # we're working *only* with these three vars from here on
201     PNAME="$(pkgname2pname ${PKGNAME})"
202     PVER="$(pkgname2pver ${PKGNAME})"
203     PBUILD="$(pkgname2pbuild ${PKGNAME})"
204    
205     # abort if already installed
206     if is_installed ${PCAT}/${PNAME}-${PVER}-${PBUILD}
207     then
208     echo -en "Package "
209     echo -en "${COLRED}${PNAME}-${PVER}-${PBUILD}${COLDEFAULT}"
210     echo -e " already installed."
211     exit 3
212     fi
213     # get all dependencies of this package
214     ${MLIBDIR}/depwalker.sh \
215     --method ${METHOD} \
216     --pcat ${PCAT} \
217     --pname ${PNAME} \
218     --pver ${PVER} \
219     --pbuild ${PBUILD}
220     ;;
221    
222     install)
223     # first of all get the right pkg which going to be installed
224     PCAT="$(pname2pcat ${MAGENAME})"
225    
226     # package does not exists
227     [ -z "${PCAT}" ] && die "Package '${MAGENAME}' does not exist."
228    
229     # source the highest magefile of this pkg
230     source $(get_highest_magefile ${PCAT} ${MAGENAME})
231    
232     # convert PKGNAME to PNAME/PVER/PBUILD
233     # we're working *only* with these three vars from here on
234     PNAME="$(pkgname2pname ${PKGNAME})"
235     PVER="$(pkgname2pver ${PKGNAME})"
236     PBUILD="$(pkgname2pbuild ${PKGNAME})"
237    
238     if is_installed ${PCAT}/${PNAME}-${PVER}-${PBUILD}
239     then
240     echo -en "Package "
241     echo -en "${COLRED}${PNAME}-${PVER}-${PBUILD}${COLDEFAULT}"
242     echo -e " already installed."
243     exit 3
244     fi
245    
246     # get all dependencies of this package
247     ALLDEPS="$(${MLIBDIR}/depwalker.sh \
248     --method ${METHOD} \
249     --pcat ${PCAT} \
250     --pname ${PNAME} \
251     --pver ${PVER} \
252     --pbuild ${PBUILD})"
253    
254     # first fetch all packages
255     fetch_packages ${ALLDEPS} || die "fetching packages"
256     md5sum_packages ${ALLDEPS} || die "md5 sum packages"
257     unpack_packages ${ALLDEPS} || die "unpacking packages"
258     install_packages ${ALLDEPS} || die "installing packages"
259     ;;
260    
261     srcinstall)
262     # first of all get the right pkg which going to be installed
263     PCAT="$(pname2pcat ${MAGENAME})"
264    
265     # package does not exists
266     [ -z "${PCAT}" ] && die "Package '${MAGENAME}' does not exist."
267    
268     # source the highest magefile of this pkg
269     source $(get_highest_magefile ${PCAT} ${MAGENAME})
270    
271     # convert PKGNAME to PNAME/PVER/PBUILD
272     # we're working *only* with these three vars from here on
273     PNAME="$(pkgname2pname ${PKGNAME})"
274     PVER="$(pkgname2pver ${PKGNAME})"
275     PBUILD="$(pkgname2pbuild ${PKGNAME})"
276    
277     if is_installed ${PCAT}/${PNAME}-${PVER}-${PBUILD}
278     then
279     echo -en "Package "
280     echo -en "${COLRED}${PNAME}-${PVER}-${PBUILD}${COLDEFAULT}"
281     echo -e " already installed."
282     exit 3
283     fi
284    
285     # get all dependencies of this package
286     ALLDEPS="$(${MLIBDIR}/depwalker.sh \
287     --method ${METHOD} \
288     --pcat ${PCAT} \
289     --pname ${PNAME} \
290     --pver ${PVER} \
291     --pbuild ${PBUILD})"
292    
293     install_packages --src-install ${ALLDEPS} || die "src-installing packages"
294     ;;
295    
296     uninstall)
297     ALLDEPS="$(get_uninstall_candidates --pname ${MAGENAME})"
298     if [ -z "${ALLDEPS}" ]
299     then
300     die "No package installed named '${MAGENAME}'."
301     fi
302     uninstall_packages ${ALLDEPS}
303     ;;
304    
305 niro 230 uppretend|srcuppretend)
306     ${MLIBDIR}/depwalker.sh \
307     --method ${METHOD} \
308     --pcat ${METHOD} \
309     --pname ${METHOD} \
310     --pver ${METHOD} \
311     --pbuild ${METHOD}
312     ;;
313    
314     upgrade|srcupgrade)
315     # get all dependencies of *all* installed packages
316     # fake pcat,pname,pver,pbuild ...
317     ALLDEPS="$(${MLIBDIR}/depwalker.sh \
318     --method ${METHOD} \
319     --pcat ${METHOD} \
320     --pname ${METHOD} \
321     --pver ${METHOD} \
322     --pbuild ${METHOD})"
323    
324     echo "DEBUG: ${ALLDEPS}"
325     ;;
326 niro 226 search)
327     ${MLIBDIR}/pkgsearch.sh ${MAGENAME}
328     ;;
329    
330 niro 230 unpack)
331     # first of all get the right pkg which going to be installed
332     PCAT="$(pname2pcat ${MAGENAME})"
333 niro 226
334 niro 230 # package does not exists
335     [ -z "${PCAT}" ] && die "Package '${MAGENAME}' does not exist."
336    
337     # source the highest magefile of this pkg
338     source $(get_highest_magefile ${PCAT} ${MAGENAME})
339    
340     # convert PKGNAME to PNAME/PVER/PBUILD
341     # we're working *only* with these three vars from here on
342     PNAME="$(pkgname2pname ${PKGNAME})"
343     PVER="$(pkgname2pver ${PKGNAME})"
344     PBUILD="$(pkgname2pbuild ${PKGNAME})"
345    
346     # get all dependencies of this package
347     ALLDEPS="$(${MLIBDIR}/depwalker.sh \
348     --method install \
349     --pcat ${PCAT} \
350     --pname ${PNAME} \
351     --pver ${PVER} \
352     --pbuild ${PBUILD})"
353     fetch_packages ${ALLDEPS} || die "fetching packages"
354     md5sum_packages ${ALLDEPS} || die "md5 sum packages"
355     unpack_packages ${ALLDEPS} || die "unpacking packages"
356     ;;
357    
358 niro 226 update)
359     syncmage
360     ;;
361    
362     clean)
363     cleanpkg
364     ;;
365    
366     version)
367     showversion
368     ;;
369    
370     regen-mage-tree)
371     if [ -z "${SMAGESCRIPTSDIR}" ] || [ ! -d "${SMAGESCRIPTSDIR}" ]
372     then
373     echo "SMAGESCRIPTSDIR not found. Check your mage.rc or check out smage repos."
374     exit 1
375     fi
376     for i in $(find ${SMAGESCRIPTSDIR} -type f -name "*.smage2")
377     do
378     smage2 only-regen-tree "${i}"
379     done
380     ;;
381    
382     *)
383     print_usage
384     ;;
385     esac

Properties

Name Value
svn:executable *