Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 287 - (show annotations) (download) (as text)
Thu Dec 1 12:40:21 2005 UTC (18 years, 5 months ago) by niro
File MIME type: application/x-sh
File size: 11797 byte(s)
- set PKGDIR and BUILDDIR to MROOT if defined
- fixed missing regen-mage-tree command in usage()

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

Properties

Name Value
svn:executable *