123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- #!/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.
- #
- ######################
- # The following steps are the exact steps used to produce the "official" OSX build of tor
- #
- # Summary:
- # 1) Compile and install the latest release of libevent
- # 2) Acquire privoxyosx_setup_3.0.3.zip. Remember where you put this file.
- # 3) Acquire and install your preferred version of tor via "make dist-osx"
- #
- # Details:
- # 1) You need to download the latest libevent from http://www.monkey.org/~provos/libevent/
- # 1a) At a shell prompt, export CFLAGS="-march=powerpc -mtune=powerpc"
- # 1b) The first step of compiling libevent is to configure it as follows:
- # configure --enable-static --disable-shared
- # 1c) Complete the "make" and "make install".
- # 2) Get your preferred version of the tor source from tor.eff.org
- # 2a) Edit /path/to/tor/contrib/osx/package.sh (the file you are reading) and confirm PRIVOXY_PKG_ZIP= is set
- # to the correct path to find the file privoxyosx_setup_3.0.3.zip
- # 2b) In the top level, this means /path/to/tor/, not tor/contrib/osx, do a configure with these parameters:
- # configure --prefix=/Library/Tor --bindir=/Library/Tor --sysconfdir=/Library
- # 2c) In same top level dir, do a "make dist-osx". You'll have a .dmg file when complete. Install from this dmg.
- # 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 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
- chmod 755 contrib/osx/TorPostflight
- 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: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/Privoxy
- cp contrib/osx/privoxy.config $BUILD_DIR/privoxyconf_packageroot/Library/Privoxy/config
- find $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 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: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\ 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 | pstopdf - $DOC/tor-reference.pdf
- groff doc/tor-resolve.1 -T ps -m man | pstopdf - $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/version-spec.txt $DOC/Advanced
- 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:wheel
- 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
|