aboutsummaryrefslogtreecommitdiff
path: root/contrib/osx/package.sh
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2005-01-05 02:46:25 +0000
committerNick Mathewson <nickm@torproject.org>2005-01-05 02:46:25 +0000
commit20142a2508b6fb486a7df4b61afae4522fd32571 (patch)
treeb0dc496d6fb31ea6f20489a8bf3aba8bb22d40e9 /contrib/osx/package.sh
parent041edf87548688b67477b9216268d18501160a4e (diff)
downloadtor-20142a2508b6fb486a7df4b61afae4522fd32571.tar
tor-20142a2508b6fb486a7df4b61afae4522fd32571.tar.gz
Forward-port OSX packaging stuff from maint branch
svn:r3299
Diffstat (limited to 'contrib/osx/package.sh')
-rw-r--r--contrib/osx/package.sh147
1 files changed, 147 insertions, 0 deletions
diff --git a/contrib/osx/package.sh b/contrib/osx/package.sh
new file mode 100644
index 000000000..0a2976226
--- /dev/null
+++ b/contrib/osx/package.sh
@@ -0,0 +1,147 @@
+#!/bin/sh
+# $Id$
+# Copyright 2004 Nick Mathewson.
+# See LICENSE in Tor distribution for licensing information.
+
+# This script builds a Macintosh OS X metapackage containing 4 packages:
+# - One for Tor.
+# - One for Privoxy.
+# - One for a tor-specific privoxy configuration script.
+# - One for Startup scripts for Tor.
+#
+# This script expects to be run from the toplevel makefile, with VERSION
+# set to the latest Tor version, and Tor already built.
+
+# Where have we put the zip file containing Privoxy? Edit this if your
+# privoxy lives somewhere else.
+PRIVOXY_PKG_ZIP=~/src/privoxy-setup/privoxyosx_setup_3.0.3.zip
+
+###
+# Helpful info on OS X packaging:
+# http://developer.apple.com/documentation/DeveloperTools/Conceptual/SoftwareDistribution/index.html
+# man packagemaker
+
+# Make sure VERSION is set, so we don't name the package "Tor Bundle.dmg"
+if [ "XX$VERSION" = 'XX' ]; then
+ echo "VERSION not set."
+ exit 1
+fi
+
+# Where will we put our temporary files?
+BUILD_DIR=/tmp/tor-osx-$$
+# Path to PackageMaker app.
+PACKAGEMAKER=/Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker
+
+umask 022
+
+echo I might ask you for your password now, so you can sudo.
+
+sudo rm -rf $BUILD_DIR
+mkdir $BUILD_DIR || exit 1
+for subdir in tor_packageroot tor_resources \
+ torstartup_packageroot \
+ privoxyconf_packageroot \
+ torbundle_resources \
+ output; do
+ mkdir $BUILD_DIR/$subdir
+done
+
+### Make Tor package.
+make install DESTDIR=$BUILD_DIR/tor_packageroot
+mv $BUILD_DIR/tor_packageroot/Library/Tor/torrc.sample $BUILD_DIR/tor_packageroot/Library/Tor/torrc
+cp contrib/osx/ReadMe.rtf $BUILD_DIR/tor_resources
+#cp contrib/osx/License.rtf $BUILD_DIR/tor_resources
+cp contrib/osx/TorPostflight $BUILD_DIR/tor_resources/postflight
+cp contrib/osx/addsysuser $BUILD_DIR/tor_resources/addsysuser
+cat <<EOF > $BUILD_DIR/tor_resources/Welcome.txt
+Tor: an anonymous Internet communication system
+
+Tor is a system for using the internet anonymously, and allowing
+others to do so.
+EOF
+
+find $BUILD_DIR/tor_packageroot -print0 |sudo xargs -0 chown root:admin
+
+$PACKAGEMAKER -build \
+ -p $BUILD_DIR/output/Tor.pkg \
+ -f $BUILD_DIR/tor_packageroot \
+ -r $BUILD_DIR/tor_resources \
+ -i contrib/osx/TorInfo.plist \
+ -d contrib/osx/TorDesc.plist
+
+### Put privoxy configuration package in place.
+mkdir -p $BUILD_DIR/privoxyconf_packageroot/Library/Privoxy
+cp contrib/osx/privoxy.config $BUILD_DIR/privoxyconf_packageroot/Library/Privoxy/config
+
+find $BUILD_DIR/privoxyconf_packageroot -print0 |sudo xargs -0 chown root:admin
+
+$PACKAGEMAKER -build \
+ -p $BUILD_DIR/output/privoxyconf.pkg \
+ -f $BUILD_DIR/privoxyconf_packageroot \
+ -i contrib/osx/PrivoxyConfInfo.plist \
+ -d contrib/osx/PrivoxyConfDesc.plist
+
+### Make Startup Script package
+
+mkdir -p $BUILD_DIR/torstartup_packageroot/Library/StartupItems/Tor
+cp contrib/osx/Tor contrib/osx/StartupParameters.plist \
+ $BUILD_DIR/torstartup_packageroot/Library/StartupItems/Tor
+
+find $BUILD_DIR/torstartup_packageroot -print0 | sudo xargs -0 chown root:admin
+$PACKAGEMAKER -build \
+ -p $BUILD_DIR/output/torstartup.pkg \
+ -f $BUILD_DIR/torstartup_packageroot \
+ -i contrib/osx/TorStartupInfo.plist \
+ -d contrib/osx/TorStartupDesc.plist
+
+### Assemble the metapackage. Packagemaker won't buld metapackages from
+# the command line, so we need to do it by hand.
+
+MPKG=$BUILD_DIR/output/Tor\ Bundle.mpkg
+mkdir -p "$MPKG/Contents/Resources"
+echo -n "pmkrpkg1" > "$MPKG/Contents/PkgInfo"
+cp contrib/osx/ReadMe.rtf "$MPKG/Contents/Resources"
+#cp contrib/osx/License.rtf "$MPKG/Contents/Resources"
+cp contrib/osx/TorBundleInfo.plist "$MPKG/Contents/Info.plist"
+cp contrib/osx/TorBundleWelcome.rtf "$MPKG/Contents/Resources/Welcome.rtf"
+cp contrib/osx/TorBundleDesc.plist "$MPKG/Contents/Resources/Description.plist"
+
+# Move all the subpackages into place. unzip Privoxy.pkg into place,
+# and fix its file permissions so we can rm -rf it later.
+mkdir $BUILD_DIR/output/.contained_packages
+mv $BUILD_DIR/output/*.pkg $BUILD_DIR/OUTPUT/.contained_packages
+( cd $BUILD_DIR/output/.contained_packages && unzip $PRIVOXY_PKG_ZIP && find Privoxy.pkg -type d -print0 | xargs -0 chmod u+w )
+
+### Copy readmes and licenses into toplevel.
+PRIVOXY_RESDIR=$BUILD_DIR/output/.contained_packages/Privoxy.pkg/Contents/Resources
+cp $PRIVOXY_RESDIR/License.html $BUILD_DIR/output/Privoxy\ License.html
+cp $PRIVOXY_RESDIR/ReadMe.txt $BUILD_DIR/output/Privoxy\ ReadMe.txt
+cp contrib/osx/ReadMe.rtf $BUILD_DIR/output/Tor\ ReadMe.rtf
+cp LICENSE $BUILD_DIR/output/Tor\ License.txt
+
+### Assemble documentation
+
+DOC=$BUILD_DIR/output/Documents
+mkdir $DOC
+cp doc/tor-doc.html doc/tor-doc.css $DOC
+cp AUTHORS $DOC/AUTHORS.txt
+groff doc/tor.1 -T ps -m man | ps2pdf - $DOC/tor-reference.pdf
+groff doc/tor-resolve.1 -T ps -m man | ps2pdf - $DOC/tor-resolve.pdf
+
+mkdir $DOC/Advanced
+cp doc/tor-spec.txt doc/rend-spec.txt doc/control-spec.txt doc/socks-extensions.txt $DOC/Advanced
+cp doc/CLIENTS $DOC/Advanced/CLIENTS.txt
+cp doc/HACKING $DOC/Advanced/HACKING.txt
+cp ChangeLog $DOC/Advanced/ChangeLog.txt
+
+### Package it all into a DMG
+
+find $BUILD_DIR/output -print0 | sudo xargs -0 chown root:admin
+
+mv $BUILD_DIR/output "$BUILD_DIR/Tor $VERSION Bundle"
+rm -f "Tor $VERSION Bundle.dmg"
+USER="`whoami`"
+sudo hdiutil create -format UDZO -srcfolder "$BUILD_DIR/Tor $VERSION Bundle" "Tor $VERSION Bundle.dmg"
+sudo chown "$USER" "Tor $VERSION Bundle.dmg"
+
+sudo rm -rf $BUILD_DIR