Magellan Linux

Contents of /trunk/core/include/mtools.sminc

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2166 - (show annotations) (download)
Thu Jul 9 19:08:40 2009 UTC (14 years, 10 months ago) by niro
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 }