Contents of /trunk/mlivecdbuild/files/mage3.sh
Parent Directory | Revision Log
Revision 27 -
(show annotations)
(download)
(as text)
Wed Jan 5 05:36:10 2005 UTC (19 years, 3 months ago) by niro
File MIME type: application/x-sh
File size: 7778 byte(s)
Wed Jan 5 05:36:10 2005 UTC (19 years, 3 months ago) by niro
File MIME type: application/x-sh
File size: 7778 byte(s)
mlivecdbuild-0.3.6-r7 import
1 | #!/bin/sh |
2 | # Magellan Linux Installer (mage.sh) |
3 | # version: 0.3.1 |
4 | |
5 | ##configuration -> mage.rc |
6 | #PKGDIR="/usr/src/packages" |
7 | PKGSUFFIX="mpk" |
8 | #BUILDDIR="/usr/src" |
9 | #INSTALLDB="/var/ALXInstDB" |
10 | #MAGEDIR="/usr/src/mage-0.2" |
11 | MAGENAME="$2" |
12 | #PKGNAME="`basename $2 .mage`" |
13 | MLIBDIR=/usr/lib/mage |
14 | |
15 | ## nur für tests -> normalerweise in /etc/rc.d/init.d/functions |
16 | COLRED="\033[1;6m\033[31m" |
17 | COLGREEN="\033[1;6m\033[32m" |
18 | COLBLUE="\033[1;6m\033[34m" |
19 | COLDEFAULT="\033[0m" |
20 | |
21 | |
22 | ##functions |
23 | if [ -f /etc/mage.rc ] |
24 | then |
25 | source /etc/mage.rc |
26 | else |
27 | echo "Your /etc/mage.rc is missing. Aborting." |
28 | exit 1 |
29 | fi |
30 | |
31 | #loads functions |
32 | source ${MLIBDIR}/mage3.functions.sh |
33 | |
34 | #############DIALOGE############## |
35 | print_usage(){ |
36 | echo -e "\nUsage: $0 [option] pkgname ..." |
37 | echo "Options:" |
38 | echo -e "\tpretend - pretend package's depencies" |
39 | echo -e "\tinstall - installs package" |
40 | echo -e "\tuninstall - removes package" |
41 | echo -e "\tupdate - updates pkg database" |
42 | echo -e "\tclean - removes downloaded packages" |
43 | echo -e "\tunpack - unpacks package" |
44 | echo -e "\tdownload - downloads package" |
45 | echo -e "\tkeepfiles - prevents files from uninstalling" |
46 | echo -e "\tinject - inject a package to fake depencies" |
47 | echo -e "\treminjected - removes *all* fake packages" |
48 | echo |
49 | } |
50 | |
51 | xtitle() { |
52 | if [ ${TERM} == "xterm" ] |
53 | then |
54 | echo -ne "\033]0;Mage: $1\007" |
55 | fi |
56 | return 0 |
57 | } |
58 | |
59 | xtitleclean() { |
60 | if [ ${TERM} == "xterm" ] |
61 | then |
62 | echo -ne "\033]0;\007" |
63 | fi |
64 | return 0 |
65 | } |
66 | |
67 | spin_processbar() { |
68 | echo -en "Processing: " |
69 | while [ -f /var/tmp/proz ] |
70 | do |
71 | echo -en "-\b" |
72 | sleep 0.01 |
73 | echo -en "\\ \b\b" |
74 | sleep 0.01 |
75 | echo -en "|\b" |
76 | sleep 0.01 |
77 | echo -en "/\b" |
78 | sleep 0.01 |
79 | done |
80 | echo "done" |
81 | return 0 |
82 | } |
83 | |
84 | #cuts full pathnames or versioniezed names down to basename |
85 | choppkgname(){ |
86 | #we want this only if full name was used |
87 | if [ -n "$(echo ${MAGENAME}|fgrep .mage)" ] |
88 | then |
89 | #cuts ARCH and PBUILD |
90 | #ARCH comes from /etc/mage.rc |
91 | MAGENAME=$(echo ${MAGENAME} |sed -e "s:-${ARCH}-r*.::g") |
92 | |
93 | #cuts version number |
94 | MAGENAME=$(basename ${MAGENAME%-*} .mage) |
95 | fi |
96 | } |
97 | |
98 | # get_categorie $PKGNAME, returns CATEGORIE |
99 | # ret 0=ok, 1=not_found |
100 | getcategorie(){ |
101 | |
102 | for CAT in ${MAGEDIR}/* |
103 | do |
104 | if [ -d ${CAT}/${MAGENAME} ] |
105 | then |
106 | #debug only |
107 | if [ "$MAGEDEBUG" == "on" ] |
108 | then |
109 | echo "$MAGENAME found -> $CAT/$MAGENAME" |
110 | echo "categorie = $(basename ${CAT})" |
111 | fi |
112 | CATEGORIE=$(basename ${CAT}) |
113 | fi |
114 | done |
115 | |
116 | #package does not exists |
117 | if [ -z "$CATEGORIE" ] |
118 | then |
119 | echo -e "Package "${COLRED}"\"${MAGENAME}\""${COLDEFAULT}" does not exists." |
120 | exit 1 |
121 | fi |
122 | } |
123 | |
124 | |
125 | #check_stable_package /path/to/foo.mage |
126 | # returns 0=stable 1=unstable |
127 | check_stable_package(){ |
128 | #be sure no previous $STATES exists |
129 | unset STATE |
130 | |
131 | source $1 |
132 | if [ "${STATE}" != "stable" ] |
133 | then |
134 | return 1 |
135 | fi |
136 | |
137 | #unset the sourced varibales; |
138 | #we'll got bad problems later on if we don't do this |
139 | unset PKGNAME |
140 | unset STATE |
141 | unset DESCRIPTION |
142 | unset HOMEPAGE |
143 | unset DEPEND |
144 | unset preinstall |
145 | unset postinstall |
146 | |
147 | return 0 |
148 | } |
149 | |
150 | #get_highest_magefile ${CATEGORIE} ${PKGNAME} |
151 | #fake at moment returns only stable pkgs (must set to be one) |
152 | # return $HIGHEST_MAGEFILE |
153 | get_highest_magefile(){ |
154 | unset HIGHEST_MAGEFILE |
155 | #CATEGORIE=$1 |
156 | #PKGNAME=$2 |
157 | |
158 | for i in ${MAGEDIR}/${CATEGORIE}/${MAGENAME}/* |
159 | do |
160 | #we exclude subdirs (for stuff like a md5sum dir) |
161 | if [ ! -d ${i} ] |
162 | then |
163 | check_stable_package ${i} |
164 | if [ "$?" == "0" ] |
165 | then |
166 | HIGHEST_MAGEFILE=${i} |
167 | #for debug only |
168 | if [ "$MAGEDEBUG" == "on" ] |
169 | then |
170 | echo "HIGHEST_MAGEFILE=${HIGHEST_MAGEFILE}" |
171 | fi |
172 | fi |
173 | fi |
174 | done |
175 | |
176 | MAGEFILE=${HIGHEST_MAGEFILE} |
177 | return 0 |
178 | } |
179 | |
180 | mage_install_virtual(){ |
181 | echo -e "\nInstallation of Package: ${COLGREEN}$PKGNAME${COLDEFAULT}\n" |
182 | |
183 | export -f preinstall 2> /dev/null |
184 | if [ "$?" == "0" ] |
185 | then |
186 | echo -e "\nRunning Preinstall ... \n" |
187 | preinstall |
188 | unset preinstall |
189 | fi |
190 | |
191 | #creates fake db entry |
192 | install -d ${INSTALLDB}/${PKGNAME} |
193 | touch ${INSTALLDB}/${PKGNAME}/.virtual |
194 | |
195 | #fake file-descriptors |
196 | touch ${INSTALLDB}/${PKGNAME}/.dirs |
197 | touch ${INSTALLDB}/${PKGNAME}/.symlinks |
198 | touch ${INSTALLDB}/${PKGNAME}/.files |
199 | touch ${INSTALLDB}/${PKGNAME}/.pipes |
200 | touch ${INSTALLDB}/${PKGNAME}/.char |
201 | |
202 | #installs mage file to database |
203 | #install -m 0644 -o root -g root \ |
204 | # ${MAGEDIR}/${MAGENAME} \ |
205 | # ${INSTALLDB}/${PKGNAME} |
206 | |
207 | install -m 0644 -o root -g root \ |
208 | ${MAGEFILE} \ |
209 | ${INSTALLDB}/${PKGNAME} |
210 | |
211 | export -f postinstall 2> /dev/null |
212 | if [ "$?" == "0" ] |
213 | then |
214 | echo -e "\nRunning Postinstall ... \n" |
215 | postinstall |
216 | unset postinstall |
217 | fi |
218 | |
219 | ${MLIBDIR}/env-rebuild.sh |
220 | echo -e "\nPackage \"$PKGNAME\" sucessfully installed.\n" |
221 | |
222 | #unsets virtual state of packages |
223 | unset PKGTYPE |
224 | exit 0 |
225 | } |
226 | |
227 | |
228 | mage_install() { |
229 | local MAGEFILE |
230 | MAGEFILE=$1 |
231 | |
232 | source ${MAGEFILE} |
233 | |
234 | #abbruch wenn schon installiert |
235 | if [ -e ${INSTALLDB}/${PKGNAME} ] |
236 | then |
237 | echo -e "\n${COLRED}Package \"$PKGNAME\" already installed. Installation Aborted.${COLDEFAULT}\n" |
238 | exit 3 |
239 | fi |
240 | |
241 | xtitle "[ Installing ${PKGNAME} ]" |
242 | |
243 | if [ "${PKGTYPE}" == "virtual" ] |
244 | then |
245 | mage_install_virtual |
246 | fi |
247 | |
248 | |
249 | if [ ! -e ${PKGDIR}/${PKGNAME}.${PKGSUFFIX} ] |
250 | then |
251 | echo -e "\nPrefetching needed Packages for ${COLGREEN}${PKGNAME}${COLDEFAULT}...\n" |
252 | getpackages |
253 | fi |
254 | |
255 | echo -e "\nInstallation of Package: ${COLGREEN}$PKGNAME${COLDEFAULT}\n" |
256 | ( build_unpackpkg ) | echo -e "Unpacking Package ...\n" |
257 | |
258 | ##preinstall scripte |
259 | export -f preinstall 2> /dev/null |
260 | if [ "$?" == "0" ] |
261 | then |
262 | echo -e "\nRunning Preinstall ... \n" |
263 | preinstall |
264 | unset preinstall |
265 | fi |
266 | |
267 | #install of package |
268 | if [ "$VERBOSE" == "off" ] |
269 | then |
270 | touch /var/tmp/proz |
271 | build_doinstall|spin_processbar |
272 | fi |
273 | |
274 | if [ "$VERBOSE" == "on" ] |
275 | then |
276 | build_doinstall |
277 | fi |
278 | |
279 | #postinstall scripte |
280 | export -f postinstall 2> /dev/null |
281 | if [ "$?" == "0" ] |
282 | then |
283 | echo -e "\nRunning Postinstall ... \n" |
284 | postinstall |
285 | unset postinstall |
286 | fi |
287 | |
288 | #cleanup |
289 | if [ -d ${BUILDDIR}/${PKGNAME} ] |
290 | then |
291 | rm -rf ${BUILDDIR}/${PKGNAME} |
292 | fi |
293 | |
294 | #rebuilds the enviroment with the content of /etc/env.d |
295 | ${MLIBDIR}/env-rebuild.sh |
296 | |
297 | xtitleclean |
298 | |
299 | echo -e "\nPackage \"$PKGNAME\" sucessfully installed.\n" |
300 | |
301 | } |
302 | |
303 | mage_uninstall() { |
304 | # #installdbhome #packagedir #magefile |
305 | source ${INSTALLDB}/$(basename ${MAGENAME} .mage)/$(basename ${MAGENAME}) |
306 | |
307 | if [ ! -e ${INSTALLDB}/${PKGNAME} ] |
308 | then |
309 | echo -e "\nPackage \"$PKGNAME\" is not installed. Uninstallation Aborted.\n" |
310 | exit 3 |
311 | fi |
312 | |
313 | echo -e "\nUninstall of Package:\t${COLRED}$PKGNAME${COLDEFAULT}\n" |
314 | |
315 | if [ -z "${MAGE_UNINSTALL_TIMEOUT}" ] |
316 | then |
317 | MAGE_UNINSTALL_TIMEOUT=5 |
318 | fi |
319 | |
320 | for ((i=0; i < MAGE_UNINSTALL_TIMEOUT; i++)) |
321 | do |
322 | timeout=$(expr ${MAGE_UNINSTALL_TIMEOUT} - ${i}) |
323 | echo -e "Starting in ${COLRED} ${timeout}" \ |
324 | "${COLDEFAULT} seconds ... ( [CTRL+C] to abort )" |
325 | sleep 1 |
326 | #moves the cursor up |
327 | echo -en \\033[A |
328 | done |
329 | |
330 | #moves the cursor up |
331 | echo -en \\033[A |
332 | #min. 30 spaces needed for clearing up the rest of the line |
333 | echo -e "\nUninstall ${COLRED}started${COLDEFAULT} ..." \ |
334 | " \n" |
335 | sleep 1 |
336 | |
337 | build_douninstall |
338 | |
339 | #rebuilds the enviroment with the content of /etc/env.d |
340 | ${MLIBDIR}/env-rebuild.sh |
341 | |
342 | echo -e "\nPackage \"$PKGNAME\" sucessfully removed.\n" |
343 | } |
344 | |
345 | |
346 | case "$1" in |
347 | download) |
348 | choppkgname |
349 | getcategorie |
350 | get_highest_magefile |
351 | source ${MAGEFILE} |
352 | getpackages |
353 | ;; |
354 | pretend) |
355 | choppkgname |
356 | getcategorie |
357 | get_highest_magefile |
358 | ${MLIBDIR}/depwanderer.sh pretend ${MAGEFILE} |
359 | ;; |
360 | install) |
361 | choppkgname |
362 | getcategorie |
363 | get_highest_magefile |
364 | ALLDEPS="$(/usr/lib/mage/depwanderer.sh install ${MAGEFILE})" |
365 | for i in ${ALLDEPS} |
366 | do |
367 | mage_install ${i} |
368 | done |
369 | ;; |
370 | |
371 | uninstall) |
372 | mage_uninstall |
373 | ;; |
374 | |
375 | unpack) |
376 | build_unpackpkg |
377 | ;; |
378 | |
379 | update) |
380 | syncmage |
381 | ;; |
382 | clean) |
383 | cleanpkg |
384 | ;; |
385 | keepfiles) |
386 | keepfiles "$2" "$3" |
387 | ;; |
388 | inject) |
389 | injectpkg "$2" |
390 | ;; |
391 | reminjected) |
392 | reminjected |
393 | ;; |
394 | *) |
395 | print_usage |
396 | ;; |
397 | esac |
Properties
Name | Value |
---|---|
svn:executable | * |