Annotation of /trunk/mlivecdbuild/files/mage3.functions.sh
Parent Directory | Revision Log
Revision 27 -
(hide annotations)
(download)
(as text)
Wed Jan 5 05:36:10 2005 UTC (19 years, 4 months ago) by niro
File MIME type: application/x-sh
File size: 7942 byte(s)
Wed Jan 5 05:36:10 2005 UTC (19 years, 4 months ago) by niro
File MIME type: application/x-sh
File size: 7942 byte(s)
mlivecdbuild-0.3.6-r7 import
1 | niro | 27 | #!/bin/bash |
2 | # Magellan Linux Installer Functions (mage.functions.sh) | ||
3 | # version: 0.3.1 | ||
4 | |||
5 | mage_setup() { | ||
6 | install -d $INSTALLDB | ||
7 | } | ||
8 | |||
9 | fatal_error() { | ||
10 | #$1 is the missing file | ||
11 | echo -e "\nFatal Error: Package seemed to be corrupt." | ||
12 | echo -e "$1 was not found in ${PKGNAME}" | ||
13 | exit 1 | ||
14 | } | ||
15 | |||
16 | build_unpackpkg() { | ||
17 | tar xjmf ${PKGDIR}/${PKGNAME}.${PKGSUFFIX} -C ${BUILDDIR} | ||
18 | } | ||
19 | |||
20 | build_doinstall() { | ||
21 | if [ -e ${BUILDDIR}/${PKGNAME}/.dirs ] | ||
22 | then | ||
23 | # install of dirs | ||
24 | while read pathto posix | ||
25 | do | ||
26 | if [ ! -z $pathto ] | ||
27 | then | ||
28 | if [ "$VERBOSE" == "on" ] | ||
29 | then | ||
30 | echo -e "\t>>> DIR: $pathto" | ||
31 | fi | ||
32 | install -m $posix -d $pathto | ||
33 | fi | ||
34 | done << EOF | ||
35 | $(cat ${BUILDDIR}/${PKGNAME}/.dirs) | ||
36 | EOF | ||
37 | else | ||
38 | fatal_error .dir | ||
39 | fi | ||
40 | |||
41 | |||
42 | # install of files | ||
43 | if [ -e ${BUILDDIR}/${PKGNAME}/.files ] | ||
44 | then | ||
45 | while read pathto posix user group | ||
46 | do | ||
47 | if [ ! -z $pathto ] | ||
48 | then | ||
49 | if [ "$VERBOSE" == "on" ] | ||
50 | then | ||
51 | echo -e "\t>>> FILE: $pathto" | ||
52 | fi | ||
53 | ### kleiner notfall fix ### | ||
54 | if [ ! -d `dirname $pathto` ] | ||
55 | then | ||
56 | install -d `dirname $pathto` | ||
57 | fi | ||
58 | FILE="$pathto" | ||
59 | install -m $posix ${BUILDDIR}/${PKGNAME}/binfiles/$FILE $pathto | ||
60 | if [ ! -z $user ] | ||
61 | then | ||
62 | chown $user:$group $FILE ### <---- test | ||
63 | fi | ||
64 | fi | ||
65 | done << EOF | ||
66 | $(cat ${BUILDDIR}/${PKGNAME}/.files) | ||
67 | EOF | ||
68 | else | ||
69 | fatal_error .files | ||
70 | fi | ||
71 | |||
72 | # install of symlinks | ||
73 | if [ -e ${BUILDDIR}/${PKGNAME}/.symlinks ] | ||
74 | then | ||
75 | while read pathto posix link | ||
76 | do | ||
77 | if [ ! -z $pathto ] | ||
78 | then | ||
79 | if [ "$VERBOSE" == "on" ] | ||
80 | then | ||
81 | echo -e "\t>>> LINK: $pathto" | ||
82 | fi | ||
83 | ln -snf $link $pathto | ||
84 | fi | ||
85 | done << EOF | ||
86 | $(cat ${BUILDDIR}/${PKGNAME}/.symlinks) | ||
87 | EOF | ||
88 | else | ||
89 | fatal_error .symlinks | ||
90 | fi | ||
91 | |||
92 | |||
93 | if [ -e ${BUILDDIR}/${PKGNAME}/.pipes ] | ||
94 | then | ||
95 | # install of pipes | ||
96 | while read pathto posix | ||
97 | do | ||
98 | if [ ! -z $pathto ] | ||
99 | then | ||
100 | if [ "$VERBOSE" == "on" ] | ||
101 | then | ||
102 | echo -e "\t>>> PIPE: $pathto" | ||
103 | fi | ||
104 | mkfifo -m $posix $pathto | ||
105 | fi | ||
106 | done << EOF | ||
107 | $(cat ${BUILDDIR}/${PKGNAME}/.pipes) | ||
108 | EOF | ||
109 | else | ||
110 | fatal_error .pipes | ||
111 | fi | ||
112 | |||
113 | |||
114 | if [ -e ${BUILDDIR}/${PKGNAME}/.char ] | ||
115 | then | ||
116 | # install of character devices | ||
117 | while read pathto posix | ||
118 | do | ||
119 | if [ ! -z $pathto ] | ||
120 | then | ||
121 | if [ "$VERBOSE" == "on" ] | ||
122 | then | ||
123 | echo -e "\t>>> CHAR: $pathto" | ||
124 | fi | ||
125 | mknode -m $posix -c $pathto | ||
126 | fi | ||
127 | done << EOF | ||
128 | $(cat ${BUILDDIR}/${PKGNAME}/.char) | ||
129 | EOF | ||
130 | else | ||
131 | fatal_error .char | ||
132 | fi | ||
133 | |||
134 | #add package to database | ||
135 | install -d ${INSTALLDB}/${PKGNAME} | ||
136 | cp ${BUILDDIR}/${PKGNAME}/.{char,dirs,files,pipes,symlinks} ${INSTALLDB}/${PKGNAME} | ||
137 | |||
138 | #installs mage file to database | ||
139 | #install -m 0644 -o root -g root \ | ||
140 | # ${MAGEDIR}/${MAGENAME} \ | ||
141 | # ${INSTALLDB}/${PKGNAME} | ||
142 | install -m 0644 -o root -g root \ | ||
143 | ${MAGEFILE} \ | ||
144 | ${INSTALLDB}/${PKGNAME} | ||
145 | |||
146 | if [ "$VERBOSE" == "off" ] | ||
147 | then | ||
148 | if [ -f /var/tmp/proz ] | ||
149 | then | ||
150 | rm /var/tmp/proz | ||
151 | fi | ||
152 | fi | ||
153 | } | ||
154 | |||
155 | |||
156 | |||
157 | build_douninstall() { | ||
158 | #uninstall of symlinks | ||
159 | if [ -e ${INSTALLDB}/${PKGNAME}/.symlinks ] | ||
160 | then | ||
161 | while read pathto posix link | ||
162 | do | ||
163 | if [ ! -z $pathto ] | ||
164 | then | ||
165 | if [ -L $pathto ] | ||
166 | then | ||
167 | echo -e "\t<<< LINK: $pathto" | ||
168 | rm $pathto | ||
169 | else | ||
170 | echo -e "${COLRED}! exist${COLDEFAULT} <<< LINK: $pathto" | ||
171 | fi | ||
172 | fi | ||
173 | done << EOF | ||
174 | $(cat ${INSTALLDB}/${PKGNAME}/.symlinks) | ||
175 | EOF | ||
176 | else | ||
177 | fatal_error .symlinks | ||
178 | fi | ||
179 | |||
180 | #uninstall of files | ||
181 | if [ -e ${INSTALLDB}/${PKGNAME}/.files ] | ||
182 | then | ||
183 | while read pathto posix user group | ||
184 | do | ||
185 | if [ ! -z $pathto ] | ||
186 | then | ||
187 | if [ -e $pathto ] | ||
188 | then | ||
189 | echo -e "\t<<< FILE: $pathto" | ||
190 | rm $pathto | ||
191 | else | ||
192 | echo -e "${COLRED}! exist${COLDEFAULT} <<< FILE: $pathto" | ||
193 | fi | ||
194 | fi | ||
195 | done << EOF | ||
196 | $(cat ${INSTALLDB}/${PKGNAME}/.files) | ||
197 | EOF | ||
198 | else | ||
199 | fatal_error .files | ||
200 | fi | ||
201 | |||
202 | |||
203 | if [ -e ${INSTALLDB}/${PKGNAME}/.pipes ] | ||
204 | then | ||
205 | while read pathto posix | ||
206 | do | ||
207 | if [ ! -z $pathto ] | ||
208 | then | ||
209 | echo -e "\t<<< PIPE: $pathto" | ||
210 | rm $pathto | ||
211 | fi | ||
212 | done << EOF | ||
213 | $(cat ${INSTALLDB}/${PKGNAME}/.pipes) | ||
214 | EOF | ||
215 | else | ||
216 | fatal_error .pipes | ||
217 | fi | ||
218 | |||
219 | if [ -e ${INSTALLDB}/${PKGNAME}/.char ] | ||
220 | then | ||
221 | while read pathto posix | ||
222 | do | ||
223 | if [ ! -z $pathto ] | ||
224 | then | ||
225 | echo -e "\t<<< CHAR: $pathto" | ||
226 | rm $pathto | ||
227 | fi | ||
228 | done << EOF | ||
229 | $(cat ${INSTALLDB}/${PKGNAME}/.char) | ||
230 | EOF | ||
231 | else | ||
232 | fatal_error .char | ||
233 | fi | ||
234 | |||
235 | #uninstall of dirs ## added small hack to fix dirs | ||
236 | # must be reverse -> smage2 doesn't sort them | ||
237 | if [ -e ${INSTALLDB}/${PKGNAME}/.dirs ] | ||
238 | then | ||
239 | while read pathto posix | ||
240 | do | ||
241 | if [ ! -z $pathto ] | ||
242 | then | ||
243 | if [ -e $pathto ] | ||
244 | then | ||
245 | echo -e "\t<<< DIR: $pathto" | ||
246 | rmdir $pathto &> /dev/null | ||
247 | if [ "$?" -ne "0" ] | ||
248 | then | ||
249 | #moves the cursor up | ||
250 | echo -en \\033[A | ||
251 | echo -e "${COLRED}! empty${COLDEFAULT} <<< DIR: $pathto" | ||
252 | fi | ||
253 | else | ||
254 | echo -e "${COLRED}! exist${COLDEFAULT} <<< DIR: $pathto" | ||
255 | fi | ||
256 | fi | ||
257 | done << EOF | ||
258 | $(cat ${INSTALLDB}/${PKGNAME}/.dirs|sort -r) ##<--- the hack | ||
259 | EOF | ||
260 | else | ||
261 | fatal_error .dirs | ||
262 | fi | ||
263 | |||
264 | #removes database entry | ||
265 | if [ -d ${INSTALLDB}/${PKGNAME} ] | ||
266 | then | ||
267 | rm -rf ${INSTALLDB}/${PKGNAME} | ||
268 | fi | ||
269 | } | ||
270 | |||
271 | getpackages() { | ||
272 | if [ -z "$MIRRORS" ] | ||
273 | then | ||
274 | echo "You have no mirrors defined. Please edit your /etc/mage.rc." | ||
275 | exit 1 | ||
276 | fi | ||
277 | |||
278 | local i | ||
279 | for i in $MIRRORS | ||
280 | do | ||
281 | wget \ | ||
282 | --passive-ftp \ | ||
283 | --tries 3 \ | ||
284 | --continue \ | ||
285 | --progress bar \ | ||
286 | --directory-prefix=${PKGDIR} \ | ||
287 | ${i}/packages/${PKGNAME}.${PKGSUFFIX} | ||
288 | if [ "$?" == "0" ] | ||
289 | then | ||
290 | break | ||
291 | else | ||
292 | continue | ||
293 | fi | ||
294 | done | ||
295 | } | ||
296 | |||
297 | syncmage() { | ||
298 | if [ -z "$RSYNC" ] | ||
299 | then | ||
300 | echo "You have no rsync-mirrors defined. Please edit your /etc/mage.rc." | ||
301 | exit 1 | ||
302 | fi | ||
303 | |||
304 | local i | ||
305 | for i in $RSYNC | ||
306 | do | ||
307 | rsync \ | ||
308 | --recursive \ | ||
309 | --links \ | ||
310 | --perms \ | ||
311 | --times \ | ||
312 | --devices \ | ||
313 | --timeout=600 \ | ||
314 | --verbose \ | ||
315 | --compress \ | ||
316 | --progress \ | ||
317 | --stats \ | ||
318 | --delete \ | ||
319 | --delete-after \ | ||
320 | $i $MAGEDIR | ||
321 | if [ "$?" == "0" ] | ||
322 | then | ||
323 | break | ||
324 | else | ||
325 | continue | ||
326 | fi | ||
327 | done | ||
328 | } | ||
329 | |||
330 | cleanpkg(){ | ||
331 | if [ -d "$PKGDIR" ] | ||
332 | then | ||
333 | echo -n "Removing downloaded packages... " | ||
334 | rm -rf ${PKGDIR}/* | ||
335 | echo "done." | ||
336 | fi | ||
337 | } | ||
338 | |||
339 | ################################################### | ||
340 | # function keepfiles # | ||
341 | # keepfiles "$CATEGORIE/$PNAME" "$filename" # | ||
342 | # note wildchars allowed # | ||
343 | ################################################### | ||
344 | keepfiles() { | ||
345 | local name | ||
346 | local keep | ||
347 | name="`echo $1| cut -d '/' -f2`" | ||
348 | keep="$2" | ||
349 | |||
350 | DELPKG="`find ${INSTALLDB} -name ${name}*.mage`" | ||
351 | DELDIR="${INSTALLDB}/$(basename ${DELPKG} .mage)" | ||
352 | cp ${DELDIR}/.files ${DELDIR}/.files-orig | ||
353 | sed "s:${keep}::" \ | ||
354 | ${DELDIR}/.files-orig > ${DELDIR}/.files | ||
355 | rm ${DELDIR}/.files-orig | ||
356 | } | ||
357 | |||
358 | |||
359 | ################################################### | ||
360 | # function injectpkg # | ||
361 | # injectpkg "$CATEGORIE/$PNAME" # | ||
362 | # note wildchars allowed # | ||
363 | ################################################### | ||
364 | injectpkg() { | ||
365 | local name | ||
366 | local categorie | ||
367 | local magename | ||
368 | name="`echo $1| cut -d '/' -f2`" | ||
369 | categorie="`echo $1| cut -d '/' -f1`" | ||
370 | |||
371 | INJPKG="`find ${MAGEDIR} -name ${name}-*.mage`" | ||
372 | for i in ${INJPKG} | ||
373 | do | ||
374 | magename="$(basename ${INJPKG} .mage)" | ||
375 | echo -e "Injecting fake package for ${COLBLUE}${categorie}${COLDEFAULT}/${COLGREEN}${magename}${COLDEFAULT}" | ||
376 | install -d ${INSTALLDB}/${magename} | ||
377 | touch ${INSTALLDB}/${magename}/{.injected,.files,.dirs,.symlinks,.pipes,.char} | ||
378 | |||
379 | #installs magefile | ||
380 | install -m 0644 -o root -g root \ | ||
381 | ${MAGEDIR}/${categorie}/${magename}.mage \ | ||
382 | ${INSTALLDB}/${magename} | ||
383 | done | ||
384 | } | ||
385 | |||
386 | ################################################### | ||
387 | # function reminjected # | ||
388 | # reminjected # | ||
389 | # note: removes all injected packages # | ||
390 | ################################################### | ||
391 | reminjected() { | ||
392 | DELINJ="`find ${INSTALLDB} -name .injected`" | ||
393 | for i in ${DELINJ} | ||
394 | do | ||
395 | magename=$(dirname ${i}) | ||
396 | if [ -d "${magename}" ] | ||
397 | then | ||
398 | # small fix to protect the mage-db deleting itself, that is not so funny :) | ||
399 | if [ "${magename}" != "${INSTALLDB}" ] | ||
400 | then | ||
401 | echo -e "removing fake package ${COLRED}${magename#${INSTALLDB}/*}${COLDEFAULT}" | ||
402 | rm -rf ${magename} | ||
403 | fi | ||
404 | fi | ||
405 | done | ||
406 | } |
Properties
Name | Value |
---|---|
svn:executable | * |