Magellan Linux

Annotation of /smage/trunk/include/mtools.sminc

Parent Directory Parent Directory | Revision Log Revision Log


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