Packaging support for MacOS X 10.10 "Yosemite"
[openafs.git] / src / packaging / MacOS / buildpkg.sh.in
index 309b0aa..93b7049 100644 (file)
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
 # Portions Copyright (c) 2003, 2006 Apple Computer, Inc.  All rights reserved.
 
 if [ -z "$1" ]; then
@@ -40,32 +40,34 @@ fi
 if [ $majorvers -eq 11 ]; then
   RELNAME="Lion"
 fi
+if [ $majorvers -eq 12 ]; then
+  RELNAME="MountainLion"
+fi
+if [ $majorvers -eq 13 ]; then
+  RELNAME="Mavericks"
+fi
+if [ $majorvers -eq 14 ]; then
+  RELNAME="Yosemite"
+fi
+
 
 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
-    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
-    fi
+    while IFS= read -d $'\0' -r file ; do
+        if [ -e "$file/Contents/MacOS/PackageMaker" ]; then
+            PACKAGEMAKER="$file/Contents/MacOS/PackageMaker"
+        fi
+    done < <(mdfind -0 "(kMDItemCFBundleIdentifier == 'com.apple.PackageMaker')")
+fi
+if [ -z "$PACKAGEMAKER" ]; then
+    echo "packagemaker not found"
+    exit 1
 fi
 
 if [ $firstpass = yes ]; then
@@ -107,6 +109,8 @@ if [ $firstpass = yes ]; then
        exit 1
     fi
 
+    SEP=:
+
     rm -rf $PKGROOT
     mkdir $PKGROOT
 
@@ -144,6 +148,7 @@ if [ $firstpass = yes ]; then
        echo /Network/afs:/var/db/openafs/cache:30000 > $PKGROOT/private/var/db/openafs/etc/cacheinfo.sample
     fi
     cp afs.conf $PKGROOT/private/var/db/openafs/etc/config/afs.conf.sample
+    cp krb5-weak.conf $PKGROOT/private/var/db/openafs/etc/krb5-weak.conf
 
     cp decode-panic $PKGROOT/Library/OpenAFS/Tools/tools
     chmod a+x $PKGROOT/Library/OpenAFS/Tools/tools/decode-panic
@@ -167,10 +172,11 @@ if [ $firstpass = yes ]; then
     chmod -R og-w $PKGROOT/private
     chmod  og-rx $PKGROOT/private/var/db/openafs/cache
 
-    mkdir -p $PKGROOT/usr/bin $PKGROOT/usr/sbin $PKGROOT/usr/share/man/man1 $PKGROOT/usr/share/man/man5 $PKGROOT/usr/share/man/man8
+    mkdir -p $PKGROOT/usr/bin $PKGROOT/usr/lib $PKGROOT/usr/sbin $PKGROOT/usr/share/man/man1 $PKGROOT/usr/share/man/man5 $PKGROOT/usr/share/man/man8
 
     BINLIST="fs klog klog.krb pagsh pagsh.krb pts sys tokens tokens.krb unlog unlog.krb aklog"
     ETCLIST="vos"
+    SHLIBLIST="libafsauthent.dylib libafsauthent.dylib.1 libafsauthent.dylib.1.1 libafshcrypto.dylib libafshcrypto.dylib.1 libafshcrypto.dylib.1.1 libafsrpc.dylib libafsrpc.dylib.1 libafsrpc.dylib.1.4 libkopenafs.dylib libkopenafs.dylib.1 libkopenafs.dylib.1.1 librokenafs.dylib librokenafs.dylib.1 librokenafs.dylib.1.1"
 
 # Should these be linked into /usr too?
     OTHER_BINLIST="bos cmdebug rxgen translate_et udebug xstat_cm_test xstat_fs_test"
@@ -182,6 +188,9 @@ if [ $firstpass = yes ]; then
     for f in $ETCLIST; do
        ln -s ../../Library/OpenAFS/Tools/etc/$f $PKGROOT/usr/sbin/$f
     done
+    for f in $SHLIBLIST; do
+       ln -s ../../Library/OpenAFS/Tools/lib/$f $PKGROOT/usr/lib/$f
+    done
     for f in `ls $PKGROOT/Library/OpenAFS/Tools/man/man1`; do
        gzip -9 $PKGROOT/Library/OpenAFS/Tools/man/man1/$f
        ln -s ../../../../Library/OpenAFS/Tools/man/man1/$f.gz $PKGROOT/usr/share/man/man1/$f.gz
@@ -222,9 +231,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
 
@@ -254,13 +263,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