Updated mcollective.init according to OSCI-658
[packages/precise/mcollective.git] / ext / osx / bldmacpkg
diff --git a/ext/osx/bldmacpkg b/ext/osx/bldmacpkg
new file mode 100644 (file)
index 0000000..6f3dc5f
--- /dev/null
@@ -0,0 +1,133 @@
+#!/bin/bash\r
+\r
+MPATH=''\r
+BETCDIR='/etc/mcollective'\r
+BRUBYDIR='/Library/Ruby/Site/1.8'\r
+BSBINDIR='/usr/sbin'\r
+BBINDIR='/usr/bin'\r
+BLIBEXECDIR='/usr/libexec/mcollective'\r
+BDOCDIR='/usr/share/doc/mcollective'\r
+BLAUNCHDIR='/Library/LaunchDaemons'\r
+\r
+if [ -z $1 ]; then \r
+    echo 'Please give the path to the MCollective source directory'\r
+    exit 1\r
+else\r
+    MPATH=$1\r
+fi\r
+\r
+function msg_stomp {\r
+    echo 'It is recommended to install stomp on this system using ruby gems'\r
+    exit 2\r
+}\r
+\r
+function msg_xcode {\r
+    echo 'It is required to have the latest XCode installed'\r
+    exit 3\r
+}\r
+\r
+#Make sure we have stomp so we can load mcollective\r
+/usr/bin/ruby <<EOF || msg_stomp\r
+require 'rubygems'\r
+require 'stomp'\r
+EOF\r
+\r
+#Make sure we have PackageMaker installed\r
+[ -x /Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker ] || msg_xcode\r
+\r
+#Get the MCollective version\r
+export RUBYLIB=$RUBYLIB:$MPATH/lib\r
+mcversion=$(/usr/bin/ruby <<EOF\r
+require 'mcollective'\r
+puts MCollective.version\r
+EOF\r
+)\r
+\r
+#Make our tmp directory\r
+tmpbase=`basename $0`\r
+common_tmpdir=`mktemp -d /tmp/${tmpbase}-common_$mcversion.XXXX` || exit 1\r
+client_tmpdir=`mktemp -d /tmp/${tmpbase}-client_$mcversion.XXXX` || exit 1\r
+tmpdir=`mktemp -d /tmp/${tmpbase}_$mcversion.XXXX` || exit 1\r
+\r
+#Build the common environment\r
+mkdir -p "$common_tmpdir/$BRUBYDIR"\r
+mkdir -p "$common_tmpdir/$BLIBEXECDIR"\r
+mkdir -p "$common_tmpdir/$BDOCDIR"\r
+\r
+cp -r $MPATH/lib/mcollective     $common_tmpdir/$BRUBYDIR/\r
+cp    $MPATH/lib/mcollective.rb  $common_tmpdir/$BRUBYDIR/\r
+cp -r $MPATH/plugins/mcollective $common_tmpdir/$BLIBEXECDIR/\r
+cp    $MPATH/COPYING             $common_tmpdir/$BDOCDIR/\r
+\r
+#Build the server environment\r
+mkdir -p "$tmpdir/$BSBINDIR"\r
+mkdir -p "$tmpdir/$BETCDIR"\r
+mkdir -p "$tmpdir/$BETCDIR/ssl/clients"\r
+mkdir -p "$tmpdir/$BLAUNCHDIR"\r
+\r
+cp $MPATH/mcollectived.rb     $tmpdir/$BSBINDIR/mcollectived\r
+cp $MPATH/etc/facts.yaml.dist $tmpdir/$BETCDIR/facts.yaml\r
+cp $MPATH/etc/server.cfg.dist $tmpdir/$BETCDIR/server.cfg\r
+#This is needed for macs since launchd will handle the daemonizing\r
+perl -i -pe 's/daemonize = 1/daemonize = 0/' $tmpdir/$BETCDIR/server.cfg\r
+\r
+#Build the client environment\r
+mkdir -p "$client_tmpdir/$BETCDIR"\r
+mkdir -p "$client_tmpdir/$BSBINDIR"\r
+\r
+cp $MPATH/etc/client.cfg.dist $client_tmpdir/$BETCDIR/client.cfg\r
+cp $MPATH/etc/rpc-help.erb    $client_tmpdir/$BETCDIR/\r
+cp $MPATH/mc-call-agent       $client_tmpdir/$BSBINDIR/\r
+cp $MPATH/mc-controller       $client_tmpdir/$BSBINDIR/\r
+cp $MPATH/mc-facts            $client_tmpdir/$BSBINDIR/\r
+cp $MPATH/mc-find-hosts       $client_tmpdir/$BSBINDIR/\r
+cp $MPATH/mc-inventory        $client_tmpdir/$BSBINDIR/\r
+cp $MPATH/mc-ping             $client_tmpdir/$BSBINDIR/\r
+cp $MPATH/mc-rpc              $client_tmpdir/$BSBINDIR/\r
+\r
+#Build our launchd property list file\r
+cat - > $tmpdir/$BLAUNCHDIR/org.marionette-collective.mcollective.plist <<EOF\r
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\r
+<plist version="1.0">\r
+<dict>\r
+        <key>EnvironmentVariables</key>\r
+        <dict>\r
+                <key>PATH</key>\r
+                <string>/sbin:/usr/sbin:/bin:/usr/bin</string>\r
+                <key>RUBYLIB</key>\r
+                <string>/Library/Ruby/Site/1.8</string>\r
+        </dict>\r
+        <key>Label</key>\r
+        <string>org.marionette-collective.mcollective</string>\r
+        <key>OnDemand</key>\r
+        <false/>\r
+        <key>KeepAlive</key>\r
+        <true/>\r
+        <key>ProgramArguments</key>\r
+        <array>\r
+                <string>/usr/sbin/mcollectived</string>\r
+                <string>--config=/etc/mcollective/server.cfg</string>\r
+        </array>\r
+        <key>RunAtLoad</key>\r
+        <true/>\r
+        <key>ServiceDescription</key>\r
+        <string>MCollective Server</string>\r
+        <key>ServiceIPC</key>\r
+        <false/>\r
+</dict>\r
+</plist>\r
+EOF\r
+\r
+#launchd complains if the permissions aren't right\r
+chmod 644 $tmpdir/$BLAUNCHDIR/org.marionette-collective.mcollective.plist\r
+\r
+#Make our Packages.  This requires XCode be installed\r
+/Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker -r $tmpdir --version $mcversion --title "MCollective" -l / -o MCollective_$mcversion.pkg -i org.marionette-collective.mcollective\r
+/Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker -r $common_tmpdir --version $mcversion --title "MCollective Common" -l / -o MCollective-Common_$mcversion.pkg -i org.marionette-collective.mcollective-common\r
+/Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker -r $client_tmpdir --version $mcversion --title "MCollective Client" -l / -o MCollective-Client_$mcversion.pkg -i org.marionette-collective.mcollective-client\r
+\r
+#Clean up\r
+rm -rf $tmpdir\r
+rm -rf $common_tmpdir\r
+rm -rf $client_tmpdir\r