[Brlcad-commits] CVS: brlcad/sh make_pkg.sh,1.12,1.13
Open Source Solid Modeling CAD
Brought to you by:
brlcad
From: Sean M. <br...@us...> - 2005-04-10 15:55:45
|
Update of /cvsroot/brlcad/brlcad/sh In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25903 Modified Files: make_pkg.sh Log Message: improvement that allows the script to work with NFS mounted home directories, defaulting to try making the package in /tmp. if an existing package exists, they are warned now and asked if they want to delete it. Index: make_pkg.sh =================================================================== RCS file: /cvsroot/brlcad/brlcad/sh/make_pkg.sh,v retrieving revision 1.12 retrieving revision 1.13 diff -w -u -r1.12 -r1.13 --- make_pkg.sh 7 Apr 2005 04:35:31 -0000 1.12 +++ make_pkg.sh 10 Apr 2005 15:55:33 -0000 1.13 @@ -82,34 +82,130 @@ RESOURCES="none>>make_pkg_sh<<none" else if [ ! -d "$RESOURCES" ] ; then - echo "ERROR: specified resource path (${RESOURCES}) is not a directory" + echo "ERROR: specified resource path (${RESOURCES}) is not a readable directory" exit 1 fi fi +PRE_PWD="`pwd`" +VERSION="${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}" +PKG_NAME="${NAME}-${VERSION}" +PKG="${PKG_NAME}.pkg" + +if [ -f "$PKG" ] ; then + echo "ERROR: there is a file with the same name in the way of creating $PKG" + exit 1 +fi + if [ "x`id -u`" != "x0" ] ; then echo "$0 requires superuser privileges, restarting via sudo" sudo "$0" "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" "$9" exit $? fi +exists_writeable=no +if [ -d "$PKG" ] ; then + if [ -w "$PKG" ] ; then + exists_writeable=yes + fi -VERSION="${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}" -PKG_NAME="${NAME}-${VERSION}" -mkdir "${PKG_NAME}.pkg" -if [ ! -d "${PKG_NAME}.pkg" ] ; then +else + mkdir "$PKG" > /dev/null 2>&1 + if [ ! -d "$PKG" ] ; then + echo "WARNING: unable to create the package directory in `pwd` (perhaps it's an NFS filesystem?)" + + if [ ! -w /tmp/. ] ; then + echo "ERROR: unable to write to /tmp for creating the package" + exit 1 + fi + + cd /tmp + + if [ -d "$PKG" ] ; then + if [ -w "$PKG" ] ; then + exists_writeable=yes + fi + else + mkdir "$PKG" + if [ ! -d "$PKG" ] ; then + echo "ERROR: unable to use /tmp for creating the package" + exit 1 + fi + + rmdir "$PKG" + if [ ! "x$?" = "x0" ] ; then + echo "ERROR: unexpected failure while testing removal of $PKG" + exit 1 + fi + fi + + if [ ! -d "${RESOURCES}" ] ; then + if [ -d "${PRE_PWD}/${RESOURCES}" ] ; then + RESOURCES="${PRE_PWD}/${RESOURCES}" + fi + fi + else + rmdir "$PKG" + if [ ! "x$?" = "x0" ] ; then + echo "ERROR: unexpected failure while testing removal of $PKG" + exit 1 + fi + fi +fi + +if [ "x$exists_writeable" = "xyes" ] ; then + remove="" + while [ "x$remove" = "x" ] ; do + echo "WARNING: Installer package ($PKG) already exists in `pwd`, remove it?" + echo -n "yes/no? " + read remove + case x$remove in + x[yY][eE][sS]) + remove=yes + ;; + x[yY]) + remove=yes + ;; + x[nN][oO]) + remove=no + ;; + x[nN]) + remove=no + ;; + *) + remove="" + ;; + esac + done + + if [ "x$remove" = "xyes" ] ; then + rm -rf "$PKG" + fi +fi + +if [ -f "$PKG" ] ; then + echo "ERROR: cannot continue with $PKG in the way" + exit 1 +fi +if [ -d "$PKG" ] ; then + echo "ERROR: cannot continue with directory $PKG in the way" + exit 1 +fi + +mkdir "$PKG" > /dev/null 2>&1 +if [ ! -d "$PKG" ] ; then echo "ERROR: unable to create the package directory" exit 1 fi -mkdir "${PKG_NAME}.pkg/Contents" -if [ ! -d "${PKG_NAME}.pkg/Contents" ] ; then +mkdir "$PKG/Contents" +if [ ! -d "$PKG/Contents" ] ; then echo "ERROR: unable to create the package contents directory" exit 1 fi -mkdir "${PKG_NAME}.pkg/Contents/Resources" -if [ ! -d "${PKG_NAME}.pkg/Contents/Resources" ] ; then +mkdir "$PKG/Contents/Resources" +if [ ! -d "$PKG/Contents/Resources" ] ; then echo "ERROR: unable to create the package resources directory" exit 1 fi @@ -120,22 +216,22 @@ exit 1 fi - cp -R "${RESOURCES}/" "${PKG_NAME}.pkg/Contents/Resources" + cp -R "${RESOURCES}" "$PKG/Contents/Resources" if [ $? != 0 ] ; then echo "ERROR: unable to copy the resource directory contents" exit 1 fi fi -cat > "${PKG_NAME}.pkg/Contents/PkgInfo" <<EOF +cat > "$PKG/Contents/PkgInfo" <<EOF pmkrpkg1 EOF -if [ ! -f "${PKG_NAME}.pkg/Contents/PkgInfo" ] ; then +if [ ! -f "$PKG/Contents/PkgInfo" ] ; then echo "ERROR: unable to create PkgInfo file" exit 1 fi -cat > "${PKG_NAME}.pkg/Contents/Info.plist" <<EOF +cat > "$PKG/Contents/Info.plist" <<EOF <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> @@ -175,61 +271,61 @@ </dict> </plist> EOF -if [ ! -f "${PKG_NAME}.pkg/Contents/Info.plist" ] ; then +if [ ! -f "$PKG/Contents/Info.plist" ] ; then echo "ERROR: unable to create Info.plist file" exit 1 fi -mkdir ${PKG_NAME}.pkg/Contents/Root +mkdir "$PKG/Contents/Root" if [ $? != 0 ] ; then echo "ERROR: unable to successfully create the archive root" exit 1 fi -if [ ! -d "${PKG_NAME}.pkg/Contents/Root" ] ; then - echo "ERROR: ${PKG_NAME}.pkg/Contents/Root could not be created" +if [ ! -d "$PKG/Contents/Root" ] ; then + echo "ERROR: $PKG/Contents/Root could not be created" exit 1 fi -chmod 1775 "${PKG_NAME}.pkg/Contents/Root" +chmod 1775 "$PKG/Contents/Root" if [ $? != 0 ] ; then echo "ERROR: unable to set the mode on the archive root" exit 1 fi -chown root:admin "${PKG_NAME}.pkg/Contents/Root" +chown root:admin "$PKG/Contents/Root" if [ $? != 0 ] ; then echo "ERROR: unable to set the owner/group on the archive root" exit 1 fi -pax -p e -rw "$ARCHIVE" "${PKG_NAME}.pkg/Contents/Root" +pax -p e -rw "$ARCHIVE" "$PKG/Contents/Root" if [ $? != 0 ] ; then echo "ERROR: unable to successfully create the archive root of $ARCHIVE" exit 1 fi -pax -z -w -x cpio -s ",${PKG_NAME}.pkg/Contents/Root,.," "${PKG_NAME}.pkg/Contents/Root" > "${PKG_NAME}.pkg/Contents/Archive.pax.gz" +pax -z -w -x cpio -s ",$PKG/Contents/Root,.," "$PKG/Contents/Root" > "$PKG/Contents/Archive.pax.gz" if [ $? != 0 ] ; then echo "ERROR: unable to successfully create a compressed pax archive" exit 1 fi -if [ ! -f "${PKG_NAME}.pkg/Contents/Archive.pax.gz" ] ; then +if [ ! -f "$PKG/Contents/Archive.pax.gz" ] ; then echo "ERROR: compressed pax archive does not exist" exit 1 fi -mkbom "${PKG_NAME}.pkg/Contents/Root" "${PKG_NAME}.pkg/Contents/Archive.bom" +mkbom "$PKG/Contents/Root" "$PKG/Contents/Archive.bom" if [ $? != 0 ] ; then echo "ERROR: unable to successfully generate a bill of materials" exit 1 fi -if [ ! -f "${PKG_NAME}.pkg/Contents/Archive.bom" ] ; then +if [ ! -f "$PKG/Contents/Archive.bom" ] ; then echo "ERROR: bill of materials file does not exist" exit 1 fi -rm -rf "${PKG_NAME}.pkg/Contents/Root" -if [ -d "${PKG_NAME}.pkg/Contents/Root" ] ; then +rm -rf "$PKG/Contents/Root" +if [ -d "$PKG/Contents/Root" ] ; then echo "ERROR: unable to remove temporary BOM root" exit 1 fi @@ -246,24 +342,24 @@ exit 1 fi -COMP_SIZE=`ls -l "${PKG_NAME}.pkg/Contents/Archive.pax.gz" | awk '{print $5}'` +COMP_SIZE=`ls -l "$PKG/Contents/Archive.pax.gz" | awk '{print $5}'` COMP_SIZE=`echo "$COMP_SIZE 1024 / p" | dc` if [ "x$COMP_SIZE" = "x" ] ; then echo "ERROR: unable to get the compressed archive size" exit 1 fi -cat > "${PKG_NAME}.pkg/Contents/Resources/${PKG_NAME}.sizes" <<EOF +cat > "$PKG/Contents/Resources/${PKG_NAME}.sizes" <<EOF NumFiles $NUM_FILES InstalledSize $INST_SIZE CompressedSize $COMP_SIZE EOF -if [ ! -f "${PKG_NAME}.pkg/Contents/Resources/${PKG_NAME}.sizes" ] ; then +if [ ! -f "$PKG/Contents/Resources/${PKG_NAME}.sizes" ] ; then echo "ERROR: unable to create the ${PKG_NAME}.size file" exit 1 fi -cat > "${PKG_NAME}.pkg/Contents/Resources/${PKG_NAME}.info" <<EOF +cat > "$PKG/Contents/Resources/${PKG_NAME}.info" <<EOF Title $NAME Version $VERSION Description $NAME $VERSION @@ -281,12 +377,12 @@ InstallFat NO RootVolumeOnly NO EOF -if [ ! -f "${PKG_NAME}.pkg/Contents/Resources/${PKG_NAME}.info" ] ; then +if [ ! -f "$PKG/Contents/Resources/${PKG_NAME}.info" ] ; then echo "ERROR: unable to create the ${PKG_NAME}.info file" exit 1 fi -cat > "${PKG_NAME}.pkg/Contents/Resources/Description.plist" <<EOF +cat > "$PKG/Contents/Resources/Description.plist" <<EOF <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> @@ -302,31 +398,33 @@ </dict> </plist> EOF -if [ ! -f "${PKG_NAME}.pkg/Contents/Resources/Description.plist" ] ; then +if [ ! -f "$PKG/Contents/Resources/Description.plist" ] ; then echo "ERROR: unable to create the Description.plist file" exit 1 fi -ln -s ../Archive.bom "${PKG_NAME}.pkg/Contents/Resources/${PKG_NAME}.bom" +ln -s ../Archive.bom "$PKG/Contents/Resources/${PKG_NAME}.bom" if [ $? != 0 ] ; then echo "ERROR: unable to successfully create a symbolic link to the Archive.bom" exit 1 fi -if [ ! -h "${PKG_NAME}.pkg/Contents/Resources/${PKG_NAME}.bom" ] ; then +if [ ! -h "$PKG/Contents/Resources/${PKG_NAME}.bom" ] ; then echo "ERROR: symbolic link ${PKG_NAME}.bom does not exist" exit 1 fi -ln -s ../Archive.pax.gz "${PKG_NAME}.pkg/Contents/Resources/${PKG_NAME}.pax.gz" +ln -s ../Archive.pax.gz "$PKG/Contents/Resources/${PKG_NAME}.pax.gz" if [ $? != 0 ] ; then echo "ERROR: unable to successfully create a symbolic link to the Archive.pax.gz" exit 1 fi -if [ ! -h "${PKG_NAME}.pkg/Contents/Resources/${PKG_NAME}.pax.gz" ] ; then +if [ ! -h "$PKG/Contents/Resources/${PKG_NAME}.pax.gz" ] ; then echo "ERROR: symbolic link ${PKG_NAME}.pax.gz does not exist" exit 1 fi +echo "CREATED `pwd`/$PKG" +cd "$PRE_PWD" # woo hoo .. done # Local Variables: |