Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2221 - (show annotations) (download) (as text)
Wed Oct 16 07:40:02 2013 UTC (10 years, 6 months ago) by niro
File MIME type: application/x-sh
File size: 13365 byte(s)
-allow debug mode for depwalker
1 #!/bin/bash
2 # Magellan Linux Installer (mage.sh)
3 # $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
6 die()
7 {
8 echo -e ${COLRED}"Exited ${BASH_SOURCE} at line no ${BASH_LINENO}."${COLDEFAULT}
9 echo -e ${COLRED}"$@"${COLDEFAULT}
10 exit 1
11 }
12
13 # include all needed files
14 [ -f /etc/mage.rc.global ] && \
15 source /etc/mage.rc.global || \
16 die "/etc/mage.rc.global missing"
17
18 [ -f ${MAGERC} ] && source ${MAGERC} || \
19 die "Your ${MAGERC} is missing. Aborting."
20
21 [ -f ${MLIBDIR}/mage4.functions.sh ] && \
22 source ${MLIBDIR}/mage4.functions.sh || \
23 die "mage functions missing"
24
25 # export default path
26 export PATH="${PATH}:${MLIBDIR}"
27
28 # export the default C locale
29 export LC_ALL=C
30
31 # sanity checks
32 [ ! -e ${VIRTUALDB_FILE} ] && touch ${VIRTUALDB_FILE}
33
34 if [ ! -e ${VIRTUALDB_DEFAULTS} ] && [[ $1 != update ]] && [[ $1 != update-tarball ]]
35 then
36 echo
37 echo "Please choose an profile from the mage tree."
38 echo "ln -snf ${MAGEDIR}/profiles/profilename /etc/mage-profile"
39 exit 1
40 fi
41
42 # default messages
43 showversion()
44 {
45 local MAGEVERSION="$(< ${MLIBDIR}/version)"
46
47 echo -en "Magellan Package Manager v${MAGEVERSION} "
48 echo -e "-- Niels Rogalla (niro@magellan-linux.de)"
49 }
50
51 print_usage()
52 {
53 #showversion
54 #echo
55 echo "Usage: $(basename $0) [option] pkgname ..."
56 echo "Options:"
57 echo " pretend - pretends dependencies of a package"
58 echo " srcpretend - pretends dependencies of a package (build from source)"
59 echo " install - installs a package"
60 echo " srcinstall - installs a package from source"
61 echo " uninstall - removes a package"
62 echo " update - updates the mage-tree via rsync"
63 echo " update-tarball - updates the mage-tree via a tarball"
64 echo " uppretend - pretend dependencies for a system upgrade"
65 echo " upgrade - runs a complete system upgrade"
66 echo " srcuppretend - pretend dependencies for a system upgrade from source"
67 echo " srcupgrade - runs a complete system upgrade from source"
68 echo " pretend-build-prerequisites"
69 echo " install-build-prerequisites"
70 echo " search - searches mage-tree for a package"
71 echo " clean - removes *all* downloaded packages"
72 echo " unpack - unpacks *all* needed package for 'foo'"
73 echo " download - downloads *all* needed packages for 'foo'"
74 echo " print-features - prints all enabled mage-features"
75 echo " version - prints version info"
76 echo " regen-mage-tree - regenerates the whole mage database (for devs only)"
77 echo
78 echo "Other options:"
79 # echo "NOINSTALL=yes $(basename $0) srcinstall PACKAGE"
80 # echo "Builds a Package with its dependencies, but won't install anything."
81 # echo
82 echo "MAGE_DISTRIBUTION=unstable $(basename $0) [src]install PACKAGE"
83 echo "Overrides stable packages; you can install packages that are marked unstable."
84 echo
85 echo "MAGE_DISTRIBUTION=testing $(basename $0) [src]install PACKAGE"
86 echo "Overrides stable packages; you can install packages that are marked testing."
87 echo
88 echo "NOCOLORS=true $(basename $0) [src]install PACKAGE"
89 echo "Disables all colors in the messages."
90 echo
91 }
92
93
94 showversion
95 echo
96
97 # install method
98 METHOD="$1"
99
100 # initial unversionized packagename, gets overridden later on
101 MAGENAME="$2"
102
103 if [[ ${METHOD} != upgrade ]] &&
104 [[ ${METHOD} != srcupgrade ]] &&
105 [[ ${METHOD} != uppretend ]] &&
106 [[ ${METHOD} != srcuppretend ]] &&
107 [[ ${METHOD} != update ]] &&
108 [[ ${METHOD} != update-tarball ]] &&
109 [[ ${METHOD} != clean ]] &&
110 [[ ${METHOD} != version ]] &&
111 [[ ${METHOD} != search ]] &&
112 [[ ${METHOD} != regen-mage-tree ]] &&
113 [[ ${METHOD} != print-features ]]
114 then
115 [[ -z ${METHOD} ]] || [[ -z ${MAGENAME} ]] && print_usage && exit 1
116 fi
117
118 # set PKGDIR and BUILDDIR to MROOT
119 if [[ -n ${MROOT} ]]
120 then
121 PKGDIR=${MROOT}/${PKGDIR}
122 BUILDDIR=${MROOT}/${BUILDDIR}
123 fi
124
125 # before anything run mage_setup
126 mage_setup || die "error in mage_setup()"
127
128 # load supported mage features
129 load_mage_features
130
131 # query debug mode
132 if mqueryfeature "debug"
133 then
134 depwalker_debug="--debug"
135 else
136 depwalker_debug=""
137 fi
138
139 case ${METHOD} in
140 download)
141 # first of all get the right pkg which going to be installed
142 PCAT="$(pname2pcat ${MAGENAME})"
143
144 # package does not exists
145 [ -z "${PCAT}" ] && die "Package '${MAGENAME}' does not exist."
146
147 # source the highest magefile of this pkg
148 PKGNAME=$(get_value_from_magefile PKGNAME $(get_highest_magefile ${PCAT} ${MAGENAME}))
149
150 # package is masked
151 [ -z "${PKGNAME}" ] && die "Package '${MAGENAME}' is masked and not available for installation."
152
153 # convert PKGNAME to PNAME/PVER/PBUILD
154 # we're working *only* with these three vars from here on
155 PNAME="$(pkgname2pname ${PKGNAME})"
156 PVER="$(pkgname2pver ${PKGNAME})"
157 PBUILD="$(pkgname2pbuild ${PKGNAME})"
158
159 # get all dependencies of this package
160 ALLDEPS="$(${MLIBDIR}/depwalker.sh \
161 --method install \
162 --pcat ${PCAT} \
163 --pname ${PNAME} \
164 --pver ${PVER} \
165 --pbuild ${PBUILD} \
166 ${depwalker_debug})"
167 fetch_packages ${ALLDEPS} || die "fetching packages"
168 md5sum_packages ${ALLDEPS} || die "md5 sum packages"
169 ;;
170
171 srcdownload)
172 # first of all get the right pkg which going to be installed
173 PCAT="$(pname2pcat ${MAGENAME})"
174
175 # package does not exists
176 [ -z "${PCAT}" ] && die "Package '${MAGENAME}' does not exist."
177
178 # source the highest magefile of this pkg
179 PKGNAME=$(get_value_from_magefile PKGNAME $(get_highest_magefile ${PCAT} ${MAGENAME}))
180
181 # package is masked
182 [ -z "${PKGNAME}" ] && die "Package '${MAGENAME}' is masked and not available for installation."
183
184 # convert PKGNAME to PNAME/PVER/PBUILD
185 # we're working *only* with these three vars from here on
186 PNAME="$(pkgname2pname ${PKGNAME})"
187 PVER="$(pkgname2pver ${PKGNAME})"
188 PBUILD="$(pkgname2pbuild ${PKGNAME})"
189
190 # get all dependencies of this package
191 ALLDEPS="$(${MLIBDIR}/depwalker.sh \
192 --method srcinstall \
193 --pcat ${PCAT} \
194 --pname ${PNAME} \
195 --pver ${PVER} \
196 --pbuild ${PBUILD} \
197 ${depwalker_debug})"
198 fetch_packages ${ALLDEPS} || die "fetching packages"
199 ;;
200
201 pretend|srcpretend|pretend-build-prerequisites)
202 # first of all get the right pkg which going to be installed
203 PCAT="$(pname2pcat ${MAGENAME})"
204
205 # package does not exists
206 [ -z "${PCAT}" ] && die "Package '${MAGENAME}' does not exist."
207
208 # source the highest magefile of this pkg
209 PKGNAME=$(get_value_from_magefile PKGNAME $(get_highest_magefile ${PCAT} ${MAGENAME}))
210
211 # package is masked
212 [ -z "${PKGNAME}" ] && die "Package '${MAGENAME}' is masked and not available for installation."
213
214 # convert PKGNAME to PNAME/PVER/PBUILD
215 # we're working *only* with these three vars from here on
216 PNAME="$(pkgname2pname ${PKGNAME})"
217 PVER="$(pkgname2pver ${PKGNAME})"
218 PBUILD="$(pkgname2pbuild ${PKGNAME})"
219
220 # abort if already installed
221 if is_installed ${PCAT}/${PNAME}-${PVER}-${PBUILD}
222 then
223 echo -en "Package "
224 echo -en "${COLRED}${PNAME}-${PVER}-${PBUILD}${COLDEFAULT}"
225 echo -e " already installed."
226 exit 3
227 fi
228 # get all dependencies of this package
229 ${MLIBDIR}/depwalker.sh \
230 --method ${METHOD} \
231 --pcat ${PCAT} \
232 --pname ${PNAME} \
233 --pver ${PVER} \
234 --pbuild ${PBUILD} \
235 ${depwalker_debug}
236 ;;
237
238 install|install-build-prerequisites)
239 have_root_privileges || die "You must be root to run this operation."
240
241 # first of all get the right pkg which going to be installed
242 PCAT="$(pname2pcat ${MAGENAME})"
243
244 # package does not exists
245 [ -z "${PCAT}" ] && die "Package '${MAGENAME}' does not exist."
246
247 # source the highest magefile of this pkg
248 PKGNAME=$(get_value_from_magefile PKGNAME $(get_highest_magefile ${PCAT} ${MAGENAME}))
249
250 # package is masked
251 [ -z "${PKGNAME}" ] && die "Package '${MAGENAME}' is masked and not available for installation."
252
253 # convert PKGNAME to PNAME/PVER/PBUILD
254 # we're working *only* with these three vars from here on
255 PNAME="$(pkgname2pname ${PKGNAME})"
256 PVER="$(pkgname2pver ${PKGNAME})"
257 PBUILD="$(pkgname2pbuild ${PKGNAME})"
258
259 if is_installed ${PCAT}/${PNAME}-${PVER}-${PBUILD}
260 then
261 echo -en "Package "
262 echo -en "${COLRED}${PCAT}/${PNAME}-${PVER}-${PBUILD}${COLDEFAULT}"
263 echo -e " already installed."
264 exit 3
265 fi
266
267 # get all dependencies of this package
268 ALLDEPS="$(${MLIBDIR}/depwalker.sh \
269 --method ${METHOD} \
270 --pcat ${PCAT} \
271 --pname ${PNAME} \
272 --pver ${PVER} \
273 --pbuild ${PBUILD} \
274 ${depwalker_debug})"
275
276 # first fetch all packages
277 fetch_packages ${ALLDEPS} || die "fetching packages"
278 md5sum_packages ${ALLDEPS} || die "md5 sum packages"
279 install_packages ${ALLDEPS} || die "installing packages"
280 ;;
281
282 srcinstall)
283 have_root_privileges || die "You must be root to run this operation."
284
285 # first of all get the right pkg which going to be installed
286 PCAT="$(pname2pcat ${MAGENAME})"
287
288 # package does not exists
289 [ -z "${PCAT}" ] && die "Package '${MAGENAME}' does not exist."
290
291 # source the highest magefile of this pkg
292 PKGNAME=$(get_value_from_magefile PKGNAME $(get_highest_magefile ${PCAT} ${MAGENAME}))
293
294 # package is masked
295 [ -z "${PKGNAME}" ] && die "Package '${MAGENAME}' is masked and not available for installation."
296
297 # convert PKGNAME to PNAME/PVER/PBUILD
298 # we're working *only* with these three vars from here on
299 PNAME="$(pkgname2pname ${PKGNAME})"
300 PVER="$(pkgname2pver ${PKGNAME})"
301 PBUILD="$(pkgname2pbuild ${PKGNAME})"
302
303 if is_installed ${PCAT}/${PNAME}-${PVER}-${PBUILD}
304 then
305 echo -en "Package "
306 echo -en "${COLRED}${PCAT}/${PNAME}-${PVER}-${PBUILD}${COLDEFAULT}"
307 echo -e " already installed."
308 exit 3
309 fi
310
311 # get all dependencies of this package
312 ALLDEPS="$(${MLIBDIR}/depwalker.sh \
313 --method ${METHOD} \
314 --pcat ${PCAT} \
315 --pname ${PNAME} \
316 --pver ${PVER} \
317 --pbuild ${PBUILD} \
318 ${depwalker_debug})"
319
320 install_packages --src-install ${ALLDEPS} || die "src-installing packages"
321 ;;
322
323 uninstall)
324 have_root_privileges || die "You must be root to run this operation."
325
326 ALLDEPS="$(get_uninstall_candidates --pname ${MAGENAME})"
327 if [ -z "${ALLDEPS}" ]
328 then
329 die "No package installed named '${MAGENAME}'."
330 fi
331 uninstall_packages ${ALLDEPS}
332 ;;
333
334 uppretend|srcuppretend)
335 ${MLIBDIR}/depwalker.sh \
336 --method ${METHOD} \
337 --pcat ${METHOD} \
338 --pname ${METHOD} \
339 --pver ${METHOD} \
340 --pbuild ${METHOD} \
341 ${depwalker_debug}
342 ;;
343
344 upgrade)
345 have_root_privileges || die "You must be root to run this operation."
346
347 # get all dependencies of *all* installed packages
348 # fake pcat,pname,pver,pbuild ...
349 ALLDEPS="$(${MLIBDIR}/depwalker.sh \
350 --method ${METHOD} \
351 --pcat ${METHOD} \
352 --pname ${METHOD} \
353 --pver ${METHOD} \
354 --pbuild ${METHOD} \
355 ${depwalker_debug})"
356
357 # first fetch all packages
358 fetch_packages ${ALLDEPS} || die "fetching packages"
359 md5sum_packages ${ALLDEPS} || die "md5 sum packages"
360 install_packages ${ALLDEPS} || die "installing packages"
361 ;;
362
363 srcupgrade)
364 have_root_privileges || die "You must be root to run this operation."
365
366 # get all dependencies of *all* installed packages
367 # fake pcat,pname,pver,pbuild ...
368 ALLDEPS="$(${MLIBDIR}/depwalker.sh \
369 --method ${METHOD} \
370 --pcat ${METHOD} \
371 --pname ${METHOD} \
372 --pver ${METHOD} \
373 --pbuild ${METHOD} \
374 ${depwalker_debug})"
375
376 install_packages --src-install ${ALLDEPS} || die "src-installing packages"
377 ;;
378
379 search)
380 pkgsearch "${MAGENAME}"
381 ;;
382
383 unpack)
384 have_root_privileges || die "You must be root to run this operation."
385
386 # first of all get the right pkg which going to be installed
387 PCAT="$(pname2pcat ${MAGENAME})"
388
389 # package does not exists
390 [ -z "${PCAT}" ] && die "Package '${MAGENAME}' does not exist."
391
392 # source the highest magefile of this pkg
393 PKGNAME=$(get_value_from_magefile PKGNAME $(get_highest_magefile ${PCAT} ${MAGENAME}))
394
395 # package is masked
396 [ -z "${PKGNAME}" ] && die "Package '${MAGENAME}' is masked and not available for installation."
397
398 # convert PKGNAME to PNAME/PVER/PBUILD
399 # we're working *only* with these three vars from here on
400 PNAME="$(pkgname2pname ${PKGNAME})"
401 PVER="$(pkgname2pver ${PKGNAME})"
402 PBUILD="$(pkgname2pbuild ${PKGNAME})"
403
404 # get all dependencies of this package
405 ALLDEPS="$(${MLIBDIR}/depwalker.sh \
406 --method install \
407 --pcat ${PCAT} \
408 --pname ${PNAME} \
409 --pver ${PVER} \
410 --pbuild ${PBUILD} \
411 ${depwalker_debug})"
412
413 fetch_packages ${ALLDEPS} || die "fetching packages"
414 md5sum_packages ${ALLDEPS} || die "md5 sum packages"
415 unpack_packages ${ALLDEPS} || die "unpacking packages"
416 ;;
417
418 update)
419 have_root_privileges || die "You must be root to run this operation."
420 syncmage
421 ;;
422
423 update-tarball)
424 have_root_privileges || die "You must be root to run this operation."
425 syncmage_tarball
426 ;;
427
428 clean)
429 have_root_privileges || die "You must be root to run this operation."
430 cleanpkg
431 ;;
432
433 version)
434 # showversion
435 exit 0
436 ;;
437
438 regen-mage-tree)
439 have_root_privileges || die "You must be root to run this operation."
440
441 if [ -z "${SMAGESCRIPTSDIR}" ] || [ ! -d "${SMAGESCRIPTSDIR}" ]
442 then
443 echo "SMAGESCRIPTSDIR not found. Check your mage.rc or check out smage repos."
444 exit 1
445 fi
446 for i in $(find ${SMAGESCRIPTSDIR} -type f -name "*.smage2")
447 do
448 smage2 only-regen-tree "${i}"
449 done
450 ;;
451
452 print-features)
453 mprintfeatures
454 ;;
455
456 *)
457 print_usage
458 ;;
459 esac

Properties

Name Value
svn:executable *