[tbb-commits] [tor-browser-build/master] Bug 24632: Adapt firefox and tor-browser to new macOS toolchain
gk at torproject.org
gk at torproject.org
Wed Jun 6 18:23:58 UTC 2018
commit e76952c389487d657c3f52fede5e9ca56ec02397
Author: Georg Koppen <gk at torproject.org>
Date: Wed Jun 6 18:22:41 2018 +0000
Bug 24632: Adapt firefox and tor-browser to new macOS toolchain
After building Firefox we now get a 'Tor Browser.app' instead of a
'TorBrowser.app'. This patch makes sure the additional whitespace in the
app name is correctly handled by the build script and the one that deals
with packaging the final bundle.
We need to ship a fix for the Firefox packaging step as well as
|./mach package| wants to build the final .dmg in that step, too, which
breaks: there is no .dmg creation tool available. Setting
`INNER_MAKE_PACKAGE` to `true` does not seem to work anymore. That part
of this patch is currently only a workaround to get the nightly builds
going. We should come up with a better solution that allows us to skip
that part of the Firefox packaging step on all supported platforms.
---
projects/firefox/build | 25 ++++++++++------
projects/firefox/config | 4 ++-
projects/firefox/no-dmg.patch | 29 ++++++++++++++++++
projects/tor-browser/build | 70 +++++++++++++++++++++----------------------
4 files changed, 83 insertions(+), 45 deletions(-)
diff --git a/projects/firefox/build b/projects/firefox/build
index 62186d1..8278c14 100644
--- a/projects/firefox/build
+++ b/projects/firefox/build
@@ -48,10 +48,13 @@ EOF
# export SELFRANDO_skip_shuffle=
#[% END -%]
-[% IF c("var/linux") %]
+[% IF ! c("var/windows") %]
mkdir -p /var/tmp/dist
tar -C /var/tmp/dist -xf [% c('input_files_by_name/rust') %]
export PATH="/var/tmp/dist/rust/bin:$PATH"
+[% END -%]
+
+[% IF c("var/linux") %]
# Add llvm so stylo can build
tar -C /var/tmp/dist -xf [% c('input_files_by_name/llvm') %]
export LLVM_CONFIG="/var/tmp/dist/llvm/bin/llvm-config"
@@ -60,7 +63,7 @@ EOF
tar -C /var/tmp/build -xf [% project %]-[% c('version') %].tar.gz
[% IF c("var/osx") %]
- mkdir -p $distdir/TorBrowser.app/Contents/MacOS
+ mkdir -p "$distdir/Tor Browser.app/Contents/MacOS"
[% ELSE %]
mkdir -p $distdir/Browser
[% END %]
@@ -118,6 +121,10 @@ fi
patch -p1 < $rootdir/STL_win64.patch
[% END -%]
+[% IF c("var/osx") %]
+ patch -p1 < $rootdir/no-dmg.patch
+[% END -%]
+
rm -f configure
rm -f js/src/configure
@@ -128,12 +135,12 @@ rm -f js/src/configure
[% IF c("var/osx") %]
cp -a obj-macos/dist/firefox/* $distdir
# Remove firefox-bin (we don't use it, see ticket #10126)
- rm -f $distdir/TorBrowser.app/Contents/MacOS/firefox-bin
+ rm -f "$distdir/Tor Browser.app/Contents/MacOS/firefox-bin"
# Adjust the Info.plist file
- INFO_PLIST=$distdir/TorBrowser.app/Contents/Info.plist
- mv $INFO_PLIST tmp.plist
- python $rootdir/fix-info-plist.py '[% c("var/torbrowser_version") %]' '[% c("var/copyright_year") %]' < tmp.plist > $INFO_PLIST
+ INFO_PLIST="$distdir/Tor Browser.app/Contents/Info.plist"
+ mv "$INFO_PLIST" tmp.plist
+ python $rootdir/fix-info-plist.py '[% c("var/torbrowser_version") %]' '[% c("var/copyright_year") %]' < tmp.plist > "$INFO_PLIST"
rm -f tmp.plist
[% END %]
@@ -198,8 +205,8 @@ cd $distdir
[% c("var/rezip", { rezip_file => 'Browser/omni.ja' }) %]
[% c("var/rezip", { rezip_file => 'Browser/browser/omni.ja' }) %]
[% ELSIF c("var/osx") %]
- [% c("var/rezip", { rezip_file => 'TorBrowser.app/Contents/Resources/omni.ja' }) %]
- [% c("var/rezip", { rezip_file => 'TorBrowser.app/Contents/Resources/browser/omni.ja' }) %]
+ [% c("var/rezip", { rezip_file => '"Tor Browser.app/Contents/Resources/omni.ja"' }) %]
+ [% c("var/rezip", { rezip_file => '"Tor Browser.app/Contents/Resources/browser/omni.ja"' }) %]
[% END %]
[% IF c("var/windows") %]
@@ -211,7 +218,7 @@ mkdir -p [% dest_dir _ '/' _ c('filename') %]
[%
IF c("var/osx");
- SET browserdir='TorBrowser.app/Contents';
+ SET browserdir='"Tor Browser.app/Contents"';
ELSE;
SET browserdir='Browser';
END;
diff --git a/projects/firefox/config b/projects/firefox/config
index d6b8313..927fb0b 100644
--- a/projects/firefox/config
+++ b/projects/firefox/config
@@ -86,6 +86,8 @@ input_files:
# enable: '[% c("var/linux") && ! c("var/release") %]'
- filename: fix-info-plist.py
enable: '[% c("var/osx") %]'
+ - filename: no-dmg.patch
+ enable: '[% c("var/osx") %]'
- URL: https://people.torproject.org/~gk/mirrors/sources/msvcr100.dll
sha256sum: 8793353461826fbd48f25ea8b835be204b758ce7510db2af631b28850355bd18
enable: '[% c("var/windows-i686") %]'
@@ -99,7 +101,7 @@ input_files:
enable: '[% c("var/windows-x86_64") %]'
- project: rust
name: rust
- enable: '[% c("var/linux") %]'
+ enable: '[% ! c("var/windows") %]'
- project: llvm
name: llvm
enable: '[% c("var/linux") %]'
diff --git a/projects/firefox/no-dmg.patch b/projects/firefox/no-dmg.patch
new file mode 100644
index 0000000..1e722af
--- /dev/null
+++ b/projects/firefox/no-dmg.patch
@@ -0,0 +1,29 @@
+From 7204fc9191a55dbbd3b94ee2d64ece8d9910cf23 Mon Sep 17 00:00:00 2001
+From: Georg Koppen <gk at torproject.org>
+Date: Thu, 31 May 2018 19:15:18 +0000
+Subject: [PATCH] Don't create a .dmg yet
+
+
+diff --git a/toolkit/mozapps/installer/upload-files.mk b/toolkit/mozapps/installer/upload-files.mk
+index 8ace9703a160..82df89d1f431 100644
+--- a/toolkit/mozapps/installer/upload-files.mk
++++ b/toolkit/mozapps/installer/upload-files.mk
+@@ -216,14 +216,7 @@ ifeq ($(MOZ_PKG_FORMAT),DMG)
+
+ _ABS_MOZSRCDIR = $(shell cd $(MOZILLA_DIR) && pwd)
+ PKG_DMG_SOURCE = $(MOZ_PKG_DIR)
+- INNER_MAKE_PACKAGE = \
+- $(call py_action,make_dmg, \
+- $(if $(MOZ_PKG_MAC_DSSTORE),--dsstore '$(MOZ_PKG_MAC_DSSTORE)') \
+- $(if $(MOZ_PKG_MAC_BACKGROUND),--background '$(MOZ_PKG_MAC_BACKGROUND)') \
+- $(if $(MOZ_PKG_MAC_ICON),--icon '$(MOZ_PKG_MAC_ICON)') \
+- --volume-name '$(MOZ_APP_DISPLAYNAME)' \
+- '$(PKG_DMG_SOURCE)' '$(PACKAGE)' \
+- )
++ INNER_MAKE_PACKAGE = true
+ INNER_UNMAKE_PACKAGE = \
+ $(call py_action,unpack_dmg, \
+ $(if $(MOZ_PKG_MAC_DSSTORE),--dsstore '$(MOZ_PKG_MAC_DSSTORE)') \
+--
+2.17.0
+
diff --git a/projects/tor-browser/build b/projects/tor-browser/build
index 4d1be00..d807633 100644
--- a/projects/tor-browser/build
+++ b/projects/tor-browser/build
@@ -14,7 +14,7 @@ mkdir -p $OUTDIR
TB_STAGE_DIR=$distdir/tor-browser-stage
[% IF c("var/osx") %]
- TBDIR=$TB_STAGE_DIR/TorBrowser.app
+ TBDIR="$TB_STAGE_DIR/Tor Browser.app"
DOCSPATH=Contents/Resources/TorBrowser/Docs
EXTSPATH=Contents/Resources/distribution/extensions
@@ -34,11 +34,11 @@ TB_STAGE_DIR=$distdir/tor-browser-stage
EXTOVERRIDESPATH=TorBrowser/Data/Browser/profile.default/preferences/extension-overrides.js
MEEKPROFILEPATH=TorBrowser/Data/Browser/profile.meek-http-helper
- mkdir -p $TBDIR/TorBrowser/Data/Browser/Caches
+ mkdir -p "$TBDIR/TorBrowser/Data/Browser/Caches"
[% END %]
-mkdir -p $TBDIR/$EXTSPATH
-mkdir -p $TBDIR/$MEEKPROFILEPATH/extensions
+mkdir -p "$TBDIR/$EXTSPATH"
+mkdir -p "$TBDIR/$MEEKPROFILEPATH/extensions"
# Extract the MAR tools.
unzip -d $rootdir $rootdir/[% c('input_files_by_name/firefox') %]/mar-tools-*.zip
@@ -49,23 +49,23 @@ MARTOOLS=$rootdir/mar-tools
unzip -d $rootdir $rootdir/mar-tools-linux32.zip
[% END -%]
-mv [% c('input_files_by_name/tor-launcher') %] $TBDIR/$EXTSPATH/tor-launcher at torproject.org.xpi
-mv [% c('input_files_by_name/torbutton') %] $TBDIR/$EXTSPATH/torbutton at torproject.org.xpi
-mv [% c('input_files_by_name/https-everywhere') %] $TBDIR/$EXTSPATH/https-everywhere-eff at eff.org.xpi
-mv [% c('input_files_by_name/noscript') %] $TBDIR/$EXTSPATH/{73a6fe31-595d-460b-a920-fcc0f8843232}.xpi
+mv [% c('input_files_by_name/tor-launcher') %] "$TBDIR/$EXTSPATH/tor-launcher at torproject.org.xpi"
+mv [% c('input_files_by_name/torbutton') %] "$TBDIR/$EXTSPATH/torbutton at torproject.org.xpi"
+mv [% c('input_files_by_name/https-everywhere') %] "$TBDIR/$EXTSPATH/https-everywhere-eff at eff.org.xpi"
+mv [% c('input_files_by_name/noscript') %] "$TBDIR/$EXTSPATH/{73a6fe31-595d-460b-a920-fcc0f8843232}.xpi"
-tar -C $TBDIR -xf [% c('input_files_by_name/obfs4') %]
-tar -C $TBDIR -xf [% c('input_files_by_name/meek') %]
-mv $TBDIR/meek-http-helper at bamsoftware.com.xpi $TBDIR/$MEEKPROFILEPATH/extensions/
+tar -C "$TBDIR" -xf [% c('input_files_by_name/obfs4') %]
+tar -C "$TBDIR" -xf [% c('input_files_by_name/meek') %]
+mv "$TBDIR/meek-http-helper at bamsoftware.com.xpi" "$TBDIR/$MEEKPROFILEPATH/extensions/"
[% IF c("var/snowflake") %]
- tar -C $TBDIR -xf [% c('input_files_by_name/snowflake') -%]
+ tar -C "$TBDIR" -xf [% c('input_files_by_name/snowflake') -%]
[% END -%]
[% IF c("var/fteproxy") -%]
- tar -C $TBDIR -xf [% c('input_files_by_name/fteproxy') %]
+ tar -C "$TBDIR" -xf [% c('input_files_by_name/fteproxy') %]
[% END -%]
-tar -C $TBDIR[% IF c("var/osx") %]/Contents/Resources[% END %] -xf [% c('input_files_by_name/fonts') %]
+tar -C "$TBDIR[% IF c("var/osx") %]/Contents/Resources[% END %]" -xf [% c('input_files_by_name/fonts') %]
[% IF c("var/linux") %]
cp RelativeLink/* ${TB_STAGE_DIR}/Browser/
@@ -77,7 +77,7 @@ RBM_TB_EOF
[% END %]
tar -C ${TB_STAGE_DIR} -xf [% c('input_files_by_name/firefox') %]/tor-browser.tar.gz
-tar -C $TBDIR[% IF ! c("var/osx") %]/TorBrowser[% END %] -xf [% c('input_files_by_name/tor') %]/tor.tar.gz
+tar -C "$TBDIR[% IF ! c("var/osx") %]/TorBrowser[% END %]" -xf [% c('input_files_by_name/tor') %]/tor.tar.gz
[% IF c("var/linux");
SET bundledata_osname = 'linux';
@@ -107,8 +107,8 @@ tar -C $TBDIR[% IF ! c("var/osx") %]/TorBrowser[% END %] -xf [% c('input_files_b
mv $SKELETON_TMP Bundle-Data/mac
# Install a "tor" shim that sets the working directory. See #10030.
- mv $TBDIR/$TORBINPATH/tor $TBDIR/$TORBINPATH/tor.real
- cp Bundle-Data/mac-tor.sh $TBDIR/$TORCONFIGPATH/tor
+ mv "$TBDIR/$TORBINPATH/tor" "$TBDIR/$TORBINPATH/tor.real"
+ cp Bundle-Data/mac-tor.sh "$TBDIR/$TORCONFIGPATH/tor"
[% IF ! c("var/release") -%]
SANDBOX_FOLDER="$TB_STAGE_DIR/Sandboxed Tor Browser"
@@ -118,17 +118,17 @@ tar -C $TBDIR[% IF ! c("var/osx") %]/TorBrowser[% END %] -xf [% c('input_files_b
tar -C Bundle-Data/mac-applications.dmg -c . | tar -C $TB_STAGE_DIR -x
[% END %]
-mkdir -p $TBDIR/$DOCSPATH
-cp -a Bundle-Data/Docs/* $TBDIR/$DOCSPATH
-tar -C Bundle-Data/[% bundledata_osname %] -c . | tar -C $TBDIR[% IF ! c("var/osx") %]/TorBrowser[% END %] -x
+mkdir -p "$TBDIR/$DOCSPATH"
+cp -a Bundle-Data/Docs/* "$TBDIR/$DOCSPATH"
+tar -C Bundle-Data/[% bundledata_osname %] -c . | tar -C "$TBDIR[% IF ! c("var/osx") %]/TorBrowser[% END %]" -x
-cat Bundle-Data/PTConfigs/[% bundledata_osname %]/torrc-defaults-appendix >> $TBDIR/$TORCONFIGPATH/torrc-defaults
+cat Bundle-Data/PTConfigs/[% bundledata_osname %]/torrc-defaults-appendix >> "$TBDIR/$TORCONFIGPATH/torrc-defaults"
[% IF c("var/linux") -%]
[% IF ! c("var/snowflake") %]
grep -v 'default_bridge\.snowflake' Bundle-Data/PTConfigs/bridge_prefs.js \
- >> $TBDIR/$EXTOVERRIDESPATH
+ >> "$TBDIR/$EXTOVERRIDESPATH"
[% ELSE %]
- cat Bundle-Data/PTConfigs/bridge_prefs.js >> $TBDIR/$EXTOVERRIDESPATH
+ cat Bundle-Data/PTConfigs/bridge_prefs.js >> "$TBDIR/$EXTOVERRIDESPATH"
[% END %]
[% END -%]
[% IF c("var/windows") -%]
@@ -136,18 +136,18 @@ cat Bundle-Data/PTConfigs/[% bundledata_osname %]/torrc-defaults-appendix >> $TB
# We don't have fte available on Windows x86_64 yet
grep -v 'default_bridge\.snowflake' Bundle-Data/PTConfigs/bridge_prefs.js \
[% IF c("var/windows-x86_64") %]| grep -v 'default_bridge\.fte' [% END %] \
- >> $TBDIR/$EXTOVERRIDESPATH
+ >> "$TBDIR/$EXTOVERRIDESPATH"
[% END -%]
[% IF c("var/osx") -%]
# FTE is temporarily removed due to bug 18495.
grep -Ev 'default_bridge\.fte' Bundle-Data/PTConfigs/bridge_prefs.js \
[% IF ! c("var/snowflake") %]| grep -v 'default_bridge\.snowflake' [% END %] \
- >> $TBDIR/$EXTOVERRIDESPATH
+ >> "$TBDIR/$EXTOVERRIDESPATH"
[% END -%]
-cat Bundle-Data/PTConfigs/meek-http-helper-user.js >> $TBDIR/$MEEKPROFILEPATH/user.js
+cat Bundle-Data/PTConfigs/meek-http-helper-user.js >> "$TBDIR/$MEEKPROFILEPATH/user.js"
[% IF c("var/osx") %]
- pushd $TBDIR
+ pushd "$TBDIR"
# Create the meek-template-sha256sum.txt file by generating a list
# of hashes (one for each file within the meek-http-helper profile) and
# and then generating one final hash from the contents of the list.
@@ -156,8 +156,8 @@ cat Bundle-Data/PTConfigs/meek-http-helper-user.js >> $TBDIR/$MEEKPROFILEPATH/us
[% END %]
[% IF ! c("var/multi_lingual") %]
- echo 'pref("extensions.torlauncher.prompt_for_locale", false);' >> $TBDIR/$EXTOVERRIDESPATH
- echo 'pref("intl.locale.matchOS", false);' >> $TBDIR/$EXTOVERRIDESPATH
+ echo 'pref("extensions.torlauncher.prompt_for_locale", false);' >> "$TBDIR/$EXTOVERRIDESPATH"
+ echo 'pref("intl.locale.matchOS", false);' >> "$TBDIR/$EXTOVERRIDESPATH"
[% END %]
[% IF c("var/linux") %]
@@ -178,7 +178,7 @@ cat Bundle-Data/PTConfigs/meek-http-helper-user.js >> $TBDIR/$MEEKPROFILEPATH/us
[% END %]
-pushd $TBDIR[% IF c("var/osx") %]/Contents/Resources[% END %]/browser/
+pushd "$TBDIR[% IF c("var/osx") %]/Contents/Resources[% END %]/browser/"
# For the proper search engines in our language packs
unzip omni.ja chrome/en-US/locale/browser/searchplugins* || [ $? -lt 3 ]
mv chrome/en-US/locale/browser/searchplugins $rootdir
@@ -223,7 +223,7 @@ popd
}) %]
# If we are building a multi-lingual package, add all of the language packs.
[% IF c("var/multi_lingual") %]
- cp [% xpi %] $TBDIR/$EXTSPATH/langpack-[% lang %]@firefox.mozilla.org.xpi
+ cp [% xpi %] "$TBDIR/$EXTSPATH/langpack-[% lang %]@firefox.mozilla.org.xpi"
[% END %]
cd ..
rm -rf prep_[% lang %]
@@ -232,7 +232,7 @@ popd
[% IF c("var/multi_lingual") %]
# Set the update.locale (it is used to replace %LOCALE% within
# app.update.url).
- pushd $TBDIR[% IF c("var/osx") %]/Contents/Resources/[% END %]
+ pushd "$TBDIR[% IF c("var/osx") %]/Contents/Resources/[% END %]"
echo ${PKG_LOCALE} > update.locale
[% c("var/touch") %] update.locale
zip -Xm omni.ja update.locale
@@ -253,11 +253,11 @@ popd
cp -a ${TB_STAGE_DIR} $distdir/$PKG_DIR
[% IF c("var/windows") %]
- TBDIR=$distdir/$PKG_DIR/"Tor Browser"/Browser
+ TBDIR="$distdir/$PKG_DIR/Tor Browser/Browser"
[% ELSIF c("var/osx") %]
- TBDIR=$distdir/$PKG_DIR/TorBrowser.app
+ TBDIR="$distdir/$PKG_DIR/Tor Browser.app"
[% ELSE %]
- TBDIR=$distdir/$PKG_DIR/Browser
+ TBDIR="$distdir/$PKG_DIR/Browser"
[% END %]
pushd "$TBDIR[% IF c("var/osx") %]/Contents/Resources/[% END %]"
More information about the tbb-commits
mailing list