Contents of /smage/trunk/include/mtools.sminc
Parent Directory | Revision Log
Revision 3 -
(show annotations)
(download)
Sat Jan 2 16:59:51 2010 UTC (14 years, 8 months ago) by niro
File size: 13845 byte(s)
Sat Jan 2 16:59:51 2010 UTC (14 years, 8 months ago) by niro
File size: 13845 byte(s)
-initial smage includes
1 | # $Header: /magellan-cvs/smage/include/mtools.sminc,v 1.39 2008/04/20 08:28:23 niro Exp $ |
2 | # some special build tools |
3 | |
4 | # automatical inherit mtools.minc |
5 | # this will provide the service management functions |
6 | INHERITS="${INHERITS} mtools" |
7 | |
8 | # installs initscripts |
9 | # minstallrc /path/to/rc-script {destfilename} |
10 | minstallrc() |
11 | { |
12 | local rcscript |
13 | local file |
14 | |
15 | [[ -z "$1" ]] && die "No initscript given" |
16 | |
17 | # if no fullpath given use file from sourcedir |
18 | if [[ -z $(dirname $1) ]] || [[ $(dirname $1) = . ]] |
19 | then |
20 | file="${SOURCEDIR}/${PNAME}/$1" |
21 | else |
22 | file="$1" |
23 | fi |
24 | |
25 | if [[ -n "$2" ]] |
26 | then |
27 | rcscript="$2" |
28 | else |
29 | rcscript="$(basename ${file})" |
30 | fi |
31 | |
32 | # needed directory |
33 | install -d ${BINDIR}/etc/rc.d/init.d || die |
34 | |
35 | # install our initscript |
36 | install -v -m 0755 -o root -g root ${file} ${BINDIR}/etc/rc.d/init.d/${rcscript} || die |
37 | } |
38 | |
39 | # installs environment files |
40 | # minstallenv /path/to/envdfile {destfilename} |
41 | minstallenv() |
42 | { |
43 | local envdfile |
44 | local file |
45 | |
46 | [[ -z "$1" ]] && die "No envd file given" |
47 | |
48 | # if no fullpath given use file from sourcedir |
49 | if [[ -z $(dirname $1) ]] || [[ $(dirname $1) = . ]] |
50 | then |
51 | file="${SOURCEDIR}/${PNAME}/$1" |
52 | else |
53 | file="$1" |
54 | fi |
55 | |
56 | if [[ -n "$2" ]] |
57 | then |
58 | envdfile="$2" |
59 | else |
60 | envdfile="$(basename ${file})" |
61 | fi |
62 | |
63 | # needed directory |
64 | install -d ${BINDIR}/etc/env.d || die |
65 | |
66 | # install our envfile |
67 | install -v -m 0644 -o root -g root ${file} ${BINDIR}/etc/env.d/${envdfile} || die |
68 | } |
69 | |
70 | # installs system configuration files |
71 | # minstallconf /path/to/confdfile {destfilename} |
72 | minstallconf() |
73 | { |
74 | local confdfile |
75 | local file |
76 | |
77 | [[ -z "$1" ]] && die "No confd file given" |
78 | |
79 | # if no fullpath given use file from sourcedir |
80 | if [[ -z $(dirname $1) ]] || [[ $(dirname $1) = . ]] |
81 | then |
82 | file="${SOURCEDIR}/${PNAME}/$1" |
83 | else |
84 | file="$1" |
85 | fi |
86 | |
87 | if [[ -n "$2" ]] |
88 | then |
89 | confdfile="$2" |
90 | else |
91 | confdfile="$(basename ${file})" |
92 | fi |
93 | |
94 | # needed directory |
95 | install -d ${BINDIR}/etc/conf.d || die |
96 | |
97 | # install our configfile |
98 | install -v -m 0644 -o root -g root ${file} ${BINDIR}/etc/conf.d/${confdfile} || die |
99 | } |
100 | |
101 | # installs system configuration files to etc |
102 | # minstalletc /path/to/etcfile {destfilename} {destdir path} |
103 | minstalletc() |
104 | { |
105 | local etcfile |
106 | local file |
107 | local destdir |
108 | |
109 | [[ -z "$1" ]] && die "No etc file given" |
110 | |
111 | # if no fullpath given use file from sourcedir |
112 | if [[ -z $(dirname $1) ]] || [[ $(dirname $1) = . ]] |
113 | then |
114 | file="${SOURCEDIR}/${PNAME}/$1" |
115 | else |
116 | file="$1" |
117 | fi |
118 | |
119 | if [[ -n "$2" ]] |
120 | then |
121 | etcfile="$2" |
122 | else |
123 | etcfile="$(basename ${file})" |
124 | fi |
125 | |
126 | if [[ -n "$3" ]] |
127 | then |
128 | destdir="$3" |
129 | else |
130 | destdir="/etc" |
131 | fi |
132 | |
133 | # needed directory |
134 | install -d ${BINDIR}/${destdir} || die |
135 | |
136 | # install our configfile |
137 | install -v -m 0644 -o root -g root ${file} ${BINDIR}/${destdir}/${etcfile} || die |
138 | } |
139 | |
140 | minstalludevrule() |
141 | { |
142 | local udevrule |
143 | local file |
144 | |
145 | [[ -z "$1" ]] && die "No udev rule given" |
146 | |
147 | # if no fullpath given use file from sourcedir |
148 | if [[ -z $(dirname $1) ]] || [[ $(dirname $1) = . ]] |
149 | then |
150 | file="${SOURCEDIR}/${PNAME}/$1" |
151 | else |
152 | file="$1" |
153 | fi |
154 | |
155 | if [[ -n "$2" ]] |
156 | then |
157 | udevrule="$2" |
158 | else |
159 | udevrule="$(basename ${file})" |
160 | fi |
161 | |
162 | # needed directory |
163 | install -d ${BINDIR}/etc/udev/rules.d || die |
164 | |
165 | # install our udev rule |
166 | install -v -m 0644 -o root -g root ${file} ${BINDIR}/etc/udev/rules.d/${udevrule} || die |
167 | } |
168 | |
169 | minstalludevhelper() |
170 | { |
171 | local udevhelper |
172 | local file |
173 | |
174 | [[ -z "$1" ]] && die "No udev helper given" |
175 | |
176 | # if no fullpath given use file from sourcedir |
177 | if [[ -z $(dirname $1) ]] || [[ $(dirname $1) = . ]] |
178 | then |
179 | file="${SOURCEDIR}/${PNAME}/$1" |
180 | else |
181 | file="$1" |
182 | fi |
183 | |
184 | if [[ -n "$2" ]] |
185 | then |
186 | udevhelper="$2" |
187 | else |
188 | udevhelper="$(basename ${file})" |
189 | fi |
190 | |
191 | # needed directory |
192 | install -d ${BINDIR}/lib/udev || die |
193 | |
194 | # install our udev-helper |
195 | install -v -m 0755 -o root -g root ${file} ${BINDIR}/lib/udev/${udevhelper} || die |
196 | } |
197 | |
198 | minstallhalinformation() |
199 | { |
200 | local halrule |
201 | local file |
202 | |
203 | [[ -z "$1" ]] && die "No hal rule given" |
204 | |
205 | # if no fullpath given use file from sourcedir |
206 | if [[ -z $(dirname $1) ]] || [[ $(dirname $1) = . ]] |
207 | then |
208 | file="${SOURCEDIR}/${PNAME}/$1" |
209 | else |
210 | file="$1" |
211 | fi |
212 | |
213 | if [[ -n "$2" ]] |
214 | then |
215 | halrule="$2" |
216 | else |
217 | halrule="$(basename ${file})" |
218 | fi |
219 | |
220 | # needed directory |
221 | install -d ${BINDIR}/usr/share/hal/fdi/information/20thirdparty || die |
222 | |
223 | # install our udev rule |
224 | install -v -m 0644 -o root -g root ${file} ${BINDIR}/usr/share/hal/fdi/information/20thirdparty/${halrule} || die |
225 | } |
226 | |
227 | minstallhalpolicy() |
228 | { |
229 | local halrule |
230 | local file |
231 | |
232 | [[ -z "$1" ]] && die "No hal rule given" |
233 | |
234 | # if no fullpath given use file from sourcedir |
235 | if [[ -z $(dirname $1) ]] || [[ $(dirname $1) = . ]] |
236 | then |
237 | file="${SOURCEDIR}/${PNAME}/$1" |
238 | else |
239 | file="$1" |
240 | fi |
241 | |
242 | if [[ -n "$2" ]] |
243 | then |
244 | halrule="$2" |
245 | else |
246 | halrule="$(basename ${file})" |
247 | fi |
248 | |
249 | # needed directory |
250 | install -d ${BINDIR}/usr/share/hal/fdi/policy/20thirdparty || die |
251 | |
252 | # install our udev rule |
253 | install -v -m 0644 -o root -g root ${file} ${BINDIR}/usr/share/hal/fdi/policy/20thirdparty/${halrule} || die |
254 | } |
255 | |
256 | minstallhalpreprobe() |
257 | { |
258 | local halrule |
259 | local file |
260 | |
261 | [[ -z "$1" ]] && die "No hal rule given" |
262 | |
263 | # if no fullpath given use file from sourcedir |
264 | if [[ -z $(dirname $1) ]] || [[ $(dirname $1) = . ]] |
265 | then |
266 | file="${SOURCEDIR}/${PNAME}/$1" |
267 | else |
268 | file="$1" |
269 | fi |
270 | |
271 | if [[ -n "$2" ]] |
272 | then |
273 | halrule="$2" |
274 | else |
275 | halrule="$(basename ${file})" |
276 | fi |
277 | |
278 | # needed directory |
279 | install -d ${BINDIR}/usr/share/hal/fdi/preprobe/10osvendor || die |
280 | |
281 | # install our udev rule |
282 | install -v -m 0644 -o root -g root ${file} ${BINDIR}/usr/share/hal/fdi/preprobe/10osvendor/${halrule} || die |
283 | } |
284 | |
285 | # install man files to appropiate dirs |
286 | # minstallman /path/to/manfile.foo |
287 | minstallman() |
288 | { |
289 | local manfile |
290 | local mandir |
291 | local file |
292 | |
293 | [[ -z "$@" ]] && die "No man file given" |
294 | |
295 | for file in $@ |
296 | do |
297 | manfile="$(basename ${file})" |
298 | mandir="man${manfile##*.}" |
299 | |
300 | install -d ${BINDIR}/usr/share/man/${mandir} || die |
301 | install -v -m0644 ${file} ${BINDIR}/usr/share/man/${mandir}/${manfile} || die |
302 | done |
303 | } |
304 | |
305 | # install info files to appropiate dirs |
306 | # minstallinfo /path/to/infofile.foo |
307 | minstallinfo() |
308 | { |
309 | local file |
310 | |
311 | [[ -z "$@" ]] && die "No info file given" |
312 | |
313 | for file in $@ |
314 | do |
315 | install -d ${BINDIR}/usr/share/info || die |
316 | install -v -m0644 ${file} ${BINDIR}/usr/share/info/$(basename ${file}) || die |
317 | done |
318 | } |
319 | |
320 | # install html files to appropiate dirs |
321 | # minstallhtml /path/to/infofile.foo |
322 | minstallhtml() |
323 | { |
324 | local file |
325 | local subfile |
326 | local prefix |
327 | local subprefix |
328 | |
329 | # handle prefix |
330 | case "$1" in |
331 | --prefix|-p) shift; prefix="$1"; shift ;; |
332 | esac |
333 | |
334 | [[ -z "$@" ]] && die "No html file given" |
335 | |
336 | for file in $@ |
337 | do |
338 | install -d ${BINDIR}/usr/share/doc/${PNAME}-${PVER}/html${prefix} || die |
339 | |
340 | if [[ -d ${file} ]] |
341 | then |
342 | for subfile in ${file}/* |
343 | do |
344 | subprefix="$(dirname ${subfile/$(dirname ${file})/})" |
345 | subprefix="${prefix}${subprefix}/" |
346 | |
347 | minstallhtml --prefix ${subprefix} ${subfile} || die |
348 | done |
349 | else |
350 | install -v -m0644 ${file} ${BINDIR}/usr/share/doc/${PNAME}-${PVER}/html/${prefix}$(basename ${file}) || die |
351 | fi |
352 | done |
353 | } |
354 | |
355 | # install pixmaps to appropiate dirs |
356 | # minstallpixmap srcname destname {/path/to} |
357 | minstallpixmap() |
358 | { |
359 | local file |
360 | local destdir |
361 | local destfile |
362 | |
363 | [[ -z "$1" ]] && die "No pixmap given" |
364 | |
365 | # if no fullpath given use file from sourcedir |
366 | if [[ -z $(dirname $1) ]] || [[ $(dirname $1) = . ]] |
367 | then |
368 | file="${SOURCEDIR}/${PNAME}/$1" |
369 | else |
370 | file="$1" |
371 | fi |
372 | |
373 | if [[ -n "$2" ]] |
374 | then |
375 | destfile="$2" |
376 | else |
377 | destfile="$(basename ${file})" |
378 | fi |
379 | |
380 | if [[ -n "$3" ]] |
381 | then |
382 | destdir="$3" |
383 | else |
384 | destdir="/usr/share/pixmaps" |
385 | fi |
386 | |
387 | # needed directory |
388 | install -d ${BINDIR}/${destdir} || die |
389 | |
390 | # install our pixmap |
391 | install -v -m 0644 -o root -g root ${file} ${BINDIR}/${destdir}/${destfile} || die |
392 | } |
393 | |
394 | # installs pam configuration files |
395 | # minstallpam /path/to/pamfile {destfilename} |
396 | minstallpam() |
397 | { |
398 | local pamfile |
399 | local file |
400 | |
401 | [[ -z "$1" ]] && die "No pam file given" |
402 | |
403 | # if no fullpath given use file from sourcedir |
404 | if [[ -z $(dirname $1) ]] || [[ $(dirname $1) = . ]] |
405 | then |
406 | file="${SOURCEDIR}/${PNAME}/$1" |
407 | else |
408 | file="$1" |
409 | fi |
410 | |
411 | if [[ -n "$2" ]] |
412 | then |
413 | pamfile="$2" |
414 | else |
415 | pamfile="$(basename ${file})" |
416 | fi |
417 | |
418 | # needed directory |
419 | install -d ${BINDIR}/etc/pam.d || die |
420 | |
421 | # install our configfile |
422 | install -v -m 0644 -o root -g root ${file} ${BINDIR}/etc/pam.d/${pamfile} || die |
423 | } |
424 | |
425 | # installs cronjobs |
426 | # minstallcron [hourly|daily|weekly|monthly] /path/to/cronfile {destfilename} |
427 | minstallcron() |
428 | { |
429 | local cronfile |
430 | local loop |
431 | local file |
432 | |
433 | [[ -z "$1" ]] && die "No loop rythem given [hourly|daily|weekly|monthly]" |
434 | [[ -z "$2" ]] && die "No cronfile given" |
435 | |
436 | loop="$1" |
437 | |
438 | # if no fullpath given use file from sourcedir |
439 | if [[ -z $(dirname $2) ]] || [[ $(dirname $2) = . ]] |
440 | then |
441 | file="${SOURCEDIR}/${PNAME}/$2" |
442 | else |
443 | file="$2" |
444 | fi |
445 | |
446 | if [[ -n "$3" ]] |
447 | then |
448 | cronfile="$3" |
449 | else |
450 | cronfile="$(basename ${file})" |
451 | fi |
452 | |
453 | # needed directory |
454 | install -m0750 -d ${BINDIR}/etc/cron.${loop} || die |
455 | |
456 | # install our cronfile |
457 | install -v -m 0750 -o root -g root ${file} ${BINDIR}/etc/cron.${loop}/${cronfile} || die |
458 | } |
459 | |
460 | |
461 | # installs logrotate configuration files |
462 | # minstallpam /path/to/logrotatefile {destfilename} |
463 | minstalllog() |
464 | { |
465 | local logfile |
466 | local file |
467 | |
468 | [[ -z "$1" ]] && die "No logrotate file given" |
469 | |
470 | # if no fullpath given use file from sourcedir |
471 | if [[ -z $(dirname $1) ]] || [[ $(dirname $1) = . ]] |
472 | then |
473 | file="${SOURCEDIR}/${PNAME}/$1" |
474 | else |
475 | file="$1" |
476 | fi |
477 | |
478 | if [[ -n "$2" ]] |
479 | then |
480 | logfile="$2" |
481 | else |
482 | logfile="$(basename ${file})" |
483 | fi |
484 | |
485 | # needed directory |
486 | install -d ${BINDIR}/etc/logrotate.d || die |
487 | |
488 | # install our configfile |
489 | install -v -m 0644 -o root -g root ${file} ${BINDIR}/etc/logrotate.d/${logfile} || die |
490 | } |
491 | |
492 | |
493 | # installs given directories |
494 | # minstalldir /path/to/dest/dir {/path/to/dest/dirN} |
495 | minstalldir() |
496 | { |
497 | local argv="$@" |
498 | local dest |
499 | |
500 | [[ -z ${argv} ]] && die "No dest dir given" |
501 | for dest in ${argv} |
502 | do |
503 | [[ -d ${BINDIR}${dest} ]] && continue |
504 | install -v -d ${BINDIR}/${dest} || die |
505 | done |
506 | } |
507 | |
508 | |
509 | # install files to given path (defaults to /usr/bin) |
510 | # minstallfile {-s} /path/to/file {/path/to/dest} |
511 | minstallfile() |
512 | { |
513 | local file |
514 | local dest |
515 | |
516 | [[ -z $1 ]] && die "No etc file given" |
517 | |
518 | if [[ $1 = -s ]] |
519 | then |
520 | file="${SOURCEDIR}/${PNAME}/$2" |
521 | dest="$3" |
522 | if [[ -z $3 ]] |
523 | then |
524 | dest=/usr/bin |
525 | install -d ${BINDIR}/${dest} || die |
526 | fi |
527 | else |
528 | file="$1" |
529 | dest="$2" |
530 | if [[ -z $2 ]] |
531 | then |
532 | dest=/usr/bin |
533 | install -d ${BINDIR}/${dest} || die |
534 | fi |
535 | fi |
536 | |
537 | # install our configfile |
538 | install -v -m 0644 -o root -g root ${file} ${BINDIR}/${dest} || die |
539 | } |
540 | |
541 | # installs executables to given path |
542 | # minstallexec {-s} /path/to/exec {/path/to/dest} |
543 | minstallexec() |
544 | { |
545 | local file |
546 | local dest |
547 | |
548 | [[ -z $1 ]] && die "No file given" |
549 | |
550 | if [[ $1 = -s ]] |
551 | then |
552 | file="${SOURCEDIR}/${PNAME}/$2" |
553 | dest="$3" |
554 | if [[ -z $3 ]] |
555 | then |
556 | dest=/usr/bin |
557 | install -d ${BINDIR}/${dest} || die |
558 | fi |
559 | else |
560 | file="$1" |
561 | dest="$2" |
562 | if [[ -z $2 ]] |
563 | then |
564 | dest=/usr/bin |
565 | install -d ${BINDIR}/${dest} || die |
566 | fi |
567 | fi |
568 | |
569 | # install our configfile |
570 | install -v -m 0755 -o root -g root ${file} ${BINDIR}/${dest} || die |
571 | } |
572 | |
573 | # installs executables to given path |
574 | # minstalllib {-s} /path/to/exec {/path/to/dest} |
575 | minstalllib() |
576 | { |
577 | local file |
578 | local dest |
579 | |
580 | [[ -z $1 ]] && die "No file given" |
581 | |
582 | if [[ $1 = -s ]] |
583 | then |
584 | file="${SOURCEDIR}/${PNAME}/$2" |
585 | dest="$3" |
586 | if [[ -z $3 ]] |
587 | then |
588 | dest=/usr/$(mlibdir) |
589 | install -d ${BINDIR}/${dest} || die |
590 | fi |
591 | else |
592 | file="$1" |
593 | dest="$2" |
594 | if [[ -z $2 ]] |
595 | then |
596 | dest=/usr/$(mlibdir) |
597 | install -d ${BINDIR}/${dest} || die |
598 | fi |
599 | fi |
600 | |
601 | # install our library |
602 | install -v -m 0755 -o root -g root ${file} ${BINDIR}/${dest} || die |
603 | |
604 | # create libtool symlinks |
605 | # 1. - library.so.1.0.0 -> library.so.1.0 |
606 | if [ "${file%.*}" != *.so ] |
607 | then |
608 | ln -v -snf $(basename ${file}) ${BINDIR}/${dest}/$(basename ${file%.*}) |
609 | fi |
610 | # 2. - library.so.1.0.0 -> library.so.1 |
611 | if [ "${file%.*.*}" != *.so ] |
612 | then |
613 | ln -v -snf $(basename ${file}) ${BINDIR}/${dest}/$(basename ${file%.*.*}) |
614 | fi |
615 | } |
616 | |
617 | mcopy() |
618 | { |
619 | local source="$1" |
620 | local dest="$2" |
621 | local opts |
622 | |
623 | # recursive |
624 | if [[ $1 = -r ]] || [[ $1 = -R ]] |
625 | then |
626 | opts="--recursive" |
627 | source="$2" |
628 | dest="$3" |
629 | fi |
630 | |
631 | # recursive |
632 | if [[ $1 = -rf ]] || [[ $1 = -fr ]] || [[ $1 = -Rf ]] || [[ $1 = -fR ]] |
633 | then |
634 | opts="--recursive --force" |
635 | source="$2" |
636 | dest="$3" |
637 | fi |
638 | |
639 | [[ -z ${source} ]] && die "No source given." |
640 | [[ -z ${dest} ]] && die "No dest given." |
641 | |
642 | cp -v ${opts} ${source} ${BINDIR}/${dest} || die |
643 | } |
644 | |
645 | mmove() |
646 | { |
647 | local source="$1" |
648 | local dest="$2" |
649 | local opts |
650 | |
651 | # force |
652 | if [[ $1 = -f ]] |
653 | then |
654 | opts="--recursive" |
655 | source="$2" |
656 | dest="$3" |
657 | fi |
658 | |
659 | [[ -z ${source} ]] && die "No source given." |
660 | [[ -z ${dest} ]] && die "No dest given." |
661 | |
662 | mv -v ${opts} ${source} ${BINDIR}/${dest} || die |
663 | } |
664 | |
665 | # mark directories undeletable |
666 | mkeepdir() |
667 | { |
668 | local keepdir |
669 | [[ -z "$1" ]] && die "No directory given" |
670 | |
671 | keepdir="$1" |
672 | install -v -d ${BINDIR}/${keepdir} || die |
673 | touch ${BINDIR}/${keepdir}/.keep || die |
674 | } |
675 | |
676 | # creates empty files |
677 | memptyfile() |
678 | { |
679 | local file |
680 | local path |
681 | |
682 | [[ -z "$1" ]] && die "No file given" |
683 | |
684 | file="$1" |
685 | path="$(dirname ${file})" |
686 | |
687 | install -d ${BINDIR}/${path} || die |
688 | touch ${BINDIR}/${file} || die |
689 | } |
690 | |
691 | mchown() |
692 | { |
693 | local owner="$1" |
694 | local path="$2" |
695 | local recursive |
696 | |
697 | # recursive |
698 | if [[ $1 = -r ]] || [[ $1 = -R ]] |
699 | then |
700 | local recursive="--recursive" |
701 | local owner="$2" |
702 | local path="$3" |
703 | fi |
704 | |
705 | [[ -z ${owner} ]] && die "No owner given." |
706 | [[ -z ${path} ]] && die "No path given." |
707 | |
708 | chown -v ${recursive} ${owner} ${BINDIR}/${path} || die |
709 | } |
710 | |
711 | mchmod() |
712 | { |
713 | local posix="$1" |
714 | local path="$2" |
715 | local recursive |
716 | |
717 | # recursive |
718 | if [[ $1 = -r ]] || [[ $1 = -R ]] |
719 | then |
720 | local recursive="--recursive" |
721 | local posix="$2" |
722 | local path="$3" |
723 | fi |
724 | |
725 | [[ -z ${posix} ]] && die "No posix given." |
726 | [[ -z ${path} ]] && die "No path given." |
727 | |
728 | chmod -v ${recursive} ${posix} ${BINDIR}/${path} || die |
729 | } |
730 | |
731 | mlink() |
732 | { |
733 | local symlink="$1" |
734 | local pathto="$2" |
735 | |
736 | [[ -z ${symlink} ]] && die "No symlink given." |
737 | [[ -z ${pathto} ]] && die "No path given." |
738 | |
739 | ln -v -snf ${symlink} ${BINDIR}/${pathto} || die |
740 | } |