diff options
author | Nick Mathewson <nickm@torproject.org> | 2005-01-05 02:46:25 +0000 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2005-01-05 02:46:25 +0000 |
commit | 20142a2508b6fb486a7df4b61afae4522fd32571 (patch) | |
tree | b0dc496d6fb31ea6f20489a8bf3aba8bb22d40e9 /contrib/osx/package.sh | |
parent | 041edf87548688b67477b9216268d18501160a4e (diff) | |
download | tor-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.sh | 147 |
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 |