Contents of /trunk/include/mtools.sminc
Parent Directory | Revision Log
Revision 2166 -
(show annotations)
(download)
Thu Jul 9 19:08:40 2009 UTC (15 years, 2 months ago) by niro
Original Path: trunk/core/include/mtools.sminc
File size: 12130 byte(s)
Thu Jul 9 19:08:40 2009 UTC (15 years, 2 months ago) by niro
Original Path: trunk/core/include/mtools.sminc
File size: 12130 byte(s)
-added todo
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 | # install man files to appropiate dirs |
199 | # minstallman /path/to/manfile.foo |
200 | minstallman() |
201 | { |
202 | local manfile |
203 | local mandir |
204 | local file |
205 | |
206 | [[ -z "$@" ]] && die "No man file given" |
207 | |
208 | for file in $@ |
209 | do |
210 | manfile="$(basename ${file})" |
211 | mandir="man${manfile##*.}" |
212 | |
213 | install -d ${BINDIR}/usr/share/man/${mandir} || die |
214 | install -v -m0644 ${file} ${BINDIR}/usr/share/man/${mandir}/${manfile} || die |
215 | done |
216 | } |
217 | |
218 | # install info files to appropiate dirs |
219 | # minstallinfo /path/to/infofile.foo |
220 | minstallinfo() |
221 | { |
222 | local file |
223 | |
224 | [[ -z "$@" ]] && die "No info file given" |
225 | |
226 | for file in $@ |
227 | do |
228 | install -d ${BINDIR}/usr/share/info || die |
229 | install -v -m0644 ${file} ${BINDIR}/usr/share/info/$(basename ${file}) || die |
230 | done |
231 | } |
232 | |
233 | # install html files to appropiate dirs |
234 | # minstallhtml /path/to/infofile.foo |
235 | minstallhtml() |
236 | { |
237 | local file |
238 | local subfile |
239 | local prefix |
240 | local subprefix |
241 | |
242 | # handle prefix |
243 | case "$1" in |
244 | --prefix|-p) shift; prefix="$1"; shift ;; |
245 | esac |
246 | |
247 | [[ -z "$@" ]] && die "No html file given" |
248 | |
249 | for file in $@ |
250 | do |
251 | install -d ${BINDIR}/usr/share/doc/${PNAME}-${PVER}/html${prefix} || die |
252 | |
253 | if [[ -d ${file} ]] |
254 | then |
255 | for subfile in ${file}/* |
256 | do |
257 | subprefix="$(dirname ${subfile/$(dirname ${file})/})" |
258 | subprefix="${prefix}${subprefix}/" |
259 | |
260 | minstallhtml --prefix ${subprefix} ${subfile} || die |
261 | done |
262 | else |
263 | install -v -m0644 ${file} ${BINDIR}/usr/share/doc/${PNAME}-${PVER}/html/${prefix}$(basename ${file}) || die |
264 | fi |
265 | done |
266 | } |
267 | |
268 | # install pixmaps to appropiate dirs |
269 | # minstallpixmap srcname destname {/path/to} |
270 | minstallpixmap() |
271 | { |
272 | local file |
273 | local destdir |
274 | local destfile |
275 | |
276 | [[ -z "$1" ]] && die "No pixmap given" |
277 | |
278 | # if no fullpath given use file from sourcedir |
279 | if [[ -z $(dirname $1) ]] || [[ $(dirname $1) = . ]] |
280 | then |
281 | file="${SOURCEDIR}/${PNAME}/$1" |
282 | else |
283 | file="$1" |
284 | fi |
285 | |
286 | if [[ -n "$2" ]] |
287 | then |
288 | destfile="$2" |
289 | else |
290 | destfile="$(basename ${file})" |
291 | fi |
292 | |
293 | if [[ -n "$3" ]] |
294 | then |
295 | destdir="$3" |
296 | else |
297 | destdir="/usr/share/pixmaps" |
298 | fi |
299 | |
300 | # needed directory |
301 | install -d ${BINDIR}/${destdir} || die |
302 | |
303 | # install our pixmap |
304 | install -v -m 0644 -o root -g root ${file} ${BINDIR}/${destdir}/${destfile} || die |
305 | } |
306 | |
307 | # installs pam configuration files |
308 | # minstallpam /path/to/pamfile {destfilename} |
309 | minstallpam() |
310 | { |
311 | local pamfile |
312 | local file |
313 | |
314 | [[ -z "$1" ]] && die "No pam file given" |
315 | |
316 | # if no fullpath given use file from sourcedir |
317 | if [[ -z $(dirname $1) ]] || [[ $(dirname $1) = . ]] |
318 | then |
319 | file="${SOURCEDIR}/${PNAME}/$1" |
320 | else |
321 | file="$1" |
322 | fi |
323 | |
324 | if [[ -n "$2" ]] |
325 | then |
326 | pamfile="$2" |
327 | else |
328 | pamfile="$(basename ${file})" |
329 | fi |
330 | |
331 | # needed directory |
332 | install -d ${BINDIR}/etc/pam.d || die |
333 | |
334 | # install our configfile |
335 | install -v -m 0644 -o root -g root ${file} ${BINDIR}/etc/pam.d/${pamfile} || die |
336 | } |
337 | |
338 | # installs cronjobs |
339 | # minstallcron [hourly|daily|weekly|monthly] /path/to/cronfile {destfilename} |
340 | minstallcron() |
341 | { |
342 | local cronfile |
343 | local loop |
344 | local file |
345 | |
346 | [[ -z "$1" ]] && die "No loop rythem given [hourly|daily|weekly|monthly]" |
347 | [[ -z "$2" ]] && die "No cronfile given" |
348 | |
349 | loop="$1" |
350 | |
351 | # if no fullpath given use file from sourcedir |
352 | if [[ -z $(dirname $2) ]] || [[ $(dirname $2) = . ]] |
353 | then |
354 | file="${SOURCEDIR}/${PNAME}/$2" |
355 | else |
356 | file="$2" |
357 | fi |
358 | |
359 | if [[ -n "$3" ]] |
360 | then |
361 | cronfile="$3" |
362 | else |
363 | cronfile="$(basename ${file})" |
364 | fi |
365 | |
366 | # needed directory |
367 | install -m0750 -d ${BINDIR}/etc/cron.${loop} || die |
368 | |
369 | # install our cronfile |
370 | install -v -m 0750 -o root -g root ${file} ${BINDIR}/etc/cron.${loop}/${cronfile} || die |
371 | } |
372 | |
373 | |
374 | # installs logrotate configuration files |
375 | # minstallpam /path/to/logrotatefile {destfilename} |
376 | minstalllog() |
377 | { |
378 | local logfile |
379 | local file |
380 | |
381 | [[ -z "$1" ]] && die "No logrotate file given" |
382 | |
383 | # if no fullpath given use file from sourcedir |
384 | if [[ -z $(dirname $1) ]] || [[ $(dirname $1) = . ]] |
385 | then |
386 | file="${SOURCEDIR}/${PNAME}/$1" |
387 | else |
388 | file="$1" |
389 | fi |
390 | |
391 | if [[ -n "$2" ]] |
392 | then |
393 | logfile="$2" |
394 | else |
395 | logfile="$(basename ${file})" |
396 | fi |
397 | |
398 | # needed directory |
399 | install -d ${BINDIR}/etc/logrotate.d || die |
400 | |
401 | # install our configfile |
402 | install -v -m 0644 -o root -g root ${file} ${BINDIR}/etc/logrotate.d/${logfile} || die |
403 | } |
404 | |
405 | |
406 | # installs given directories |
407 | # minstalldir /path/to/dest/dir {/path/to/dest/dirN} |
408 | minstalldir() |
409 | { |
410 | local argv="$@" |
411 | local dest |
412 | |
413 | [[ -z ${argv} ]] && die "No dest dir given" |
414 | for dest in ${argv} |
415 | do |
416 | [[ -d ${BINDIR}${dest} ]] && continue |
417 | install -v -d ${BINDIR}/${dest} || die |
418 | done |
419 | } |
420 | |
421 | |
422 | # install files to given path (defaults to /usr/bin) |
423 | # minstallfile {-s} /path/to/file {/path/to/dest} |
424 | minstallfile() |
425 | { |
426 | local file |
427 | local dest |
428 | |
429 | [[ -z $1 ]] && die "No etc file given" |
430 | |
431 | if [[ $1 = -s ]] |
432 | then |
433 | file="${SOURCEDIR}/${PNAME}/$2" |
434 | dest="$3" |
435 | if [[ -z $3 ]] |
436 | then |
437 | dest=/usr/bin |
438 | install -d ${BINDIR}/${dest} || die |
439 | fi |
440 | else |
441 | file="$1" |
442 | dest="$2" |
443 | if [[ -z $2 ]] |
444 | then |
445 | dest=/usr/bin |
446 | install -d ${BINDIR}/${dest} || die |
447 | fi |
448 | fi |
449 | |
450 | # install our configfile |
451 | install -v -m 0644 -o root -g root ${file} ${BINDIR}/${dest} || die |
452 | } |
453 | |
454 | # installs executables to given path |
455 | # minstallexec {-s} /path/to/exec {/path/to/dest} |
456 | minstallexec() |
457 | { |
458 | local file |
459 | local dest |
460 | |
461 | [[ -z $1 ]] && die "No file given" |
462 | |
463 | if [[ $1 = -s ]] |
464 | then |
465 | file="${SOURCEDIR}/${PNAME}/$2" |
466 | dest="$3" |
467 | if [[ -z $3 ]] |
468 | then |
469 | dest=/usr/bin |
470 | install -d ${BINDIR}/${dest} || die |
471 | fi |
472 | else |
473 | file="$1" |
474 | dest="$2" |
475 | if [[ -z $2 ]] |
476 | then |
477 | dest=/usr/bin |
478 | install -d ${BINDIR}/${dest} || die |
479 | fi |
480 | fi |
481 | |
482 | # install our configfile |
483 | install -v -m 0755 -o root -g root ${file} ${BINDIR}/${dest} || die |
484 | } |
485 | |
486 | # installs executables to given path |
487 | # minstalllib {-s} /path/to/exec {/path/to/dest} |
488 | minstalllib() |
489 | { |
490 | local file |
491 | local dest |
492 | |
493 | [[ -z $1 ]] && die "No file given" |
494 | |
495 | if [[ $1 = -s ]] |
496 | then |
497 | file="${SOURCEDIR}/${PNAME}/$2" |
498 | dest="$3" |
499 | if [[ -z $3 ]] |
500 | then |
501 | dest=/usr/$(mlibdir) |
502 | install -d ${BINDIR}/${dest} || die |
503 | fi |
504 | else |
505 | file="$1" |
506 | dest="$2" |
507 | if [[ -z $2 ]] |
508 | then |
509 | dest=/usr/$(mlibdir) |
510 | install -d ${BINDIR}/${dest} || die |
511 | fi |
512 | fi |
513 | |
514 | # install our library |
515 | install -v -m 0755 -o root -g root ${file} ${BINDIR}/${dest} || die |
516 | |
517 | # create libtool symlinks |
518 | # 1. - library.so.1.0.0 -> library.so.1.0 |
519 | if [ "${file%.*}" != *.so ] |
520 | then |
521 | ln -v -snf $(basename ${file}) ${BINDIR}/${dest}/$(basename ${file%.*}) |
522 | fi |
523 | # 2. - library.so.1.0.0 -> library.so.1 |
524 | if [ "${file%.*.*}" != *.so ] |
525 | then |
526 | ln -v -snf $(basename ${file}) ${BINDIR}/${dest}/$(basename ${file%.*.*}) |
527 | fi |
528 | } |
529 | |
530 | mcopy() |
531 | { |
532 | local source="$1" |
533 | local dest="$2" |
534 | local opts |
535 | |
536 | # recursive |
537 | if [[ $1 = -r ]] || [[ $1 = -R ]] |
538 | then |
539 | opts="--recursive" |
540 | source="$2" |
541 | dest="$3" |
542 | fi |
543 | |
544 | # recursive |
545 | if [[ $1 = -rf ]] || [[ $1 = -fr ]] || [[ $1 = -Rf ]] || [[ $1 = -fR ]] |
546 | then |
547 | opts="--recursive --force" |
548 | source="$2" |
549 | dest="$3" |
550 | fi |
551 | |
552 | [[ -z ${source} ]] && die "No source given." |
553 | [[ -z ${dest} ]] && die "No dest given." |
554 | |
555 | cp -v ${opts} ${source} ${BINDIR}/${dest} || die |
556 | } |
557 | |
558 | mmove() |
559 | { |
560 | local source="$1" |
561 | local dest="$2" |
562 | local opts |
563 | |
564 | # force |
565 | if [[ $1 = -f ]] |
566 | then |
567 | opts="--recursive" |
568 | source="$2" |
569 | dest="$3" |
570 | fi |
571 | |
572 | [[ -z ${source} ]] && die "No source given." |
573 | [[ -z ${dest} ]] && die "No dest given." |
574 | |
575 | mv -v ${opts} ${source} ${BINDIR}/${dest} || die |
576 | } |
577 | |
578 | # mark directories undeletable |
579 | mkeepdir() |
580 | { |
581 | local keepdir |
582 | [[ -z "$1" ]] && die "No directory given" |
583 | |
584 | keepdir="$1" |
585 | install -v -d ${BINDIR}/${keepdir} || die |
586 | touch ${BINDIR}/${keepdir}/.keep || die |
587 | } |
588 | |
589 | # creates empty files |
590 | memptyfile() |
591 | { |
592 | local file |
593 | local path |
594 | |
595 | [[ -z "$1" ]] && die "No file given" |
596 | |
597 | file="$1" |
598 | path="$(dirname ${file})" |
599 | |
600 | install -d ${BINDIR}/${path} || die |
601 | touch ${BINDIR}/${file} || die |
602 | } |
603 | |
604 | mchown() |
605 | { |
606 | local owner="$1" |
607 | local path="$2" |
608 | local recursive |
609 | |
610 | # recursive |
611 | if [[ $1 = -r ]] || [[ $1 = -R ]] |
612 | then |
613 | local recursive="--recursive" |
614 | local owner="$2" |
615 | local path="$3" |
616 | fi |
617 | |
618 | [[ -z ${owner} ]] && die "No owner given." |
619 | [[ -z ${path} ]] && die "No path given." |
620 | |
621 | chown -v ${recursive} ${owner} ${BINDIR}/${path} || die |
622 | } |
623 | |
624 | mchmod() |
625 | { |
626 | local posix="$1" |
627 | local path="$2" |
628 | local recursive |
629 | |
630 | # recursive |
631 | if [[ $1 = -r ]] || [[ $1 = -R ]] |
632 | then |
633 | local recursive="--recursive" |
634 | local posix="$2" |
635 | local path="$3" |
636 | fi |
637 | |
638 | [[ -z ${posix} ]] && die "No posix given." |
639 | [[ -z ${path} ]] && die "No path given." |
640 | |
641 | chmod -v ${recursive} ${posix} ${BINDIR}/${path} || die |
642 | } |
643 | |
644 | mlink() |
645 | { |
646 | local symlink="$1" |
647 | local pathto="$2" |
648 | |
649 | [[ -z ${symlink} ]] && die "No symlink given." |
650 | [[ -z ${pathto} ]] && die "No path given." |
651 | |
652 | ln -v -snf ${symlink} ${BINDIR}/${pathto} || die |
653 | } |