Contents of /branches/R11-unstable/include/mtools.sminc
Parent Directory | Revision Log
Revision 14481 -
(show annotations)
(download)
Fri Dec 21 13:35:02 2012 UTC (11 years, 9 months ago) by niro
Original Path: trunk/include/mtools.sminc
File size: 17313 byte(s)
Fri Dec 21 13:35:02 2012 UTC (11 years, 9 months ago) by niro
Original Path: trunk/include/mtools.sminc
File size: 17313 byte(s)
-medelete respect symlinks, which dest does not exist
1 | # $Id$ |
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 | local udevrulesddir="/usr/lib/udev/rules.d" |
154 | |
155 | [[ -z "$1" ]] && die "No udev rule given" |
156 | |
157 | # if no fullpath given use file from sourcedir |
158 | if [[ -z $(dirname $1) ]] || [[ $(dirname $1) = . ]] |
159 | then |
160 | file="${SOURCEDIR}/$(mpname)/$1" |
161 | else |
162 | file="$1" |
163 | fi |
164 | |
165 | if [[ -n "$2" ]] |
166 | then |
167 | udevrule="$2" |
168 | else |
169 | udevrule="$(basename ${file})" |
170 | fi |
171 | |
172 | # needed directory |
173 | install -d ${BINDIR}${udevrulesddir} || die |
174 | |
175 | # install our udev rule |
176 | install -v -m 0644 -o root -g root ${file} ${BINDIR}${udevrulesddir}/${udevrule} || die |
177 | } |
178 | |
179 | minstalludevhelper() |
180 | { |
181 | local udevhelper |
182 | local file |
183 | local udevdir="/usr/lib/udev" |
184 | |
185 | [[ -z "$1" ]] && die "No udev helper given" |
186 | |
187 | # if no fullpath given use file from sourcedir |
188 | if [[ -z $(dirname $1) ]] || [[ $(dirname $1) = . ]] |
189 | then |
190 | file="${SOURCEDIR}/$(mpname)/$1" |
191 | else |
192 | file="$1" |
193 | fi |
194 | |
195 | if [[ -n "$2" ]] |
196 | then |
197 | udevhelper="$2" |
198 | else |
199 | udevhelper="$(basename ${file})" |
200 | fi |
201 | |
202 | # needed directory |
203 | install -d ${BINDIR}${udevdir} || die |
204 | |
205 | # install our udev-helper |
206 | install -v -m 0755 -o root -g root ${file} ${BINDIR}${udevdir}/${udevhelper} || die |
207 | } |
208 | |
209 | minstallhalinformation() |
210 | { |
211 | local halrule |
212 | local file |
213 | |
214 | [[ -z "$1" ]] && die "No hal rule given" |
215 | |
216 | # if no fullpath given use file from sourcedir |
217 | if [[ -z $(dirname $1) ]] || [[ $(dirname $1) = . ]] |
218 | then |
219 | file="${SOURCEDIR}/$(mpname)/$1" |
220 | else |
221 | file="$1" |
222 | fi |
223 | |
224 | if [[ -n "$2" ]] |
225 | then |
226 | halrule="$2" |
227 | else |
228 | halrule="$(basename ${file})" |
229 | fi |
230 | |
231 | # needed directory |
232 | install -d ${BINDIR}/usr/share/hal/fdi/information/20thirdparty || die |
233 | |
234 | # install our udev rule |
235 | install -v -m 0644 -o root -g root ${file} ${BINDIR}/usr/share/hal/fdi/information/20thirdparty/${halrule} || die |
236 | } |
237 | |
238 | minstallhalpolicy() |
239 | { |
240 | local halrule |
241 | local file |
242 | |
243 | [[ -z "$1" ]] && die "No hal rule given" |
244 | |
245 | # if no fullpath given use file from sourcedir |
246 | if [[ -z $(dirname $1) ]] || [[ $(dirname $1) = . ]] |
247 | then |
248 | file="${SOURCEDIR}/$(mpname)/$1" |
249 | else |
250 | file="$1" |
251 | fi |
252 | |
253 | if [[ -n "$2" ]] |
254 | then |
255 | halrule="$2" |
256 | else |
257 | halrule="$(basename ${file})" |
258 | fi |
259 | |
260 | # needed directory |
261 | install -d ${BINDIR}/usr/share/hal/fdi/policy/20thirdparty || die |
262 | |
263 | # install our udev rule |
264 | install -v -m 0644 -o root -g root ${file} ${BINDIR}/usr/share/hal/fdi/policy/20thirdparty/${halrule} || die |
265 | } |
266 | |
267 | minstallhalpreprobe() |
268 | { |
269 | local halrule |
270 | local file |
271 | |
272 | [[ -z "$1" ]] && die "No hal rule given" |
273 | |
274 | # if no fullpath given use file from sourcedir |
275 | if [[ -z $(dirname $1) ]] || [[ $(dirname $1) = . ]] |
276 | then |
277 | file="${SOURCEDIR}/$(mpname)/$1" |
278 | else |
279 | file="$1" |
280 | fi |
281 | |
282 | if [[ -n "$2" ]] |
283 | then |
284 | halrule="$2" |
285 | else |
286 | halrule="$(basename ${file})" |
287 | fi |
288 | |
289 | # needed directory |
290 | install -d ${BINDIR}/usr/share/hal/fdi/preprobe/10osvendor || die |
291 | |
292 | # install our udev rule |
293 | install -v -m 0644 -o root -g root ${file} ${BINDIR}/usr/share/hal/fdi/preprobe/10osvendor/${halrule} || die |
294 | } |
295 | |
296 | # install man files to appropiate dirs |
297 | # minstallman /path/to/manfile.foo |
298 | minstallman() |
299 | { |
300 | local manfile |
301 | local mandir |
302 | local file |
303 | |
304 | [[ -z "$@" ]] && die "No man file given" |
305 | |
306 | for file in $@ |
307 | do |
308 | manfile="$(basename ${file})" |
309 | mandir="man${manfile##*.}" |
310 | |
311 | install -d ${BINDIR}/usr/share/man/${mandir} || die |
312 | install -v -m0644 ${file} ${BINDIR}/usr/share/man/${mandir}/${manfile} || die |
313 | done |
314 | } |
315 | |
316 | # install info files to appropiate dirs |
317 | # minstallinfo /path/to/infofile.foo |
318 | minstallinfo() |
319 | { |
320 | local file |
321 | |
322 | [[ -z "$@" ]] && die "No info file given" |
323 | |
324 | for file in $@ |
325 | do |
326 | install -d ${BINDIR}/usr/share/info || die |
327 | install -v -m0644 ${file} ${BINDIR}/usr/share/info/$(basename ${file}) || die |
328 | done |
329 | } |
330 | |
331 | # install html files to appropiate dirs |
332 | # minstallhtml /path/to/infofile.foo |
333 | minstallhtml() |
334 | { |
335 | local file |
336 | local subfile |
337 | local prefix |
338 | local subprefix |
339 | |
340 | # handle prefix |
341 | case "$1" in |
342 | --prefix|-p) shift; prefix="$1"; shift ;; |
343 | esac |
344 | |
345 | [[ -z "$@" ]] && die "No html file given" |
346 | |
347 | for file in $@ |
348 | do |
349 | install -d ${BINDIR}/usr/share/doc/${PNAME}-${PVER}/html${prefix} || die |
350 | |
351 | if [[ -d ${file} ]] |
352 | then |
353 | for subfile in ${file}/* |
354 | do |
355 | subprefix="$(dirname ${subfile/$(dirname ${file})/})" |
356 | subprefix="${prefix}${subprefix}/" |
357 | |
358 | minstallhtml --prefix ${subprefix} ${subfile} || die |
359 | done |
360 | else |
361 | install -v -m0644 ${file} ${BINDIR}/usr/share/doc/${PNAME}-${PVER}/html/${prefix}$(basename ${file}) || die |
362 | fi |
363 | done |
364 | } |
365 | |
366 | # install pixmaps to appropiate dirs |
367 | # minstallpixmap srcname destname {/path/to} |
368 | minstallpixmap() |
369 | { |
370 | local file |
371 | local destdir |
372 | local destfile |
373 | |
374 | [[ -z "$1" ]] && die "No pixmap given" |
375 | |
376 | # if no fullpath given use file from sourcedir |
377 | if [[ -z $(dirname $1) ]] || [[ $(dirname $1) = . ]] |
378 | then |
379 | file="${SOURCEDIR}/$(mpname)/$1" |
380 | else |
381 | file="$1" |
382 | fi |
383 | |
384 | if [[ -n "$2" ]] |
385 | then |
386 | destfile="$2" |
387 | else |
388 | destfile="$(basename ${file})" |
389 | fi |
390 | |
391 | if [[ -n "$3" ]] |
392 | then |
393 | destdir="$3" |
394 | else |
395 | destdir="/usr/share/pixmaps" |
396 | fi |
397 | |
398 | # needed directory |
399 | install -d ${BINDIR}/${destdir} || die |
400 | |
401 | # install our pixmap |
402 | install -v -m 0644 -o root -g root ${file} ${BINDIR}/${destdir}/${destfile} || die |
403 | } |
404 | |
405 | # installs pam configuration files |
406 | # minstallpam /path/to/pamfile {destfilename} |
407 | minstallpam() |
408 | { |
409 | local pamfile |
410 | local file |
411 | |
412 | [[ -z "$1" ]] && die "No pam file given" |
413 | |
414 | # if no fullpath given use file from sourcedir |
415 | if [[ -z $(dirname $1) ]] || [[ $(dirname $1) = . ]] |
416 | then |
417 | file="${SOURCEDIR}/$(mpname)/$1" |
418 | else |
419 | file="$1" |
420 | fi |
421 | |
422 | if [[ -n "$2" ]] |
423 | then |
424 | pamfile="$2" |
425 | else |
426 | pamfile="$(basename ${file})" |
427 | fi |
428 | |
429 | # needed directory |
430 | install -d ${BINDIR}/etc/pam.d || die |
431 | |
432 | # install our configfile |
433 | install -v -m 0644 -o root -g root ${file} ${BINDIR}/etc/pam.d/${pamfile} || die |
434 | } |
435 | |
436 | # installs cronjobs |
437 | # minstallcron [hourly|daily|weekly|monthly] /path/to/cronfile {destfilename} |
438 | minstallcron() |
439 | { |
440 | local cronfile |
441 | local loop |
442 | local file |
443 | |
444 | [[ -z "$1" ]] && die "No loop rythem given [hourly|daily|weekly|monthly]" |
445 | [[ -z "$2" ]] && die "No cronfile given" |
446 | |
447 | loop="$1" |
448 | |
449 | # if no fullpath given use file from sourcedir |
450 | if [[ -z $(dirname $2) ]] || [[ $(dirname $2) = . ]] |
451 | then |
452 | file="${SOURCEDIR}/$(mpname)/$2" |
453 | else |
454 | file="$2" |
455 | fi |
456 | |
457 | if [[ -n "$3" ]] |
458 | then |
459 | cronfile="$3" |
460 | else |
461 | cronfile="$(basename ${file})" |
462 | fi |
463 | |
464 | # needed directory |
465 | install -m0750 -d ${BINDIR}/etc/cron.${loop} || die |
466 | |
467 | # install our cronfile |
468 | install -v -m 0750 -o root -g root ${file} ${BINDIR}/etc/cron.${loop}/${cronfile} || die |
469 | } |
470 | |
471 | |
472 | # installs logrotate configuration files |
473 | # minstalllog /path/to/logrotatefile {destfilename} |
474 | minstalllog() |
475 | { |
476 | local logfile |
477 | local file |
478 | |
479 | [[ -z "$1" ]] && die "No logrotate file given" |
480 | |
481 | # if no fullpath given use file from sourcedir |
482 | if [[ -z $(dirname $1) ]] || [[ $(dirname $1) = . ]] |
483 | then |
484 | file="${SOURCEDIR}/$(mpname)/$1" |
485 | else |
486 | file="$1" |
487 | fi |
488 | |
489 | if [[ -n "$2" ]] |
490 | then |
491 | logfile="$2" |
492 | else |
493 | logfile="$(basename ${file})" |
494 | fi |
495 | |
496 | # needed directory |
497 | install -d ${BINDIR}/etc/logrotate.d || die |
498 | |
499 | # install our configfile |
500 | install -v -m 0644 -o root -g root ${file} ${BINDIR}/etc/logrotate.d/${logfile} || die |
501 | } |
502 | |
503 | |
504 | # installs given directories |
505 | # minstalldir /path/to/dest/dir {/path/to/dest/dirN} |
506 | minstalldir() |
507 | { |
508 | local argv="$@" |
509 | local dest |
510 | |
511 | [[ -z ${argv} ]] && die "No dest dir given" |
512 | for dest in ${argv} |
513 | do |
514 | [[ -d ${BINDIR}${dest} ]] && continue |
515 | install -v -d ${BINDIR}/${dest} || die |
516 | done |
517 | } |
518 | |
519 | |
520 | # install files to given path (defaults to /usr/bin) |
521 | # minstallfile {-s} /path/to/file {/path/to/dest} |
522 | minstallfile() |
523 | { |
524 | local file |
525 | local dest |
526 | |
527 | [[ -z $1 ]] && die "No etc file given" |
528 | |
529 | if [[ $1 = -s ]] |
530 | then |
531 | file="${SOURCEDIR}/$(mpname)/$2" |
532 | dest="$3" |
533 | if [[ -z $3 ]] |
534 | then |
535 | dest=/usr/bin |
536 | install -d ${BINDIR}/${dest} || die |
537 | fi |
538 | else |
539 | file="$1" |
540 | dest="$2" |
541 | if [[ -z $2 ]] |
542 | then |
543 | dest=/usr/bin |
544 | install -d ${BINDIR}/${dest} || die |
545 | fi |
546 | fi |
547 | |
548 | # install our configfile |
549 | install -v -m 0644 -o root -g root ${file} ${BINDIR}/${dest} || die |
550 | } |
551 | |
552 | # installs executables to given path |
553 | # minstallexec {-s} /path/to/exec {/path/to/dest} |
554 | minstallexec() |
555 | { |
556 | local file |
557 | local dest |
558 | |
559 | [[ -z $1 ]] && die "No file given" |
560 | |
561 | if [[ $1 = -s ]] |
562 | then |
563 | file="${SOURCEDIR}/$(mpname)/$2" |
564 | dest="$3" |
565 | if [[ -z $3 ]] |
566 | then |
567 | dest=/usr/bin |
568 | install -d ${BINDIR}/${dest} || die |
569 | fi |
570 | else |
571 | file="$1" |
572 | dest="$2" |
573 | if [[ -z $2 ]] |
574 | then |
575 | dest=/usr/bin |
576 | install -d ${BINDIR}/${dest} || die |
577 | fi |
578 | fi |
579 | |
580 | # install our configfile |
581 | install -v -m 0755 -o root -g root ${file} ${BINDIR}/${dest} || die |
582 | } |
583 | |
584 | # installs executables to given path |
585 | # minstalllib {-s} /path/to/exec {/path/to/dest} |
586 | minstalllib() |
587 | { |
588 | local file |
589 | local dest |
590 | local verbose="-v" |
591 | |
592 | # check for busybox as it doesn't support 'ln -v' |
593 | [[ $(readlink $(which ln)) = */busybox ]] && verbose="" |
594 | |
595 | [[ -z $1 ]] && die "No file given" |
596 | |
597 | if [[ $1 = -s ]] |
598 | then |
599 | file="${SOURCEDIR}/$(mpname)/$2" |
600 | dest="$3" |
601 | if [[ -z $3 ]] |
602 | then |
603 | dest=/usr/$(mlibdir) |
604 | install -d ${BINDIR}/${dest} || die |
605 | fi |
606 | else |
607 | file="$1" |
608 | dest="$2" |
609 | if [[ -z $2 ]] |
610 | then |
611 | dest=/usr/$(mlibdir) |
612 | install -d ${BINDIR}/${dest} || die |
613 | fi |
614 | fi |
615 | |
616 | # install our library |
617 | install -v -m 0755 -o root -g root ${file} ${BINDIR}/${dest} || die |
618 | |
619 | # prefer scanelf |
620 | if [[ -x $(type -P scanelf) ]] |
621 | then |
622 | local soname="$(scanelf -qBF '%S#p' ${file})" |
623 | ln ${verbose} -snf $(basename ${file}) ${BINDIR}/${dest}/${soname} || die |
624 | else |
625 | echo -e "${COLYELLOW}minstalllib(): Warning: scanelf not found, using fallback symlink method${COLDEFAULT}" |
626 | |
627 | # create libtool symlinks |
628 | # 1. - library.so.1.0.0 -> library.so.1.0 |
629 | if [ "${file%.*}" != *.so ] |
630 | then |
631 | ln ${verbose} -snf $(basename ${file}) ${BINDIR}/${dest}/$(basename ${file%.*}) || die |
632 | fi |
633 | # 2. - library.so.1.0.0 -> library.so.1 |
634 | if [ "${file%.*.*}" != *.so ] |
635 | then |
636 | ln ${verbose} -snf $(basename ${file}) ${BINDIR}/${dest}/$(basename ${file%.*.*}) || die |
637 | fi |
638 | # 3. - library.so.1.0.0.0 -> library.so.1 |
639 | if [ "${file%.*.*.*}" != *.so ] |
640 | then |
641 | ln ${verbose} -snf $(basename ${file}) ${BINDIR}/${dest}/$(basename ${file%.*.*.*}) || die |
642 | fi |
643 | fi |
644 | } |
645 | |
646 | mcopy() |
647 | { |
648 | local source="$1" |
649 | local dest="$2" |
650 | local opts |
651 | |
652 | # recursive |
653 | if [[ $1 = -r ]] || [[ $1 = -R ]] |
654 | then |
655 | opts="-R" |
656 | source="$2" |
657 | dest="$3" |
658 | fi |
659 | |
660 | # recursive |
661 | if [[ $1 = -rf ]] || [[ $1 = -fr ]] || [[ $1 = -Rf ]] || [[ $1 = -fR ]] |
662 | then |
663 | opts="-R -f" |
664 | source="$2" |
665 | dest="$3" |
666 | fi |
667 | |
668 | if [[ $1 = -a ]] |
669 | then |
670 | opts="-a" |
671 | source="$2" |
672 | dest="$3" |
673 | fi |
674 | |
675 | [[ -z ${source} ]] && die "No source given." |
676 | [[ -z ${dest} ]] && die "No dest given." |
677 | |
678 | cp -v ${opts} ${source} ${BINDIR}/${dest} || die |
679 | } |
680 | |
681 | mdelete() |
682 | { |
683 | local dest="$1" |
684 | local opts |
685 | |
686 | # recursive |
687 | if [[ $1 = -r ]] || [[ $1 = -R ]] |
688 | then |
689 | opts="-r" |
690 | dest="$2" |
691 | fi |
692 | |
693 | # recursive |
694 | if [[ $1 = -rf ]] || [[ $1 = -fr ]] || [[ $1 = -Rf ]] || [[ $1 = -fR ]] |
695 | then |
696 | opts="-r -f" |
697 | dest="$2" |
698 | fi |
699 | |
700 | [[ -z ${dest} ]] && die "No dest given." |
701 | if [[ ! -e ${BINDIR}/${dest} ]] || [[ ! -L ${BINDIR}/${dest} ]] |
702 | die "${BINDIR}/${dest} does not exist." |
703 | if |
704 | |
705 | rm -v ${opts} ${BINDIR}/${dest} || die |
706 | } |
707 | |
708 | mmove() |
709 | { |
710 | local source="$1" |
711 | local dest="$2" |
712 | local opts |
713 | |
714 | # force |
715 | if [[ $1 = -f ]] |
716 | then |
717 | opts="-f" |
718 | source="$2" |
719 | dest="$3" |
720 | fi |
721 | |
722 | [[ -z ${source} ]] && die "No source given." |
723 | [[ -z ${dest} ]] && die "No dest given." |
724 | |
725 | mv -v ${opts} ${source} ${BINDIR}/${dest} || die |
726 | } |
727 | |
728 | # mark directories undeletable |
729 | mkeepdir() |
730 | { |
731 | local keepdir |
732 | [[ -z "$1" ]] && die "No directory given" |
733 | |
734 | keepdir="$1" |
735 | install -v -d ${BINDIR}/${keepdir} || die |
736 | touch ${BINDIR}/${keepdir}/.keep || die |
737 | } |
738 | |
739 | # creates empty files |
740 | memptyfile() |
741 | { |
742 | local file |
743 | local path |
744 | |
745 | [[ -z "$1" ]] && die "No file given" |
746 | |
747 | file="$1" |
748 | path="$(dirname ${file})" |
749 | |
750 | install -d ${BINDIR}/${path} || die |
751 | touch ${BINDIR}/${file} || die |
752 | } |
753 | |
754 | mchown() |
755 | { |
756 | local owner="$1" |
757 | local path="$2" |
758 | local recursive |
759 | |
760 | # recursive |
761 | if [[ $1 = -r ]] || [[ $1 = -R ]] |
762 | then |
763 | local recursive="-R" |
764 | local owner="$2" |
765 | local path="$3" |
766 | fi |
767 | |
768 | [[ -z ${owner} ]] && die "No owner given." |
769 | [[ -z ${path} ]] && die "No path given." |
770 | |
771 | chown -v ${recursive} ${owner} ${BINDIR}/${path} || die |
772 | } |
773 | |
774 | mchmod() |
775 | { |
776 | local posix="$1" |
777 | local path="$2" |
778 | local recursive |
779 | |
780 | # recursive |
781 | if [[ $1 = -r ]] || [[ $1 = -R ]] |
782 | then |
783 | local recursive="-R" |
784 | local posix="$2" |
785 | local path="$3" |
786 | fi |
787 | |
788 | [[ -z ${posix} ]] && die "No posix given." |
789 | [[ -z ${path} ]] && die "No path given." |
790 | |
791 | chmod -v ${recursive} ${posix} ${BINDIR}/${path} || die |
792 | } |
793 | |
794 | mlink() |
795 | { |
796 | local symlink="$1" |
797 | local pathto="$2" |
798 | local verbose="-v" |
799 | |
800 | # check for busybox as it doesn'tz support 'ln -v' |
801 | [[ $(readlink $(which ln)) = */busybox ]] && verbose="" |
802 | |
803 | [[ -z ${symlink} ]] && die "No symlink given." |
804 | [[ -z ${pathto} ]] && die "No path given." |
805 | |
806 | ln ${verbose} -snf ${symlink} ${BINDIR}/${pathto} || die |
807 | } |
808 | |
809 | # installs systemd units |
810 | # minstallunit /path/to/unit-file {destfilename} |
811 | minstallunit() |
812 | { |
813 | local unit |
814 | local file |
815 | local systemdunitdir="/usr/lib/systemd/system" |
816 | |
817 | [[ -z "$1" ]] && die "No unit given" |
818 | |
819 | # if no fullpath given use file from sourcedir |
820 | if [[ -z $(dirname $1) ]] || [[ $(dirname $1) = . ]] |
821 | then |
822 | file="${SOURCEDIR}/$(mpname)/$1" |
823 | else |
824 | file="$1" |
825 | fi |
826 | |
827 | if [[ -n "$2" ]] |
828 | then |
829 | unit="$2" |
830 | else |
831 | unit="$(basename ${file})" |
832 | fi |
833 | |
834 | # needed directory |
835 | install -d ${BINDIR}${prefix}${systemdunitdir} || die |
836 | |
837 | # install our initscript |
838 | install -v -m 0644 -o root -g root ${file} ${BINDIR}${prefix}${systemdunitdir}/${unit} || die |
839 | } |
840 | |
841 | # installs systemd tmp configs to /etc/tmpfiles.d |
842 | # minstalltmp /path/to/tmpdfile {destfilename} |
843 | minstalltmp() |
844 | { |
845 | local tmpdfile |
846 | local file |
847 | |
848 | [[ -z "$1" ]] && die "No tmpd file given" |
849 | |
850 | # if no fullpath given use file from sourcedir |
851 | if [[ -z $(dirname $1) ]] || [[ $(dirname $1) = . ]] |
852 | then |
853 | file="${SOURCEDIR}/$(mpname)/$1" |
854 | else |
855 | file="$1" |
856 | fi |
857 | |
858 | if [[ -n "$2" ]] |
859 | then |
860 | tmpdfile="$2" |
861 | else |
862 | tmpdfile="$(basename ${file})" |
863 | fi |
864 | |
865 | # needed directory |
866 | install -d ${BINDIR}/etc/tmpfiles.d || die |
867 | |
868 | # install our tmpdfile |
869 | install -v -m 0644 -o root -g root ${file} ${BINDIR}/etc/tmpfiles.d/${tmpdfile} || die |
870 | } |
871 | |
872 | mclearconfig() |
873 | { |
874 | local confdir |
875 | local prefix="${BINDIR}" |
876 | [[ -z ${MCONFIG} ]] && die "No \$MCONFIG given!" |
877 | |
878 | # no bindir prefix if requested |
879 | case $1 in |
880 | -b|--no-bindir) prefix="";; |
881 | esac |
882 | |
883 | confdir="$(dirname ${MCONFIG})" |
884 | if [[ ! -d ${prefix}/${confdir} ]] |
885 | then |
886 | install -d ${prefix}/${confdir} || die |
887 | fi |
888 | : > ${prefix}/${MCONFIG} |
889 | } |
890 | |
891 | maddconfig() |
892 | { |
893 | local argv="$1" |
894 | local confdir |
895 | local prefix="${BINDIR}" |
896 | |
897 | [[ -z ${MCONFIG} ]] && die "No \$MCONFIG given!" |
898 | |
899 | # no bindir prefix if requested |
900 | case $1 in |
901 | -b|--no-bindir) prefix=""; argv="$2" ;; |
902 | esac |
903 | |
904 | [[ -z ${argv} ]] && die "No argument given!" |
905 | |
906 | confdir="$(dirname ${MCONFIG})" |
907 | if [[ ! -d ${prefix}/${confdir} ]] |
908 | then |
909 | install -d ${prefix}/${confdir} || die |
910 | fi |
911 | echo "${argv}" >> ${prefix}/${MCONFIG} || die |
912 | } |