package.sh 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. #!/bin/sh
  2. # $Id$
  3. # Copyright 2004-2005 Nick Mathewson.
  4. # See LICENSE in Tor distribution for licensing information.
  5. # This script builds a Macintosh OS X metapackage containing 4 packages:
  6. # - One for Tor.
  7. # - One for Privoxy.
  8. # - One for a tor-specific privoxy configuration script.
  9. # - One for Startup scripts for Tor.
  10. #
  11. # This script expects to be run from the toplevel makefile, with VERSION
  12. # set to the latest Tor version, and Tor already built.
  13. #
  14. # Building Tor for OSX in 3 easy steps:
  15. # 1) Make sure PRIVOXY_PKG_ZIP= is set to the correct path to find privoxyosx_setup_3.0.3.zip
  16. # 2) In the top level, this means ~/tor, not tor/contrib/osx, do a configure with these parameters:
  17. # configure --prefix=/Library/Tor --bindir=/Library/Tor --sysconfdir=/Library
  18. # 3) In same top level dir, make dist-osx. You'll have a .dmg file when complete.
  19. # Where have we put the zip file containing Privoxy? Edit this if your
  20. # privoxy lives somewhere else.
  21. PRIVOXY_PKG_ZIP=~/src/privoxy-setup/privoxyosx_setup_3.0.3.zip
  22. ###
  23. # Helpful info on OS X packaging:
  24. # http://developer.apple.com/documentation/DeveloperTools/Conceptual/SoftwareDistribution/index.html
  25. # man packagemaker
  26. # Make sure VERSION is set, so we don't name the package "Tor Bundle.dmg"
  27. if [ "XX$VERSION" = 'XX' ]; then
  28. echo "VERSION not set."
  29. exit 1
  30. fi
  31. # Where will we put our temporary files?
  32. BUILD_DIR=/tmp/tor-osx-$$
  33. # Path to PackageMaker app.
  34. PACKAGEMAKER=/Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker
  35. umask 022
  36. echo I might ask you for your password now, so you can sudo.
  37. sudo rm -rf $BUILD_DIR
  38. mkdir $BUILD_DIR || exit 1
  39. for subdir in tor_packageroot tor_resources \
  40. torstartup_packageroot \
  41. privoxyconf_packageroot \
  42. torbundle_resources \
  43. output; do
  44. mkdir $BUILD_DIR/$subdir
  45. done
  46. ### Make Tor package.
  47. make install DESTDIR=$BUILD_DIR/tor_packageroot
  48. #mv $BUILD_DIR/tor_packageroot/Library/Tor/torrc.sample $BUILD_DIR/tor_packageroot/Library/Tor/torrc
  49. cp contrib/osx/ReadMe.rtf $BUILD_DIR/tor_resources
  50. #cp contrib/osx/License.rtf $BUILD_DIR/tor_resources
  51. chmod 755 contrib/osx/TorPostflight
  52. cp contrib/osx/TorPostflight $BUILD_DIR/tor_resources/postflight
  53. cp contrib/osx/addsysuser $BUILD_DIR/tor_resources/addsysuser
  54. cat <<EOF > $BUILD_DIR/tor_resources/Welcome.txt
  55. Tor: an anonymous Internet communication system
  56. Tor is a system for using the internet anonymously, and allowing
  57. others to do so.
  58. EOF
  59. find $BUILD_DIR/tor_packageroot -print0 |sudo xargs -0 chown root:wheel
  60. $PACKAGEMAKER -build \
  61. -p $BUILD_DIR/output/Tor.pkg \
  62. -f $BUILD_DIR/tor_packageroot \
  63. -r $BUILD_DIR/tor_resources \
  64. -i contrib/osx/TorInfo.plist \
  65. -d contrib/osx/TorDesc.plist
  66. ### Put privoxy configuration package in place.
  67. mkdir -p $BUILD_DIR/privoxyconf_packageroot/Library/Privoxy
  68. cp contrib/osx/privoxy.config $BUILD_DIR/privoxyconf_packageroot/Library/Privoxy/config
  69. find $BUILD_DIR/privoxyconf_packageroot -print0 |sudo xargs -0 chown root:wheel
  70. $PACKAGEMAKER -build \
  71. -p $BUILD_DIR/output/privoxyconf.pkg \
  72. -f $BUILD_DIR/privoxyconf_packageroot \
  73. -i contrib/osx/PrivoxyConfInfo.plist \
  74. -d contrib/osx/PrivoxyConfDesc.plist
  75. ### Make Startup Script package
  76. mkdir -p $BUILD_DIR/torstartup_packageroot/Library/StartupItems/Tor
  77. cp contrib/osx/Tor contrib/osx/StartupParameters.plist \
  78. $BUILD_DIR/torstartup_packageroot/Library/StartupItems/Tor
  79. find $BUILD_DIR/torstartup_packageroot -print0 | sudo xargs -0 chown root:wheel
  80. $PACKAGEMAKER -build \
  81. -p $BUILD_DIR/output/torstartup.pkg \
  82. -f $BUILD_DIR/torstartup_packageroot \
  83. -i contrib/osx/TorStartupInfo.plist \
  84. -d contrib/osx/TorStartupDesc.plist
  85. ### Assemble the metapackage. Packagemaker won't buld metapackages from
  86. # the command line, so we need to do it by hand.
  87. MPKG=$BUILD_DIR/output/Tor\ Bundle.mpkg
  88. mkdir -p "$MPKG/Contents/Resources"
  89. echo -n "pmkrpkg1" > "$MPKG/Contents/PkgInfo"
  90. cp contrib/osx/ReadMe.rtf "$MPKG/Contents/Resources"
  91. #cp contrib/osx/License.rtf "$MPKG/Contents/Resources"
  92. cp contrib/osx/TorBundleInfo.plist "$MPKG/Contents/Info.plist"
  93. cp contrib/osx/TorBundleWelcome.rtf "$MPKG/Contents/Resources/Welcome.rtf"
  94. cp contrib/osx/TorBundleDesc.plist "$MPKG/Contents/Resources/Description.plist"
  95. # Move all the subpackages into place. unzip Privoxy.pkg into place,
  96. # and fix its file permissions so we can rm -rf it later.
  97. mkdir $BUILD_DIR/output/.contained_packages
  98. mv $BUILD_DIR/output/*.pkg $BUILD_DIR/OUTPUT/.contained_packages
  99. ( cd $BUILD_DIR/output/.contained_packages && unzip $PRIVOXY_PKG_ZIP && find Privoxy.pkg -type d -print0 | xargs -0 chmod u+w )
  100. ### Copy readmes and licenses into toplevel.
  101. PRIVOXY_RESDIR=$BUILD_DIR/output/.contained_packages/Privoxy.pkg/Contents/Resources
  102. cp $PRIVOXY_RESDIR/License.html $BUILD_DIR/output/Privoxy\ License.html
  103. cp $PRIVOXY_RESDIR/ReadMe.txt $BUILD_DIR/output/Privoxy\ ReadMe.txt
  104. cp contrib/osx/ReadMe.rtf $BUILD_DIR/output/Tor\ ReadMe.rtf
  105. cp LICENSE $BUILD_DIR/output/Tor\ License.txt
  106. ### Assemble documentation
  107. DOC=$BUILD_DIR/output/Documents
  108. mkdir $DOC
  109. cp doc/tor-doc.html doc/tor-doc.css $DOC
  110. cp AUTHORS $DOC/AUTHORS.txt
  111. groff doc/tor.1 -T ps -m man | ps2pdf - $DOC/tor-reference.pdf
  112. groff doc/tor-resolve.1 -T ps -m man | ps2pdf - $DOC/tor-resolve.pdf
  113. mkdir $DOC/Advanced
  114. cp doc/tor-spec.txt doc/rend-spec.txt doc/control-spec.txt doc/socks-extensions.txt doc/version-spec.txt $DOC/Advanced
  115. cp doc/HACKING $DOC/Advanced/HACKING.txt
  116. cp ChangeLog $DOC/Advanced/ChangeLog.txt
  117. ### Package it all into a DMG
  118. find $BUILD_DIR/output -print0 | sudo xargs -0 chown root:wheel
  119. mv $BUILD_DIR/output "$BUILD_DIR/Tor $VERSION Bundle"
  120. rm -f "Tor $VERSION Bundle.dmg"
  121. USER="`whoami`"
  122. sudo hdiutil create -format UDZO -srcfolder "$BUILD_DIR/Tor $VERSION Bundle" "Tor $VERSION Bundle.dmg"
  123. sudo chown "$USER" "Tor $VERSION Bundle.dmg"
  124. sudo rm -rf $BUILD_DIR