Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


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