Update version according to OSCI-856
[packages/precise/mcollective.git] / ext / osx / bldmacpkg
index 6f3dc5fe68738337e21f8863641a6abb0391e301..ee34f28ca3170bcbe091fad31f1d484735f81e46 100644 (file)
-#!/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
+#!/bin/bash
+MPATH="$1"
+BETCDIR='/etc/mcollective'
+BRUBYDIR='/Library/Ruby/Site/1.8'
+BSBINDIR='/usr/sbin'
+BBINDIR='/usr/bin'
+BLIBEXECDIR='/usr/libexec/mcollective'
+BDOCDIR='/usr/share/doc/mcollective'
+BLAUNCHDIR='/Library/LaunchDaemons'
+BLOGDIR='/var/log/mcollective'
+PACKAGEMAKER='/Applications/PackageMaker.app/Contents/MacOS/PackageMaker'
+
+if [ -z $MPATH ]; then
+  echo 'Please give the path to the MCollective source directory'
+  exit 1
+fi
+
+msg_stomp() {
+  echo "It is recommended to install stomp on this system using ruby gems"
+  exit 2
+}
+
+msg_xcode() {
+  echo 'It is required to have the latest XCode installed'
+  exit 3
+}
+
+# Make sure we have stomp so we can load mcollective
+/usr/bin/ruby <<EOF || msg_stomp
+require 'rubygems'
+require 'stomp'
+EOF
+
+# Make sure we have PackageMaker installed
+[ -x $PACKAGEMAKER ] || msg_xcode
+
+# Get the MCollective version
+export RUBYLIB=$RUBYLIB:$MPATH/lib
+mcversion=$(/usr/bin/ruby <<EOF
+require 'mcollective'
+puts MCollective.version
+EOF
+)
+
+# Make our tmp directory
+tmpbase=`basename $0`
+common_tmpdir=`mktemp -d /tmp/${tmpbase}-common_$mcversion.XXXX` || exit 1
+client_tmpdir=`mktemp -d /tmp/${tmpbase}-client_$mcversion.XXXX` || exit 1
+tmpdir=`mktemp -d /tmp/${tmpbase}_$mcversion.XXXX` || exit 1
+pkgdir=`mktemp -d /tmp/${tmpbase}_${mcversion}_packages.XXXX` || exit 1
+
+# Build the common environment
+mkdir -p "$common_tmpdir/$BRUBYDIR"
+mkdir -p "$common_tmpdir/$BLIBEXECDIR"
+mkdir -p "$common_tmpdir/$BDOCDIR"
+mkdir -p "$common_tmpdir/$BLOGDIR"
+
+cp -r $MPATH/lib/mcollective     $common_tmpdir/$BRUBYDIR/
+cp    $MPATH/lib/mcollective.rb  $common_tmpdir/$BRUBYDIR/
+cp -r $MPATH/plugins/mcollective $common_tmpdir/$BLIBEXECDIR/
+cp    $MPATH/COPYING             $common_tmpdir/$BDOCDIR/
+
+# Build the server environment
+mkdir -p "$tmpdir/$BSBINDIR"
+mkdir -p "$tmpdir/$BETCDIR"
+mkdir -p "$tmpdir/$BETCDIR/ssl/clients"
+mkdir -p "$tmpdir/$BLAUNCHDIR"
+
+cp $MPATH/bin/mcollectived    $tmpdir/$BSBINDIR/mcollectived
+cp $MPATH/etc/facts.yaml.dist $tmpdir/$BETCDIR/facts.yaml
+cp $MPATH/etc/server.cfg.dist $tmpdir/$BETCDIR/server.cfg
+
+# This is needed for macs since launcd will handle daemonizing
+perl -i -pe 's/daemonize = 1/daemonize = 0/' $tmpdir/$BETCDIR/server.cfg
+
+# Build the client environment
+mkdir -p "$client_tmpdir/$BETCDIR"
+mkdir -p "$client_tmpdir/$BSBINDIR"
+
+cp $MPATH/etc/client.cfg.dist $client_tmpdir/$BETCDIR/client.cfg
+cp $MPATH/etc/rpc-help.erb    $client_tmpdir/$BETCDIR/
+cp $MPATH/bin/mc-call-agent   $client_tmpdir/$BSBINDIR/
+cp $MPATH/bin/mco             $client_tmpdir/$BSBINDIR/
+
+#Build our launchd property list file
+cat - > $tmpdir/$BLAUNCHDIR/org.marionette-collective.mcollective.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">
+<dict>
+        <key>EnvironmentVariables</key>
+        <dict>
+                <key>PATH</key>
+                <string>/sbin:/usr/sbin:/bin:/usr/bin</string>
+                <key>RUBYLIB</key>
+                <string>/Library/Ruby/Site/1.8</string>
+        </dict>
+        <key>Label</key>
+        <string>org.marionette-collective.mcollective</string>
+        <key>OnDemand</key>
+        <false/>
+        <key>KeepAlive</key>
+        <true/>
+        <key>ProgramArguments</key>
+        <array>
+                <string>/usr/sbin/mcollectived</string>
+                <string>--config=/etc/mcollective/server.cfg</string>
+        </array>
+        <key>RunAtLoad</key>
+        <true/>
+        <key>ServiceDescription</key>
+        <string>MCollective Server</string>
+        <key>ServiceIPC</key>
+        <false/>
+</dict>
+</plist>
+EOF
+
+
+#Make our Packages.  This requires XCode be installed
+$PACKAGEMAKER -r $tmpdir --version $mcversion --title "MCollective" -l / -o $pkgdir/MCollective_$mcversion.pkg -i org.marionette-collective.mcollective
+$PACKAGEMAKER -r $common_tmpdir --version $mcversion --title "MCollective Common" -l / -o $pkgdir/MCollective-Common_$mcversion.pkg -i org.marionette-collective.mcollective-common
+$PACKAGEMAKER -r $client_tmpdir --version $mcversion --title "MCollective Client" -l / -o $pkgdir/MCollective-Client_$mcversion.pkg -i org.marionette-collective.mcollective-client
+
+# Make sure that we install the stomp gem, this is ugly and should be part of the package
+cat - > $pkgdir/MCollective-Common_$mcversion.pkg/Contents/Resources/postflight <<EOF
+#!/bin/bash
+/usr/bin/gem install --no-ri --no-rdoc stomp
+EOF
+chmod +x $pkgdir/MCollective-Common_$mcversion.pkg/Contents/Resources/postflight
+
+# launchd complains if the permissions aren't right, this is a dumb hack that
+# I needed since PackageMaker doesn't seem to respect permissions (originally had chmod 644 in the tmpdir)
+cat - > $pkgdir/MCollective_$mcversion.pkg/Contents/Resources/postflight <<EOF
+#!/bin/bash
+chmod 644 /Library/LaunchDaemons/org.marionette-collective.mcollective.plist
+EOF
+chmod +x $pkgdir/MCollective_$mcversion.pkg/Contents/Resources/postflight
+
+# Create a r/o compressed dmg from our pkgs
+hdiutil create -srcfolder $pkgdir -format UDZO -scrub -imagekey zlib-level=9 -volname "mcollective-$mcversion" mcollective-$mcversion.dmg
+
+#Clean up
+rm -rf $tmpdir
+rm -rf $common_tmpdir
+rm -rf $client_tmpdir
+rm -rf $pkgdir