macos: find packagemaker instead of assuming path
authorDerrick Brashear <shadow@dementix.org>
Tue, 27 Mar 2012 00:33:26 +0000 (20:33 -0400)
committerDerrick Brashear <shadow@dementix.org>
Tue, 27 Mar 2012 01:11:12 +0000 (18:11 -0700)
in xcode 4.3, packagemaker is unbundled. make no assumptions
about where it can be found; instead, let spotlight tell us

Change-Id: I5e3431ce40ad6e9114e98c9bf047a4312d42284d
Reviewed-on: http://gerrit.openafs.org/6966
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>

src/packaging/MacOS/buildpkg.sh.in

index 2b4f1cc..877c0bf 100644 (file)
@@ -45,28 +45,33 @@ PKGROOT=$CURDIR/pkgroot
 PKGRES=$CURDIR/pkgres
 DPKGROOT=$CURDIR/dpkgroot
 DPKGRES=$CURDIR/dpkgres
-if [ $majorvers -ge 7 ]; then
-    SEP=:
-    package=/Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker
-    if [ ! -x $package ]; then
-       echo "PackageMaker does not exist. Please run this script on a MacOS X system"
-      echo "with the DeveloperTools package installed"
-      exit 1
-    fi
+PACKAGEMAKER=""
+if [ -e "/Developer/usr/bin/packagemaker" ]; then
+    PACKAGEMAKER="/Developer/usr/bin/packagemaker"
 else
-    SEP=.
-    package=/usr/bin/package
-    if [ ! -f $package ]; then
-       echo "$package does not exist. Please run this script on a MacOS X system"
-      echo "with the BSD subsystem installed"
-      exit 1
+    PACKAGEMAKERS=$(mdfind "(kMDItemCFBundleIdentifier == 'com.apple.PackageMaker')")
+    if [ -z "$PACKAGEMAKERS" ]; then
+        echo "packagemaker not found"
+        exit 1
     fi
-    if grep -q 'set resDir = ""' $package ; then
-       echo $package is buggy.
-       echo remove the line \''set resDir = ""'\' from $package and try again
-       exit 1
+    # if there's a space, trying a for blows up
+    if [ -e "$PACKAGEMAKERS/Contents/MacOS/PackageMaker" ]; then
+            PACKAGEMAKER="$PACKAGEMAKERS/Contents/MacOS/PackageMaker"
+    else
+        for TRYAPP in $PACKAGEMAKERS
+        do
+            echo "$TRYAPP/Contents/MacOS/PackageMaker"
+            if [ -e "$TRYAPP/Contents/MacOS/PackageMaker" ]; then
+                PACKAGEMAKER="$TRYAPP/Contents/MacOS/PackageMaker"
+                break
+            fi
+        done
     fi
 fi
+if [ -z "$PACKAGEMAKER" ]; then
+    echo "packagemaker not found"
+    exit 1
+fi
 
 if [ $firstpass = yes ]; then
     if [ -x /usr/bin/curl ]; then
@@ -227,9 +232,9 @@ if [ $secondpass = yes ]; then
        cp background.jpg $DPKGRES/background.jpg
        chown -R root${SEP}wheel $DPKGRES
        rm -rf $CURDIR/OpenAFS-debug-extension.pkg
-       echo $package -build -p $CURDIR/OpenAFS-debug-extension.pkg -f $DPKGROOT -r $DPKGRES \
+       echo $PACKAGEMAKER -build -p $CURDIR/OpenAFS-debug-extension.pkg -f $DPKGROOT -r $DPKGRES \
            -i OpenAFS-debug.Info.plist -d OpenAFS-debug.Description.plist
-       $package -build -p $CURDIR/OpenAFS-debug-extension.pkg -f $DPKGROOT -r $DPKGRES \
+       $PACKAGEMAKER -build -p $CURDIR/OpenAFS-debug-extension.pkg -f $DPKGROOT -r $DPKGRES \
            -i OpenAFS-debug.Info.plist -d OpenAFS-debug.Description.plist
     fi
 
@@ -259,13 +264,13 @@ if [ $secondpass = yes ]; then
     chown -R root${SEP}wheel $PKGRES
     rm -rf $CURDIR/OpenAFS.pkg
     if [ $majorvers -ge 7 ]; then
-       echo $package -build -p $CURDIR/OpenAFS.pkg -f $PKGROOT -r $PKGRES \
+       echo $PACKAGEMAKER -build -p $CURDIR/OpenAFS.pkg -f $PKGROOT -r $PKGRES \
            -i OpenAFS.Info.plist -d OpenAFS.Description.plist
-       $package -build -p $CURDIR/OpenAFS.pkg -f $PKGROOT -r $PKGRES \
+       $PACKAGEMAKER -build -p $CURDIR/OpenAFS.pkg -f $PKGROOT -r $PKGRES \
            -i OpenAFS.Info.plist -d OpenAFS.Description.plist
     else
-       echo $package $PKGROOT $RESSRC/OpenAFS.info -r $PKGRES
-       (cd $CURDIR && $package $PKGROOT $RESSRC/OpenAFS.info -r $PKGRES)
+       echo $PACKAGEMAKER $PKGROOT $RESSRC/OpenAFS.info -r $PKGRES
+       (cd $CURDIR && $PACKAGEMAKER $PKGROOT $RESSRC/OpenAFS.info -r $PKGRES)
        #old versions of package didn't handle this properly
        if [ ! -r $CURDIR/OpenAFS.pkg/Contents ]; then
                mkdir -p $CURDIR/OpenAFS.pkg/Contents/Resources