MakeKerberosInstaller.sh   [plain text]


#!/bin/sh

SRCROOT=$1
DSTROOT=$2
INSTALLERDIR=$3

NAME=Kerberos

# source directories
INSTALLFILES="${DSTROOT}"
RESOURCES="${SRCROOT}/Common/Resources"
INFOFILE="${RESOURCES}/${NAME}.info"
WELCOMEFILE="${RESOURCES}/English.lproj/Welcome.rtf"
PREFLIGHT="${RESOURCES}/preflight"
POSTFLIGHT="${RESOURCES}/postflight"

# destination directories
PKGDIR="${INSTALLERDIR}/${NAME}.pkg"
PKGINFO="${PKGDIR}/Contents/PkgInfo"
PKGRESOURCES="${PKGDIR}/Contents/Resources"
PKGBOM="${PKGRESOURCES}/${NAME}.bom"
PKGSIZES="${PKGRESOURCES}/${NAME}.sizes"
PKGTIFF="${PKGRESOURCES}/${NAME}.tiff"
PKGARCHIVE="${PKGRESOURCES}/${NAME}.pax.gz"
PKGINFOFILE="${PKGRESOURCES}/${NAME}.info"
PKGPREFLIGHT="${PKGRESOURCES}/preflight"
PKGPOSTFLIGHT="${PKGRESOURCES}/postflight"
PKGLPROJ="${PKGRESOURCES}/English.lproj"
PKGWELCOMEFILE="${PKGLPROJ}/Welcome.rtf"

echo "Generating Installer package \"${PKGDIR}\" ..."

# delete old package, if present
if [ -d "${PKGDIR}" ]; then rm -rf "${PKGDIR}"; fi

# create package directory
/bin/mkdir -p -m 755 "${PKGLPROJ}"

# create package info file, creator and type info
echo "  adding package info file ... "
echo pmkrpkg1 > "${PKGINFO}"
chmod 444 "${PKGINFO}"

# (gnu)tar/pax and compress root directory to package archive
echo -n "       creating package archive ... "
(cd "${INSTALLFILES}"; /bin/pax -w -z -x cpio .) > "${PKGARCHIVE}"
/bin/chmod 444 "${PKGARCHIVE}"
echo "done."

# copy resources to package
if [ -f "${INFOFILE}" ]; then
    echo -n "       copying `basename ${INFOFILE}` ... "
    /bin/cp "${INFOFILE}" "${PKGINFOFILE}"
    /bin/chmod 444 "${PKGINFOFILE}"
    echo "done."
fi

if [ -f "${WELCOMEFILE}" ]; then
    echo -n "       copying `basename ${WELCOMEFILE}` ... "
    /bin/cp "${WELCOMEFILE}" "${PKGWELCOMEFILE}"
    /bin/chmod 444 "${PKGWELCOMEFILE}"
    echo "done."
fi

if [ -f "${PREFLIGHT}" ]; then
    echo -n "       copying `basename ${PREFLIGHT}` ... "
    /bin/cp "${PREFLIGHT}" "${PKGPREFLIGHT}"
    /bin/chmod 555 "${PKGPREFLIGHT}"
    echo "done."
fi

if [ -f "${POSTFLIGHT}" ]; then
    echo -n "       copying `basename ${POSTFLIGHT}` ... "
    /bin/cp "${POSTFLIGHT}" "${PKGPOSTFLIGHT}"
    /bin/chmod 555 "${PKGPOSTFLIGHT}"
    echo "done."
fi

# generate bom file
echo -n "       generating bom file ... "
/usr/bin/mkbom "${INSTALLFILES}" "${PKGBOM}" >& /dev/null
/bin/chmod 444 "${PKGBOM}"
echo done.

# generate sizes file
echo -n "       generating sizes file ... "

# compute number of files in package
NUMFILES=`/usr/bin/lsbom -s "${PKGBOM}" | /usr/bin/wc -l`

# compute package size when compressed
COMPRESSEDSIZE=`/usr/bin/du -k -s "${PKGRESOURCES}" | /usr/bin/awk '{print $1}'`
COMPRESSEDSIZE=$((${COMPRESSEDSIZE} + 3))  # add 1KB each for sizes, location, status files

INFOSIZE=`/bin/ls -s "${PKGINFO}" | /usr/bin/awk '{print $1}'`
BOMSIZE=`/bin/ls -s "${PKGBOM}" | /usr/bin/awk '{print $1}'`
if [ -f "${PKGTIFF}" ]; then
    TIFFSIZE=`/bin/ls -s "${PKGTIFF}" | /usr/bin/awk '{print $1}'`
else
    TIFFSIZE=0
fi 

INSTALLEDSIZE=`/usr/bin/du -k -s "${INSTALLFILES}" | /usr/bin/awk '{print $1}'`
INSTALLEDSIZE=$((${INSTALLEDSIZE} + ${INFOSIZE} + ${BOMSIZE} + ${TIFFSIZE} + 3))

# echo size parameters to sizes file
echo NumFiles ${NUMFILES}             >  "${PKGSIZES}"
echo InstalledSize ${INSTALLEDSIZE}   >> "${PKGSIZES}"
echo CompressedSize ${COMPRESSEDSIZE} >> "${PKGSIZES}"
/bin/chmod 444 "${PKGSIZES}"
echo "done."

echo "... package ${PKGDIR} created."

exit 0