launchdaemon support for MacOS
authorDerrick Brashear <shadow@dementia.org>
Thu, 1 Oct 2009 08:34:09 +0000 (04:34 -0400)
committerDerrick Brashear <shadow|account-1000005@unknown>
Sat, 3 Oct 2009 05:36:20 +0000 (22:36 -0700)
the changes needed to switch from a StartupItem to a LaunchDaemon for
the MacOS OpenAFS client

Reviewed-on: http://gerrit.openafs.org/564
Tested-by: Claudio Bisegni <Claudio.Bisegni@lnf.infn.it>
Tested-by: Derrick Brashear <shadow@dementia.org>
Reviewed-by: Claudio Bisegni <Claudio.Bisegni@lnf.infn.it>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

src/packaging/MacOS/OpenAFS.post_install
src/packaging/MacOS/OpenAFS.pre_upgrade
src/packaging/MacOS/buildpkg.sh.in
src/packaging/MacOS/openafs.launchd.plist [new file with mode: 0644]
src/packaging/MacOS/openafs.launchdaemon [new file with mode: 0644]

index 9483b9d..72047bd 100644 (file)
@@ -123,5 +123,5 @@ elif [ -e config/afssettings ]; then
 fi
 
 #here we should run tools which configure the client, and then if it's enabled:
-/Library/StartupItems/OpenAFS/OpenAFS start
-
+#/Library/StartupItems/OpenAFS/OpenAFS start
+launchctl load -w /Library/LaunchDaemons/org.openafs.filesystems.afs.plist
index 9b1f721..aa10c37 100644 (file)
@@ -25,4 +25,8 @@ fi
 
 if [ -f /Library/StartupItems/OpenAFS/OpenAFS ]; then
   /Library/StartupItems/OpenAFS/OpenAFS stop
+else
+  if [ -f /Library/LaunchDaemons/org.openafs.filesystems.afs.plist ]; then
+    launchctl stop org.openafs.filesystems.afs
+  fi
 fi
index 087eab2..50d6f41 100644 (file)
@@ -113,20 +113,20 @@ if [ $firstpass = yes ]; then
     mkdir -p $PKGROOT/Library/OpenAFS/Tools
     (cd $BINDEST && pax -rw * $PKGROOT/Library/OpenAFS/Tools)
     cd $RESSRC
-    mkdir -p $PKGROOT/Library/StartupItems/OpenAFS
-    cp $BINDEST/root.client/usr/vice/etc/afs.rc  $PKGROOT/Library/StartupItems/OpenAFS/OpenAFS
-    chmod a+x $PKGROOT/Library/StartupItems/OpenAFS/OpenAFS
-    cp $BINDEST/root.client/usr/vice/etc/StartupParameters.plist  $PKGROOT/Library/StartupItems/OpenAFS/StartupParameters.plist
-    chown -R root${SEP}admin $PKGROOT/Library
+    mkdir -p $PKGROOT/Library/LaunchDaemons
     chmod -R o-w $PKGROOT/Library
-    chmod -R g+w $PKGROOT/Library
-    chown -R root${SEP}wheel $PKGROOT/Library/StartupItems
-    chmod -R og-w $PKGROOT/Library/StartupItems
+    chmod -R g-w $PKGROOT/Library
+    cp openafs.launchd.plist $PKGROOT/Library/LaunchDaemons/org.openafs.filesystems.afs.plist
+    chmod 644 $PKGROOT/Library/LaunchDaemons/org.openafs.filesystems.afs.plist
+    chown root${SEP}admin $PKGROOT/Library
+    chown -R root${SEP}wheel $PKGROOT/Library/LaunchDaemons
     chown -R root${SEP}wheel $PKGROOT/Library/OpenAFS/Tools
     chmod -R og-w $PKGROOT/Library/OpenAFS/Tools
 
     mkdir -p $PKGROOT/private/var/db/openafs/cache
     mkdir -p $PKGROOT/private/var/db/openafs/etc/config
+    cp openafs.launchdaemon $PKGROOT/private/var/db/openafs/etc/launchafs.sh
+    chmod 755 $PKGROOT/private/var/db/openafs/etc/launchafs.sh
     cp $CURDIR/CellServDB $PKGROOT/private/var/db/openafs/etc/CellServDB.master
     echo grand.central.org > $PKGROOT/private/var/db/openafs/etc/ThisCell.sample
     if [ $majorvers -ge 7 ]; then
diff --git a/src/packaging/MacOS/openafs.launchd.plist b/src/packaging/MacOS/openafs.launchd.plist
new file mode 100644 (file)
index 0000000..dac5c7b
--- /dev/null
@@ -0,0 +1,17 @@
+<?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">
+<dict>
+        <key>Label</key>
+        <string>org.openafs.filesystems.afs</string>
+        <key>ExitTimeOut</key>
+       <integer>20</integer>
+        <key>ProgramArguments</key>
+        <array>
+                <string>/private/var/db/openafs/etc/launchafs.sh</string>
+        </array>
+        <key>RunAtLoad</key>
+        <true/>
+</dict>
+</plist>
diff --git a/src/packaging/MacOS/openafs.launchdaemon b/src/packaging/MacOS/openafs.launchdaemon
new file mode 100644 (file)
index 0000000..cbc4b99
--- /dev/null
@@ -0,0 +1,19 @@
+#!/bin/bash
+export BINDEST=/Library/OpenAFS/Tools
+
+function afsshutdown()
+{
+    logger -p local0.notice "Stopping OpenAFS"
+    $BINDEST/root.client/usr/vice/etc/afs.rc stop
+    exit 0
+}
+
+logger -p local0.notice "Starting OpenAFS"
+
+$BINDEST/root.client/usr/vice/etc/afs.rc start
+
+trap 'afsshutdown' TERM KILL INT QUIT HUP
+
+while true; do sleep 20; done
+exit 0
+