commit 535c7ebbdcdc0c5def8ec640e2f8626fb7396f78 Author: Mike Perry mikeperry-git@torproject.org Date: Wed Feb 26 10:45:24 2014 -0800
Bug #4261: Generate DMGs for MacOS.
Compressed with bzip2 (UDBZ) and complete with a background and desktop shortcut! --- Bundle-Data/mac.dmg/.DS_Store | Bin 0 -> 12292 bytes Bundle-Data/mac.dmg/._Desktop | Bin 0 -> 303592 bytes Bundle-Data/mac.dmg/.background/background.png | Bin 0 -> 50020 bytes Bundle-Data/mac.dmg/Desktop | Bin 0 -> 300120 bytes gitian/build-helpers/ddmg.sh | 28 ++++++ gitian/descriptors/mac/gitian-bundle.yml | 108 ++++++++++++++++-------- gitian/fetch-inputs.sh | 1 + gitian/mkbundle-mac.sh | 7 +- gitian/versions | 1 + gitian/versions.alpha | 1 + gitian/versions.beta | 1 + gitian/versions.diff | 45 ++++++++++ gitian/versions.nightly | 1 + 13 files changed, 156 insertions(+), 37 deletions(-)
diff --git a/Bundle-Data/mac.dmg/.DS_Store b/Bundle-Data/mac.dmg/.DS_Store new file mode 100644 index 0000000..9bec18c Binary files /dev/null and b/Bundle-Data/mac.dmg/.DS_Store differ diff --git a/Bundle-Data/mac.dmg/._Desktop b/Bundle-Data/mac.dmg/._Desktop new file mode 100644 index 0000000..a1e0b7f Binary files /dev/null and b/Bundle-Data/mac.dmg/._Desktop differ diff --git a/Bundle-Data/mac.dmg/.background/background.png b/Bundle-Data/mac.dmg/.background/background.png new file mode 100644 index 0000000..94e4584 Binary files /dev/null and b/Bundle-Data/mac.dmg/.background/background.png differ diff --git a/Bundle-Data/mac.dmg/Desktop b/Bundle-Data/mac.dmg/Desktop new file mode 100644 index 0000000..3c88450 Binary files /dev/null and b/Bundle-Data/mac.dmg/Desktop differ diff --git a/gitian/build-helpers/ddmg.sh b/gitian/build-helpers/ddmg.sh new file mode 100755 index 0000000..f9f54da --- /dev/null +++ b/gitian/build-helpers/ddmg.sh @@ -0,0 +1,28 @@ +#!/bin/sh +# Crappy deterministic dmg wrapper +export LC_ALL=C + +DMGFILE=$1 +shift + +# Attempt to normalize inode ordering.. +# XXX: the genisoimage -path-list argument seems broken +mkdir -p ~/build/tmp/dmg +cd $@ +for i in `find . | sort` +do + if [ -d $i ]; + then + mkdir -p ~/build/tmp/dmg/$i + else + cp --parents -d --preserve=all $i ~/build/tmp/dmg/ + fi +done + +find ~/build/tmp/dmg -executable -exec chmod 700 {} ; +find ~/build/tmp/dmg ! -executable -exec chmod 600 {} ; + +genisoimage -D -V "Tor Browser" -no-pad -R -apple -o tbb-uncompressed.dmg ~/build/tmp/dmg/ +~/build/libdmg-hfsplus/dmg/dmg dmg tbb-uncompressed.dmg $DMGFILE +rm tbb-uncompressed.dmg +rm -rf ~/build/tmp/dmg/ diff --git a/gitian/descriptors/mac/gitian-bundle.yml b/gitian/descriptors/mac/gitian-bundle.yml index 428dbee..da7e918 100644 --- a/gitian/descriptors/mac/gitian-bundle.yml +++ b/gitian/descriptors/mac/gitian-bundle.yml @@ -12,6 +12,11 @@ packages: - "nsis" - "faketime" - "python" +- "hfsprogs" +- "genisoimage" +- "cmake" +- "zlib1g-dev" +- "libbz2-dev" reference_datetime: "2000-01-01 00:00:00" remotes: - "url": "https://git.torproject.org/tor-launcher.git" @@ -20,6 +25,8 @@ remotes: "dir": "torbutton" - "url": "https://git.torproject.org/https-everywhere.git" "dir": "https-everywhere" +- "url": "https://github.com/vasi/libdmg-hfsplus.git" + "dir": "libdmg-hfsplus" files: # TODO: Can we use an env for this file+version?? - "tor-browser-mac32-gbuilt.zip" @@ -28,9 +35,11 @@ files: - "torrc-defaults-appendix-mac" - "relativelink-src.zip" - "mac-skeleton.zip" +- "mac-dmg.zip" - "mac-langpacks.zip" - "noscript@noscript.net.xpi" - "dzip.sh" +- "ddmg.sh" - "bare-version" - "bundle.inputs" - "versions" @@ -46,12 +55,20 @@ script: | export TORBROWSER_VERSION=`cat bare-version` export LC_ALL=C umask 0022 + if [ ${TORBROWSER_VERSION::3} == "3.5" ]; then + export TORBROWSER_APP="TorBrowserBundle" + export TORBROWSER_NAME="TorBrowserBundle" + else + export TORBROWSER_APP="TorBrowser" + export TORBROWSER_NAME="TorBrowserBundle" + fi # mkdir -p $OUTDIR/ - mkdir -p TorBrowserBundle.app/Data/Browser/profile.default/extensions/https-everywhere@eff.org - mkdir -p TorBrowserBundle.app/Data/Browser/Caches - mkdir -p TorBrowserBundle.app/Contents/MacOS/TorBrowser.app/Contents/MacOS/ - mkdir -p TorBrowserBundle.app/Docs/sources + mkdir -p dmg + mkdir -p $TORBROWSER_NAME.app/Data/Browser/profile.default/extensions/https-everywhere@eff.org + mkdir -p $TORBROWSER_NAME.app/Data/Browser/Caches + mkdir -p $TORBROWSER_NAME.app/Contents/MacOS/TorBrowser.app/Contents/MacOS/ + mkdir -p $TORBROWSER_NAME.app/Docs/sources # cd tor-launcher make clean @@ -62,7 +79,7 @@ script: | unzip ../*.xpi rm ../*.xpi ~/build/dzip.sh ../tor-launcher@torproject.org.xpi . - mv ../tor-launcher@torproject.org.xpi ../../../TorBrowserBundle.app/Data/Browser/profile.default/extensions/tor-launcher@torproject.org.xpi + mv ../tor-launcher@torproject.org.xpi ../../../$TORBROWSER_NAME.app/Data/Browser/profile.default/extensions/tor-launcher@torproject.org.xpi cd ../../../ # cd torbutton @@ -74,7 +91,7 @@ script: | unzip ../*.xpi rm ../*.xpi ~/build/dzip.sh ../torbutton@torproject.org.xpi . - mv ../torbutton@torproject.org.xpi ../../../TorBrowserBundle.app/Data/Browser/profile.default/extensions/torbutton@torproject.org.xpi + mv ../torbutton@torproject.org.xpi ../../../$TORBROWSER_NAME.app/Data/Browser/profile.default/extensions/torbutton@torproject.org.xpi cd ../../../ # cd https-everywhere @@ -82,11 +99,11 @@ script: | # makexpi.sh. See https://trac.torproject.org/projects/tor/ticket/10066 rm -f .git/refs/heads/master ./makexpi.sh - cp ./pkg/*.xpi ../TorBrowserBundle.app/Data/Browser/profile.default/extensions/https-everywhere@eff.org.xpi + cp ./pkg/*.xpi ../$TORBROWSER_NAME.app/Data/Browser/profile.default/extensions/https-everywhere@eff.org.xpi cd .. # - cp *.xpi ./TorBrowserBundle.app/Data/Browser/profile.default/extensions/ - cd ./TorBrowserBundle.app/Data/Browser/profile.default/extensions/ + cp *.xpi ./$TORBROWSER_NAME.app/Data/Browser/profile.default/extensions/ + cd ./$TORBROWSER_NAME.app/Data/Browser/profile.default/extensions/ mv noscript@noscript.net.xpi {73a6fe31-595d-460b-a920-fcc0f8843232}.xpi cd https-everywhere@eff.org unzip ../https-everywhere@eff.org.xpi @@ -95,14 +112,14 @@ script: | # unzip relativelink-src.zip cd RelativeLink - cp RelativeLinkOSX.sh ../TorBrowserBundle.app/Contents/MacOS/TorBrowserBundle + cp RelativeLinkOSX.sh ../$TORBROWSER_NAME.app/Contents/MacOS/TorBrowserBundle cd .. # unzip ~/build/tor-mac$GBUILD_BITS-gbuilt.zip if [ $BUILD_PT_BUNDLES ]; then unzip ~/build/pluggable-transports-mac$GBUILD_BITS-gbuilt.zip fi - cd TorBrowserBundle.app + cd $TORBROWSER_NAME.app unzip ~/build/mac-skeleton.zip sed -i -e "s/TORBROWSER_VERSION/$TORBROWSER_VERSION/" Contents/Info.plist unzip ~/build/tbb-docs.zip @@ -117,40 +134,54 @@ script: | cd ../../../ # # Copy reproducibility info - cp versions TorBrowserBundle.app/Docs/sources/ - cp bundle.inputs TorBrowserBundle.app/Docs/sources/bundle.inputs + cp versions $TORBROWSER_NAME.app/Docs/sources/ + cp bundle.inputs $TORBROWSER_NAME.app/Docs/sources/bundle.inputs # - # FF24 puts the prefs in a different jar: - if [ -f TorBrowserBundle.app/Contents/MacOS/TorBrowser.app/Contents/MacOS/browser/omni.ja ]; then - pushd TorBrowserBundle.app/Contents/MacOS/TorBrowser.app/Contents/MacOS/browser/ - else - pushd TorBrowserBundle.app/Contents/MacOS/TorBrowser.app/Contents/MacOS/ - fi + # Set up DMG skeleton + cd libdmg-hfsplus + cmake CMakeLists.txt + cd dmg + make + cd ../../ + cd dmg + unzip ~/build/mac-dmg.zip + cd .. + # + # FF24 puts the prefs in the browser jar: + pushd $TORBROWSER_NAME.app/Contents/MacOS/TorBrowser.app/Contents/MacOS/browser/ unzip omni.ja defaults/preferences/000-tor-browser.js cp defaults/preferences/000-tor-browser.js ~/build/ echo "pref("general.useragent.locale", "en-US");" >> defaults/preferences/000-tor-browser.js zip -Xm omni.ja defaults/preferences/000-tor-browser.js popd - # XXX: DMG plz - cp -a TorBrowserBundle.app TorBrowserBundle_en-US.app - ~/build/dzip.sh $OUTDIR/TorBrowserBundle-${TORBROWSER_VERSION}-osx${GBUILD_BITS}_en-US.zip TorBrowserBundle_en-US.app - rm -rf TorBrowserBundle_en-US.app + # + if [ ${TORBROWSER_VERSION::3} == "3.5" ]; then + cp -a ~/build/$TORBROWSER_NAME.app ~/build/${TORBROWSER_NAME}_en-US.app + ~/build/dzip.sh $OUTDIR/TorBrowserBundle-${TORBROWSER_VERSION}-osx${GBUILD_BITS}_en-US.zip ${TORBROWSER_NAME}_en-US.app + rm -rf ~/build/${TORBROWSER_NAME}_en-US.app + else + cp -a ~/build/$TORBROWSER_NAME.app ~/build/dmg/$TORBROWSER_APP.app + ~/build/ddmg.sh $OUTDIR/TorBrowser-${TORBROWSER_VERSION}-osx${GBUILD_BITS}_en-US.dmg ~/build/dmg + rm -rf ~/build/dmg/$TORBROWSER_APP.app + fi + mv $TORBROWSER_NAME.app ${TORBROWSER_NAME}_plain.app # unzip mac-langpacks.zip cd mac-langpacks - for i in *.xpi + for LANG in $BUNDLE_LOCALES do - LANG=`basename $i .xpi` - cp -a ../TorBrowserBundle.app ../TorBrowserBundle_$LANG.app - cp $i ../TorBrowserBundle_$LANG.app/Data/Browser/profile.default/extensions/langpack-$LANG@firefox.mozilla.org.xpi - cd .. - - # FF24 puts the prefs in a different jar: - if [ -f TorBrowserBundle_$LANG.app/Contents/MacOS/TorBrowser.app/Contents/MacOS/browser/omni.ja ]; then - pushd TorBrowserBundle_$LANG.app/Contents/MacOS/TorBrowser.app/Contents/MacOS/browser/ + xpi=$LANG.xpi + if [ ${TORBROWSER_VERSION::3} == "3.5" ]; then + DEST=${TORBROWSER_APP}_$LANG else - pushd TorBrowserBundle_$LANG.app/Contents/MacOS/TorBrowser.app/Contents/MacOS/ + DEST=$TORBROWSER_APP fi + cp -a ../${TORBROWSER_NAME}_plain.app ~/build/dmg/$DEST.app + cp $xpi ~/build/dmg/$DEST.app/Data/Browser/profile.default/extensions/langpack-$LANG@firefox.mozilla.org.xpi + cd .. + + # FF24 puts the prefs in the browser jar: + pushd ~/build/dmg/$DEST.app/Contents/MacOS/TorBrowser.app/Contents/MacOS/browser/
mkdir -p defaults/preferences cp ~/build/000-tor-browser.js defaults/preferences/000-tor-browser.js @@ -158,8 +189,15 @@ script: | zip -Xm omni.ja defaults/preferences/000-tor-browser.js popd
- ~/build/dzip.sh $OUTDIR/TorBrowserBundle-${TORBROWSER_VERSION}-osx${GBUILD_BITS}_$LANG.zip TorBrowserBundle_$LANG.app - rm -rf TorBrowserBundle_$LANG.app + if [ ${TORBROWSER_VERSION::3} == "3.5" ]; then + pushd ~/build/dmg/ + ~/build/dzip.sh $OUTDIR/TorBrowserBundle-${TORBROWSER_VERSION}-osx${GBUILD_BITS}_$LANG.zip $DEST.app + rm -rf TorBrowserBundle_$LANG.app + popd + else + ~/build/ddmg.sh $OUTDIR/TorBrowser-${TORBROWSER_VERSION}-osx${GBUILD_BITS}_$LANG.dmg ~/build/dmg/ + rm -rf ~/build/dmg/$DEST.app + fi cd mac-langpacks done cd .. diff --git a/gitian/fetch-inputs.sh b/gitian/fetch-inputs.sh index d757f4d..c2bf811 100755 --- a/gitian/fetch-inputs.sh +++ b/gitian/fetch-inputs.sh @@ -292,6 +292,7 @@ pyptlib https://git.torproject.org/pluggable-transports/pyptlib.gi obfsproxy https://git.torproject.org/pluggable-transports/obfsproxy.git flashproxy https://git.torproject.org/flashproxy.git fteproxy https://github.com/kpdyer/fteproxy.git +libdmg-hfsplus https://github.com/vasi/libdmg-hfsplus.git $LIBDMG_TAG EOF
exit 0 diff --git a/gitian/mkbundle-mac.sh b/gitian/mkbundle-mac.sh index e8b3aa1..d6bffce 100755 --- a/gitian/mkbundle-mac.sh +++ b/gitian/mkbundle-mac.sh @@ -62,6 +62,9 @@ cp mac-tor.sh $GITIAN_DIR/inputs/ cd mac rm -f $GITIAN_DIR/inputs/mac-skeleton.zip $WRAPPER_DIR/build-helpers/dzip.sh $GITIAN_DIR/inputs/mac-skeleton.zip . +cd ../mac.dmg +rm -f $GITIAN_DIR/inputs/mac-dmg.zip +$WRAPPER_DIR/build-helpers/dzip.sh $GITIAN_DIR/inputs/mac-dmg.zip .
cd $WRAPPER_DIR
@@ -155,7 +158,7 @@ then
cd $WRAPPER_DIR && ./record-inputs.sh $VERSIONS_FILE && cd $GITIAN_DIR
- ./bin/gbuild -j $NUM_PROCS -m $VM_MEMORY --commit https-everywhere=$HTTPSE_TAG,torbutton=$TORBUTTON_TAG,tor-launcher=$TORLAUNCHER_TAG $DESCRIPTOR_DIR/mac/gitian-bundle.yml + ./bin/gbuild -j $NUM_PROCS -m $VM_MEMORY --commit libdmg-hfsplus=$LIBDMG_TAG,https-everywhere=$HTTPSE_TAG,torbutton=$TORBUTTON_TAG,tor-launcher=$TORLAUNCHER_TAG $DESCRIPTOR_DIR/mac/gitian-bundle.yml if [ $? -ne 0 ]; then #mv var/build.log ./bundle-fail-mac.log.`date +%Y%m%d%H%M%S` @@ -164,7 +167,7 @@ then
#cp -a build/out/*.dmg $WRAPPER_DIR mkdir -p $WRAPPER_DIR/$TORBROWSER_VERSION/ - cp -a build/out/*.zip $WRAPPER_DIR/$TORBROWSER_VERSION/ || exit 1 + cp -a build/out/* $WRAPPER_DIR/$TORBROWSER_VERSION/ || exit 1 touch $GITIAN_DIR/inputs/bundle-mac.gbuilt else echo diff --git a/gitian/versions b/gitian/versions index f3dfe9d..a29a4ba 100755 --- a/gitian/versions +++ b/gitian/versions @@ -15,6 +15,7 @@ MINGW_REV=6184 PYPTLIB_TAG=pyptlib-0.0.5 OBFSPROXY_TAG=obfsproxy-0.2.4 FLASHPROXY_TAG=1.6 +LIBDMG_TAG=dfd5e5cc3dc1191e37d3c3a6118975afdd1d7014
GITIAN_TAG=tor-browser-builder-3.0-4
diff --git a/gitian/versions.alpha b/gitian/versions.alpha index 0741b8f..55efa38 100755 --- a/gitian/versions.alpha +++ b/gitian/versions.alpha @@ -15,6 +15,7 @@ MINGW_REV=6184 PYPTLIB_TAG=pyptlib-0.0.5 OBFSPROXY_TAG=obfsproxy-0.2.4 FLASHPROXY_TAG=1.6 +LIBDMG_TAG=dfd5e5cc3dc1191e37d3c3a6118975afdd1d7014
GITIAN_TAG=tor-browser-builder-3.0-4
diff --git a/gitian/versions.beta b/gitian/versions.beta index 6ac5a34..241e855 100755 --- a/gitian/versions.beta +++ b/gitian/versions.beta @@ -17,6 +17,7 @@ PYPTLIB_TAG=pyptlib-0.0.5 OBFSPROXY_TAG=obfsproxy-0.2.4 FLASHPROXY_TAG=1.6 FTEPROXY_TAG=0.2.6 +LIBDMG_TAG=dfd5e5cc3dc1191e37d3c3a6118975afdd1d7014
GITIAN_TAG=tor-browser-builder-3.0-4
diff --git a/gitian/versions.diff b/gitian/versions.diff new file mode 100644 index 0000000..69001a8 --- /dev/null +++ b/gitian/versions.diff @@ -0,0 +1,45 @@ +diff --git a/gitian/versions.nightly b/gitian/versions.nightly +index b9b5835..f3dfe9d 100755 +--- a/gitian/versions.nightly ++++ b/gitian/versions.nightly +@@ -12,13 +12,14 @@ NSIS_TAG=v0.1 + ZLIB_TAG=v1.2.8 + LIBEVENT_TAG=release-2.0.21-stable + MINGW_REV=6184 +-PYPTLIB_TAG=pyptlib-0.0.4 +-OBFSPROXY_TAG=obfsproxy-0.2.3 ++PYPTLIB_TAG=pyptlib-0.0.5 ++OBFSPROXY_TAG=obfsproxy-0.2.4 + FLASHPROXY_TAG=1.6 + + GITIAN_TAG=tor-browser-builder-3.0-4 + + OPENSSL_VER=1.0.1f ++GMP_VER=5.1.3 + FIREFOX_LANG_VER=24.3.0esr + BINUTILS_VER=2.22 + GCC_VER=4.6.3 +@@ -33,6 +34,7 @@ SETUPTOOLS_VER=1.4 + + ## File names for the source packages + OPENSSL_PACKAGE=openssl-${OPENSSL_VER}.tar.gz ++GMP_PACKAGE=gmp-${GMP_VER}.tar.bz2 + NOSCRIPT_PACKAGE=noscript_security_suite-2.6.8.13-fn+sm+fx.xpi + TOOLCHAIN4_PACKAGE=x86_64-apple-darwin10.tar.xz + OSXSDK_PACKAGE=apple-uni-sdk-10.6_20110407-0.flosoft1_i386.deb +@@ -52,6 +54,7 @@ SETUPTOOLS_PACKAGE=setuptools-${SETUPTOOLS_VER}.tar.gz + + # Hashes for packages with weak sigs or no sigs + OPENSSL_HASH=6cc2a80b17d64de6b7bac985745fdaba971d54ffd7d38d3556f998d7c0c9cb5a ++GMP_HASH=752079520b4690531171d0f4532e40f08600215feefede70b24fabdc6f1ab160 + OSXSDK_HASH=6602d8d5ddb371fbc02e2a5967d9bd0cd7358d46f9417753c8234b923f2ea6fc + TOOLCHAIN4_HASH=7b71bfe02820409b994c5c33a7eab81a81c72550f5da85ff7af70da3da244645 + NOSCRIPT_HASH=0d90f283ee9e3be5bb1ebc315fab12994ff5a15380bd3a2fdff62750286b4ea1 +@@ -67,6 +70,7 @@ SETUPTOOLS_HASH=75d288687066ed124311d6ca5f40ffa92a0e81adcd7fff318c6e84082713cf39 + + ## Non-git package URLs + OPENSSL_URL=https://www.openssl.org/source/$%7BOPENSSL_PACKAGE%7D ++GMP_URL=https://ftp.gnu.org/gnu/gmp/$%7BGMP_PACKAGE%7D + TOOLCHAIN4_URL=https://people.torproject.org/~mikeperry/mirrors/sources/$%7BTOOLCHAIN4_PACK... + OSXSDK_URL=https://launchpad.net/~flosoft/+archive/cross-apple/+files/$%7BOSXSDK_PACKAG... + BINUTILS_URL=https://ftp.gnu.org/gnu/binutils/$%7BBINUTILS_PACKAGE%7D diff --git a/gitian/versions.nightly b/gitian/versions.nightly index 5e6bc6f..5a8fcd0 100755 --- a/gitian/versions.nightly +++ b/gitian/versions.nightly @@ -15,6 +15,7 @@ MINGW_REV=6184 PYPTLIB_TAG=master OBFSPROXY_TAG=master FLASHPROXY_TAG=master +LIBDMG_TAG=dfd5e5cc3dc1191e37d3c3a6118975afdd1d7014
GITIAN_TAG=tor-browser-builder-3.0-4