Magellan Linux

Contents of /branches/R11-unstable/include/mtools.sminc

Parent Directory Parent Directory | Revision Log Revision Log


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