| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 | #!/bin/sh# $Id$# Copyright 2004-2005 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.## Read the documentation located in tor/doc/tor-osx-dmg-creation.txt on# how to build Tor for OSX# Where have we put the zip file containing Privoxy?  Edit this if your# privoxy lives somewhere else.PRIVOXY_PKG_ZIP=~/tmp/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--$OS-Bundle.dmg"if [ "XX$VERSION" = 'XX' ]; then  echo "VERSION not set."  exit 1fi## Determine OSX Version# map version to nameif [ -x /usr/bin/sw_vers ]; then# This is poor, yet functional.  We don't care about the 3rd number in# the OS version  OSVER=`/usr/bin/sw_vers | grep ProductVersion | cut -f2 | cut -d"." -f1,2`    case "$OSVER" in    	"10.5") OS="leopard";;	"10.4") OS="tiger";;	"10.3") OS="panther";;	"10.2") OS="jaguar";;	"10.1") OS="puma";;	"10.0") OS="cheetah";;	*) OS="unknown";;    esacelse  OS="unknown"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/PackageMakerumask 022echo I might ask you for your password now, so you can sudo.sudo rm -rf $BUILD_DIRmkdir $BUILD_DIR || exit 1for subdir in tor_packageroot tor_resources \              torstartup_packageroot \              privoxyconf_packageroot \              torbundle_resources \              output; do    mkdir $BUILD_DIR/$subdirdone### 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/torrccp contrib/osx/ReadMe.rtf $BUILD_DIR/tor_resources#cp contrib/osx/License.rtf $BUILD_DIR/tor_resourceschmod 755 contrib/osx/TorPostflightcp contrib/osx/TorPostflight $BUILD_DIR/tor_resources/postflightcp contrib/osx/addsysuser $BUILD_DIR/tor_resources/addsysusercp contrib/osx/Tor_Uninstaller.applescript $BUILD_DIR/tor_resources/Tor_Uninstaller.applescriptcp contrib/osx/uninstall_tor_bundle.sh $BUILD_DIR/tor_resources/uninstall_tor_bundle.shcp contrib/osx/package_list.txt $BUILD_DIR/tor_resources/package_list.txtcp contrib/osx/tor_logo.gif $BUILD_DIR/tor_resources/background.gifcat <<EOF > $BUILD_DIR/tor_resources/Welcome.txtTor: an anonymous Internet communication systemTor is a system for using the internet anonymously, and allowingothers to do so.EOF### Assemble documentationDOC=$BUILD_DIR/tor_resources/documentsmkdir $DOCcp doc/stylesheet.css doc/tor-doc-osx.html $DOCcp AUTHORS $DOC/AUTHORS.txtgroff doc/tor.1.in -T ps -m man | pstopdf -i -o $DOC/tor-reference.pdfgroff doc/tor-resolve.1 -T ps -m man | pstopdf -i -o $DOC/tor-resolve.pdfmkdir $DOC/Advancedcp doc/tor-spec.txt doc/rend-spec.txt doc/control-spec.txt doc/socks-extensions.txt doc/version-spec.txt $DOC/Advancedcp doc/HACKING $DOC/Advanced/HACKING.txtcp ChangeLog $DOC/Advanced/ChangeLog.txtfind $BUILD_DIR/tor_packageroot -print0 |sudo xargs -0 chown root:wheel$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/Privoxycp contrib/osx/privoxy.config $BUILD_DIR/privoxyconf_packageroot/Library/Privoxy/configfind $BUILD_DIR/privoxyconf_packageroot -print0 |sudo xargs -0 chown root:wheel$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 packagemkdir -p $BUILD_DIR/torstartup_packageroot/Library/StartupItems/Torcp contrib/osx/Tor contrib/osx/StartupParameters.plist \   $BUILD_DIR/torstartup_packageroot/Library/StartupItems/Torfind $BUILD_DIR/torstartup_packageroot -print0 | sudo xargs -0 chown root:wheel$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-$VERSION-$OS-Bundle.mpkgmkdir -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"cp contrib/osx/tor_logo.gif "$MPKG/Contents/Resources/background.gif"# 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_packagesmv $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/Resourcescp $PRIVOXY_RESDIR/License.html $BUILD_DIR/output/Privoxy\ License.htmlcp $PRIVOXY_RESDIR/ReadMe.txt $BUILD_DIR/output/Privoxy\ ReadMe.txtcp contrib/osx/ReadMe.rtf $BUILD_DIR/output/Tor\ ReadMe.rtfcp LICENSE $BUILD_DIR/output/Tor\ License.txt### Package it all into a DMGfind $BUILD_DIR/output -print0 | sudo xargs -0 chown root:wheelmv $BUILD_DIR/output "$BUILD_DIR/Tor-$VERSION-$OS-Bundle"rm -f "Tor-$VERSION-$OS-Bundle.dmg"USER="`whoami`"sudo hdiutil create -format UDZO -srcfolder "$BUILD_DIR/Tor-$VERSION-$OS-Bundle" "Tor-$VERSION-$OS-Bundle.dmg"sudo chown "$USER" "Tor-$VERSION-$OS-Bundle.dmg"sudo rm -rf $BUILD_DIR
 |