--- trunk/core/include/mtools.sminc 2010/01/03 20:34:10 4807 +++ trunk/include/mtools.sminc 2014/03/11 08:58:44 21095 @@ -1,11 +1,7 @@ -# $Header: /magellan-cvs/smage/include/mtools.sminc,v 1.39 2008/04/20 08:28:23 niro Exp $ +# $Id$ # some special build tools -# automatical inherit mtools.minc -# this will provide the service management functions -INHERITS="${INHERITS} mtools" - -# get the pname right with splitpackages +# get the pname right with split-packages mpname() { local pname="${PNAME}" @@ -14,35 +10,145 @@ echo "${pname}" } -# installs initscripts -# minstallrc /path/to/rc-script {destfilename} -minstallrc() +# installs given directories +# minstalldir /path/to/dest/dir {/path/to/dest/dirN} +minstalldir() +{ + local argv="$@" + local dest + + [[ -z ${argv} ]] && die "No dest dir given" + for dest in ${argv} + do + [[ -d ${BINDIR}${dest} ]] && continue + install -v -d ${BINDIR}/${dest} || die + done +} + +# install files to given path (defaults to /usr/bin) +# minstallfile {-s} /path/to/file {/path/to/dest} +minstallfile() { - local rcscript local file + local dest - [[ -z "$1" ]] && die "No initscript given" + [[ -z $1 ]] && die "No etc file given" - # if no fullpath given use file from sourcedir - if [[ -z $(dirname $1) ]] || [[ $(dirname $1) = . ]] + if [[ $1 = -s ]] then - file="${SOURCEDIR}/$(mpname)/$1" + file="${SOURCEDIR}/$(mpname)/$2" + dest="$3" + if [[ -z $3 ]] + then + dest=/usr/bin + install -d ${BINDIR}/${dest} || die + fi else file="$1" + dest="$2" + if [[ -z $2 ]] + then + dest=/usr/bin + install -d ${BINDIR}/${dest} || die + fi fi - if [[ -n "$2" ]] + # install our configfile + install -v -m 0644 -o root -g root ${file} ${BINDIR}/${dest} || die +} + +# installs executables to given path +# minstallexec {-s} /path/to/exec {/path/to/dest} +minstallexec() +{ + local file + local dest + + [[ -z $1 ]] && die "No file given" + + if [[ $1 = -s ]] then - rcscript="$2" + file="${SOURCEDIR}/$(mpname)/$2" + dest="$3" + if [[ -z $3 ]] + then + dest=/usr/bin + install -d ${BINDIR}/${dest} || die + fi else - rcscript="$(basename ${file})" + file="$1" + dest="$2" + if [[ -z $2 ]] + then + dest=/usr/bin + install -d ${BINDIR}/${dest} || die + fi fi - # needed directory - install -d ${BINDIR}/etc/rc.d/init.d || die + # install our configfile + install -v -m 0755 -o root -g root ${file} ${BINDIR}/${dest} || die +} - # install our initscript - install -v -m 0755 -o root -g root ${file} ${BINDIR}/etc/rc.d/init.d/${rcscript} || die +# installs executables to given path +# minstalllib {-s} /path/to/exec {/path/to/dest} +minstalllib() +{ + local file + local dest + local verbose="-v" + + # check for busybox as it doesn't support 'ln -v' + [[ $(readlink $(which ln)) = */busybox ]] && verbose="" + + [[ -z $1 ]] && die "No file given" + + if [[ $1 = -s ]] + then + file="${SOURCEDIR}/$(mpname)/$2" + dest="$3" + if [[ -z $3 ]] + then + dest=/usr/$(mlibdir) + install -d ${BINDIR}/${dest} || die + fi + else + file="$1" + dest="$2" + if [[ -z $2 ]] + then + dest=/usr/$(mlibdir) + install -d ${BINDIR}/${dest} || die + fi + fi + + # install our library + install -v -m 0755 -o root -g root ${file} ${BINDIR}/${dest} || die + + # prefer scanelf + if [[ -x $(type -P scanelf) ]] + then + local soname="$(scanelf -qBF '%S#p' ${file})" + ln ${verbose} -snf $(basename ${file}) ${BINDIR}/${dest}/${soname} || die + else + echo -e "${COLYELLOW}minstalllib(): Warning: scanelf not found, using fallback symlink method${COLDEFAULT}" + + # create libtool symlinks + # 1. - library.so.1.0.0 -> library.so.1.0 + if [ "${file%.*}" != *.so ] + then + ln ${verbose} -snf $(basename ${file}) ${BINDIR}/${dest}/$(basename ${file%.*}) || die + fi + # 2. - library.so.1.0.0 -> library.so.1 + if [ "${file%.*.*}" != *.so ] + then + ln ${verbose} -snf $(basename ${file}) ${BINDIR}/${dest}/$(basename ${file%.*.*}) || die + fi + # 3. - library.so.1.0.0.0 -> library.so.1 + if [ "${file%.*.*.*}" != *.so ] + then + ln ${verbose} -snf $(basename ${file}) ${BINDIR}/${dest}/$(basename ${file%.*.*.*}) || die + fi + fi } # installs environment files @@ -146,151 +252,6 @@ install -v -m 0644 -o root -g root ${file} ${BINDIR}/${destdir}/${etcfile} || die } -minstalludevrule() -{ - local udevrule - local file - - [[ -z "$1" ]] && die "No udev rule given" - - # if no fullpath given use file from sourcedir - if [[ -z $(dirname $1) ]] || [[ $(dirname $1) = . ]] - then - file="${SOURCEDIR}/$(mpname)/$1" - else - file="$1" - fi - - if [[ -n "$2" ]] - then - udevrule="$2" - else - udevrule="$(basename ${file})" - fi - - # needed directory - install -d ${BINDIR}/etc/udev/rules.d || die - - # install our udev rule - install -v -m 0644 -o root -g root ${file} ${BINDIR}/etc/udev/rules.d/${udevrule} || die -} - -minstalludevhelper() -{ - local udevhelper - local file - - [[ -z "$1" ]] && die "No udev helper given" - - # if no fullpath given use file from sourcedir - if [[ -z $(dirname $1) ]] || [[ $(dirname $1) = . ]] - then - file="${SOURCEDIR}/$(mpname)/$1" - else - file="$1" - fi - - if [[ -n "$2" ]] - then - udevhelper="$2" - else - udevhelper="$(basename ${file})" - fi - - # needed directory - install -d ${BINDIR}/lib/udev || die - - # install our udev-helper - install -v -m 0755 -o root -g root ${file} ${BINDIR}/lib/udev/${udevhelper} || die -} - -minstallhalinformation() -{ - local halrule - local file - - [[ -z "$1" ]] && die "No hal rule given" - - # if no fullpath given use file from sourcedir - if [[ -z $(dirname $1) ]] || [[ $(dirname $1) = . ]] - then - file="${SOURCEDIR}/$(mpname)/$1" - else - file="$1" - fi - - if [[ -n "$2" ]] - then - halrule="$2" - else - halrule="$(basename ${file})" - fi - - # needed directory - install -d ${BINDIR}/usr/share/hal/fdi/information/20thirdparty || die - - # install our udev rule - install -v -m 0644 -o root -g root ${file} ${BINDIR}/usr/share/hal/fdi/information/20thirdparty/${halrule} || die -} - -minstallhalpolicy() -{ - local halrule - local file - - [[ -z "$1" ]] && die "No hal rule given" - - # if no fullpath given use file from sourcedir - if [[ -z $(dirname $1) ]] || [[ $(dirname $1) = . ]] - then - file="${SOURCEDIR}/$(mpname)/$1" - else - file="$1" - fi - - if [[ -n "$2" ]] - then - halrule="$2" - else - halrule="$(basename ${file})" - fi - - # needed directory - install -d ${BINDIR}/usr/share/hal/fdi/policy/20thirdparty || die - - # install our udev rule - install -v -m 0644 -o root -g root ${file} ${BINDIR}/usr/share/hal/fdi/policy/20thirdparty/${halrule} || die -} - -minstallhalpreprobe() -{ - local halrule - local file - - [[ -z "$1" ]] && die "No hal rule given" - - # if no fullpath given use file from sourcedir - if [[ -z $(dirname $1) ]] || [[ $(dirname $1) = . ]] - then - file="${SOURCEDIR}/$(mpname)/$1" - else - file="$1" - fi - - if [[ -n "$2" ]] - then - halrule="$2" - else - halrule="$(basename ${file})" - fi - - # needed directory - install -d ${BINDIR}/usr/share/hal/fdi/preprobe/10osvendor || die - - # install our udev rule - install -v -m 0644 -o root -g root ${file} ${BINDIR}/usr/share/hal/fdi/preprobe/10osvendor/${halrule} || die -} - # install man files to appropiate dirs # minstallman /path/to/manfile.foo minstallman() @@ -468,7 +429,7 @@ # installs logrotate configuration files -# minstallpam /path/to/logrotatefile {destfilename} +# minstalllog /path/to/logrotatefile {destfilename} minstalllog() { local logfile @@ -498,161 +459,77 @@ install -v -m 0644 -o root -g root ${file} ${BINDIR}/etc/logrotate.d/${logfile} || die } - -# installs given directories -# minstalldir /path/to/dest/dir {/path/to/dest/dirN} -minstalldir() -{ - local argv="$@" - local dest - - [[ -z ${argv} ]] && die "No dest dir given" - for dest in ${argv} - do - [[ -d ${BINDIR}${dest} ]] && continue - install -v -d ${BINDIR}/${dest} || die - done -} - - -# install files to given path (defaults to /usr/bin) -# minstallfile {-s} /path/to/file {/path/to/dest} -minstallfile() +mcopy() { - local file - local dest - - [[ -z $1 ]] && die "No etc file given" + local source="$1" + local dest="$2" + local opts - if [[ $1 = -s ]] + # recursive + if [[ $1 = -r ]] || [[ $1 = -R ]] then - file="${SOURCEDIR}/$(mpname)/$2" + opts="-R" + source="$2" dest="$3" - if [[ -z $3 ]] - then - dest=/usr/bin - install -d ${BINDIR}/${dest} || die - fi - else - file="$1" - dest="$2" - if [[ -z $2 ]] - then - dest=/usr/bin - install -d ${BINDIR}/${dest} || die - fi fi - # install our configfile - install -v -m 0644 -o root -g root ${file} ${BINDIR}/${dest} || die -} - -# installs executables to given path -# minstallexec {-s} /path/to/exec {/path/to/dest} -minstallexec() -{ - local file - local dest - - [[ -z $1 ]] && die "No file given" - - if [[ $1 = -s ]] + # recursive + if [[ $1 = -rf ]] || [[ $1 = -fr ]] || [[ $1 = -Rf ]] || [[ $1 = -fR ]] then - file="${SOURCEDIR}/$(mpname)/$2" + opts="-R -f" + source="$2" dest="$3" - if [[ -z $3 ]] - then - dest=/usr/bin - install -d ${BINDIR}/${dest} || die - fi - else - file="$1" - dest="$2" - if [[ -z $2 ]] - then - dest=/usr/bin - install -d ${BINDIR}/${dest} || die - fi fi - # install our configfile - install -v -m 0755 -o root -g root ${file} ${BINDIR}/${dest} || die -} - -# installs executables to given path -# minstalllib {-s} /path/to/exec {/path/to/dest} -minstalllib() -{ - local file - local dest - local verbose="-v" - - # check for busybox as it doesn'tz support 'ln -v' - [[ $(readlink $(which ln)) = */busybox ]] && verbose="" - - [[ -z $1 ]] && die "No file given" - - if [[ $1 = -s ]] + if [[ $1 = -a ]] then - file="${SOURCEDIR}/$(mpname)/$2" + opts="-a" + source="$2" dest="$3" - if [[ -z $3 ]] - then - dest=/usr/$(mlibdir) - install -d ${BINDIR}/${dest} || die - fi - else - file="$1" - dest="$2" - if [[ -z $2 ]] - then - dest=/usr/$(mlibdir) - install -d ${BINDIR}/${dest} || die - fi fi - # install our library - install -v -m 0755 -o root -g root ${file} ${BINDIR}/${dest} || die + [[ -z ${source} ]] && die "No source given." + [[ -z ${dest} ]] && die "No dest given." - # create libtool symlinks - # 1. - library.so.1.0.0 -> library.so.1.0 - if [ "${file%.*}" != *.so ] - then - ln ${verbose} -snf $(basename ${file}) ${BINDIR}/${dest}/$(basename ${file%.*}) - fi - # 2. - library.so.1.0.0 -> library.so.1 - if [ "${file%.*.*}" != *.so ] - then - ln ${verbose} -snf $(basename ${file}) ${BINDIR}/${dest}/$(basename ${file%.*.*}) - fi + cp -v ${opts} ${source} ${BINDIR}/${dest} || die } -mcopy() +mdelete() { - local source="$1" - local dest="$2" + local dest="$1" local opts + # enforce + if [[ $1 = -f ]] + then + opts="-f" + dest="$2" + fi + # recursive if [[ $1 = -r ]] || [[ $1 = -R ]] then - opts="--recursive" - source="$2" - dest="$3" + opts="-r" + dest="$2" fi # recursive if [[ $1 = -rf ]] || [[ $1 = -fr ]] || [[ $1 = -Rf ]] || [[ $1 = -fR ]] then - opts="--recursive --force" - source="$2" - dest="$3" + opts="-r -f" + dest="$2" fi - [[ -z ${source} ]] && die "No source given." [[ -z ${dest} ]] && die "No dest given." - - cp -v ${opts} ${source} ${BINDIR}/${dest} || die + for i in $(eval echo ${dest}) + do + if [[ -e ${BINDIR}/${dest} ]] || [[ -L ${BINDIR}/${dest} ]] + then + rm -v ${opts} ${BINDIR}/${dest} || die + else + die "${BINDIR}/${dest} does not exist." + fi + done } mmove() @@ -664,7 +541,7 @@ # force if [[ $1 = -f ]] then - opts="--force" + opts="-f" source="$2" dest="$3" fi @@ -710,7 +587,7 @@ # recursive if [[ $1 = -r ]] || [[ $1 = -R ]] then - local recursive="--recursive" + local recursive="-R" local owner="$2" local path="$3" fi @@ -730,7 +607,7 @@ # recursive if [[ $1 = -r ]] || [[ $1 = -R ]] then - local recursive="--recursive" + local recursive="-R" local posix="$2" local path="$3" fi @@ -755,3 +632,45 @@ ln ${verbose} -snf ${symlink} ${BINDIR}/${pathto} || die } + +mclearconfig() +{ + local confdir + local prefix="${BINDIR}" + [[ -z ${MCONFIG} ]] && die "No \$MCONFIG given!" + + # no bindir prefix if requested + case $1 in + -b|--no-bindir) prefix="";; + esac + + confdir="$(dirname ${MCONFIG})" + if [[ ! -d ${prefix}/${confdir} ]] + then + install -d ${prefix}/${confdir} || die + fi + : > ${prefix}/${MCONFIG} +} + +maddconfig() +{ + local argv="$1" + local confdir + local prefix="${BINDIR}" + + [[ -z ${MCONFIG} ]] && die "No \$MCONFIG given!" + + # no bindir prefix if requested + case $1 in + -b|--no-bindir) prefix=""; argv="$2" ;; + esac + + #[[ -z ${argv} ]] && die "No argument given!" + + confdir="$(dirname ${MCONFIG})" + if [[ ! -d ${prefix}/${confdir} ]] + then + install -d ${prefix}/${confdir} || die + fi + echo "${argv}" >> ${prefix}/${MCONFIG} || die +}