Magellan Linux

Annotation of /smage/branches/alx07x-unstable/include/mtools.sminc

Parent Directory Parent Directory | Revision Log Revision Log


Revision 14482 - (hide annotations) (download)
Tue Aug 4 11:06:02 2020 UTC (3 years, 9 months ago) by niro
File size: 12862 byte(s)
-release unstable
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 niro 5457 for i in $(eval echo "${BINDIR}/${dest}")
525     do
526     if [[ -e ${i} ]] || [[ -L ${i} ]]
527     then
528     rm -v ${opts} ${i} || die
529     else
530     die "${i} does not exist."
531     fi
532     done
533 niro 5224 }
534    
535     mmove()
536     {
537     local source="$1"
538     local dest="$2"
539     local opts
540    
541     # force
542     if [[ $1 = -f ]]
543     then
544     opts="-f"
545     source="$2"
546     dest="$3"
547     fi
548    
549     [[ -z ${source} ]] && die "No source given."
550     [[ -z ${dest} ]] && die "No dest given."
551    
552     mv -v ${opts} ${source} ${BINDIR}/${dest} || die
553     }
554    
555 niro 1665 # mark directories undeletable
556     mkeepdir()
557     {
558     local keepdir
559     [[ -z "$1" ]] && die "No directory given"
560    
561     keepdir="$1"
562 niro 5224 install -v -d ${BINDIR}/${keepdir} || die
563 niro 1665 touch ${BINDIR}/${keepdir}/.keep || die
564     }
565    
566     # creates empty files
567     memptyfile()
568     {
569     local file
570     local path
571    
572     [[ -z "$1" ]] && die "No file given"
573    
574     file="$1"
575     path="$(dirname ${file})"
576    
577 niro 5224 install -d ${BINDIR}/${path} || die
578 niro 1665 touch ${BINDIR}/${file} || die
579     }
580    
581 niro 5224 mchown()
582     {
583     local owner="$1"
584     local path="$2"
585     local recursive
586    
587     # recursive
588     if [[ $1 = -r ]] || [[ $1 = -R ]]
589     then
590     local recursive="-R"
591     local owner="$2"
592     local path="$3"
593     fi
594    
595     [[ -z ${owner} ]] && die "No owner given."
596     [[ -z ${path} ]] && die "No path given."
597    
598     chown -v ${recursive} ${owner} ${BINDIR}/${path} || die
599     }
600    
601     mchmod()
602     {
603     local posix="$1"
604     local path="$2"
605     local recursive
606    
607     # recursive
608     if [[ $1 = -r ]] || [[ $1 = -R ]]
609     then
610     local recursive="-R"
611     local posix="$2"
612     local path="$3"
613     fi
614    
615     [[ -z ${posix} ]] && die "No posix given."
616     [[ -z ${path} ]] && die "No path given."
617    
618     chmod -v ${recursive} ${posix} ${BINDIR}/${path} || die
619     }
620    
621     mlink()
622     {
623     local symlink="$1"
624     local pathto="$2"
625     local verbose="-v"
626    
627     # check for busybox as it doesn'tz support 'ln -v'
628     [[ $(readlink $(which ln)) = */busybox ]] && verbose=""
629    
630     [[ -z ${symlink} ]] && die "No symlink given."
631     [[ -z ${pathto} ]] && die "No path given."
632    
633     ln ${verbose} -snf ${symlink} ${BINDIR}/${pathto} || die
634     }
635    
636 niro 3577 mclearconfig()
637     {
638     local confdir
639     local prefix="${BINDIR}"
640     [[ -z ${MCONFIG} ]] && die "No \$MCONFIG given!"
641    
642     # no bindir prefix if requested
643     case $1 in
644     -b|--no-bindir) prefix="";;
645     esac
646    
647     confdir="$(dirname ${MCONFIG})"
648     if [[ ! -d ${prefix}/${confdir} ]]
649     then
650     install -d ${prefix}/${confdir} || die
651     fi
652     : > ${prefix}/${MCONFIG}
653     }
654    
655     maddconfig()
656     {
657     local argv="$1"
658     local confdir
659     local prefix="${BINDIR}"
660    
661     [[ -z ${MCONFIG} ]] && die "No \$MCONFIG given!"
662    
663     # no bindir prefix if requested
664     case $1 in
665     -b|--no-bindir) prefix=""; argv="$2" ;;
666     esac
667    
668 niro 5117 #[[ -z ${argv} ]] && die "No argument given!"
669 niro 3577
670     confdir="$(dirname ${MCONFIG})"
671     if [[ ! -d ${prefix}/${confdir} ]]
672     then
673     install -d ${prefix}/${confdir} || die
674     fi
675     echo "${argv}" >> ${prefix}/${MCONFIG} || die
676     }
677 niro 13783
678     mfilterflag()
679     {
680     local type="$1"
681     local flag="$2"
682     local var
683    
684     for var in $(eval echo \${${type}})
685     do
686     case "${var}" in
687     ${flag}) continue;;
688     *) echo -n "${var}"' ';;
689     esac
690     done
691     echo
692     }
693    
694     maddflag()
695     {
696     local type="$1"
697     local flag="$2"
698     echo "$(eval echo \${${type}}) ${flag}"
699     }