--- trunk/mage/usr/lib/mage/pkgbuild_dir.sh 2005/07/31 11:57:05 169 +++ trunk/mage/usr/lib/mage/pkgbuild_dir.sh 2007/01/22 00:24:14 419 @@ -4,7 +4,10 @@ # builds packages from given dir # -# $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/pkgbuild_dir.sh,v 1.8 2005-07-31 11:56:55 niro Exp $ +# $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/pkgbuild_dir.sh,v 1.13 2007-01-22 00:24:14 niro Exp $ + +# set default user mage.rc +: ${MAGERC="/etc/mage.rc"} PKGSUFFIX="mpk" PKGNAME="$1" @@ -18,26 +21,28 @@ # export default C locale export LC_ALL=C -if [ -z "$1" ] -then - echo "No package name given. Aborting." -fi +[[ -z $1 ]] && echo "No package name given. Aborting." && exit 1 +[[ -z $2 ]] && echo "No source dir given. Aborting." && exit 1 -if [ -z "$2" ] +if [ -f ${MAGERC} ] then - echo "No source dir given. Aborting." + source ${MAGERC} +else + echo "Your ${MAGERC} is missing. Aborting." + exit 1 fi +source ${MLIBDIR}/mage4.functions.sh -if [ -f /etc/mage.rc ] +# set PKGDIR and BUILDDIR and BINDIR to MROOT +if [[ -n ${MROOT} ]] then - source /etc/mage.rc -else - echo "Your /etc/mage.rc is missing. Aborting." - exit 1 + export PKGDIR=${MROOT}/${PKGDIR} + export BUILDDIR=${MROOT}/${BUILDDIR} + export BINDIR=${MROOT}/${BINDIR} fi -source ${MLIBDIR}/mage3.functions.sh -build_preinstall() { +build_preinstall() +{ if [ -d ${BUILDDIR}/${PKGNAME} ] then rm -rf ${BUILDDIR}/${PKGNAME} @@ -51,25 +56,25 @@ touch ${BUILDDIR}/${PKGNAME}/.char } -build_postinstall() { - +build_postinstall() +{ echo echo "Fetching files for package '${PKGNAME}' ..." - #md5sums will only be generated for files: $M_MD5SUM - - #sets mtime to same value of the $BINDIR: $M_MTIME - #only needed for files and symlinks + # md5sums will only be generated for files: $M_MD5SUM + + # sets mtime to same value of the $BINDIR: $M_MTIME + # only needed for files and symlinks M_MTIME=$(stat -c %Y ${BINDIR}) - - #install mtime to package (needed for later checks) + + # install mtime to package (needed for later checks) echo "${M_MTIME}" > ${BUILDDIR}/${PKGNAME}/.mtime - #!! we use § as field seperator !! + # !! we use § as field seperator !! # doing so prevent us to get errors by filenames with spaces BUILD_TODELFILES=$(find ${SEARCHDIRS} -printf %p§) - - #sets fieldseperator to "§" instead of " " + + # sets fieldseperator to "§" instead of " " IFS=§ for I in $BUILD_TODELFILES @@ -83,24 +88,17 @@ FILEOWNER="$(stat -c %U $I)" FILEGROUP="$(stat -c %G $I)" - if [ "${FILEOWNER}" == "UNKNOWN" ] - then - FILEOWNER="root" - fi - - if [ "${FILEGROUP}" == "UNKNOWN" ] - then - FILEGROUP="root" - fi + [[ ${FILEOWNER} = UNKNOWN ]] && FILEOWNER="root" + [[ ${FILEGROUP} = UNKNOWN ]] && FILEGROUP="root" case "${FILETYPE}" in "directory") - if [ "$I" != "${SEARCHDIRS}" ] + if [[ $I != ${SEARCHDIRS} ]] then echo "${I#${SEARCHDIRS}*}§${FILEPOSIX}§${FILEOWNER}§${FILEGROUP}" >> ${BUILDDIR}/${PKGNAME}/.dirs fi ;; - + "symbolic link") LNKDEST="$(readlink $I)" echo "${I#${SEARCHDIRS}*}§${FILEPOSIX}§${LNKDEST#${SEARCHDIRS}*}§${M_MTIME}" >> ${BUILDDIR}/${PKGNAME}/.symlinks @@ -124,15 +122,19 @@ install -d ${BUILDDIR}/${PKGNAME}/binfiles/${FILEDIR} cp ${I} ${BUILDDIR}/${PKGNAME}/binfiles/${FILEDIR} ;; - + "block special file") echo "${I#${SEARCHDIRS}*}§${FILEPOSIX}" >> ${BUILDDIR}/${PKGNAME}/.pipes ;; "character special file") - echo "${I#${SEARCHDIRS}*}§${FILEPOSIX}" >> ${BUILDDIR}/${PKGNAME}/.char + # convert hex2dec + # printf '%d' 0x12 -> 18 + local CHAR_MAJOR="$(printf 0x$(stat -c %t $I))" + local CHAR_MINOR="$(printf 0x$(stat -c %T $I))" + echo "${I#${SEARCHDIRS}*}§${FILEPOSIX}§${CHAR_MAJOR}§${CHAR_MINOR}" >> ${BUILDDIR}/${PKGNAME}/.char ;; - + *) echo "What I am ? -- $I" echo "$0 paused ... Press Enter" @@ -141,24 +143,24 @@ esac fi done - - #very important: unsetting the '§' fieldseperator + + # very important: unsetting the '§' fieldseperator unset IFS - - #forcing mtime to same value + + # forcing mtime to same value echo -n "Forcing mtime to the same value ..." find ${BUILDDIR}/${PKGNAME}/binfiles \ -exec touch -m -r ${BUILDDIR}/${PKGNAME}/.mtime '{}' ';' \ && echo done || echo false - } -build_rmtimestamp() { +build_rmtimestamp() +{ rm /var/tmp/timestamp } - -build_package() { +build_package() +{ echo "Building Package ..." cd ${BUILDDIR} tar cvjf ${PKGNAME}.tar.bz2 ./${PKGNAME} @@ -166,7 +168,6 @@ mv ${PKGNAME}.tar.bz2 ${PKGDIR}/${PKGNAME}.${PKGSUFFIX} } - build_preinstall build_postinstall build_package