[or-cvs] r13362: Handle creation of non-English Tor Browser Bundles (needs mo (torbrowser/trunk/build-scripts)

sjm217 at seul.org sjm217 at seul.org
Sat Feb 2 18:54:01 UTC 2008


Author: sjm217
Date: 2008-02-02 13:54:01 -0500 (Sat, 02 Feb 2008)
New Revision: 13362

Modified:
   torbrowser/trunk/build-scripts/Makefile
Log:
Handle creation of non-English Tor Browser Bundles (needs more work)

Modified: torbrowser/trunk/build-scripts/Makefile
===================================================================
--- torbrowser/trunk/build-scripts/Makefile	2008-02-02 18:52:37 UTC (rev 13361)
+++ torbrowser/trunk/build-scripts/Makefile	2008-02-02 18:54:01 UTC (rev 13362)
@@ -7,6 +7,10 @@
 ### $Id$
 ###
 
+#####################
+### Configuration ###
+#####################
+
 ## Location of required libraries
 MING=/c/MinGW/bin
 QT=/c/Qt/4.3.2/bin
@@ -24,65 +28,90 @@
 ## Location of config files
 CONFIG_SRC=config
 
-## Destination directories for binaries and documentation
-BINARIES=binaries
-DOCS=docs
+## Destination for the generic bundle
+DEST="Generic Bundle"
 
-## Destination for bundle
-DEST="Tor Browser"
+## Name of the bundle"
+NAME="Tor Browser"
 
-all:
-	echo "Nothing to do"
+## Extensions to install by default
+DEFAULT_EXTENSIONS=torbutton.xpi
 
+## Put more extensions here
+EXTENSIONS_DIR=extensions
+
+#############
+### Rules ###
+#############
+
+##
+## Default rule
+##
+
+bundle: bundle_en
+
+all-bundles: bundle_en bundle_de bundle_es-ES bundle_fr bundle_nl \
+             bundle_pt-PT bundle_ru bundle zh-CN
+
+##
+## Cleanup
+##
+
+clean:
+	rm -fr $(DEST)
+	rm -f *~
+	rm -fr $(DEST) $(BINARIES) $(DOCS)
+	rm -f "Tor Browser.exe"
+
+##
+## Generate a non-localized bundle and put in $(DEST)
+##
+
+## Install binaries, documentation, FirefoxPortable and launcher into $(DEST)
+$(DEST): directory-structure install-binaries install-docs install-firefoxportable configure-apps launcher
+
+APPDIR=$(DEST)/App
+DOCSDIR=$(DEST)/Docs
+DATADIR=$(DEST)/Data
+
+## Build directory structure
+directory-structure: 
+	rm -fr $(DEST)
+	mkdir -p $(APPDIR)
+	mkdir -p $(DATADIR)/Tor
+	mkdir -p $(DATADIR)/Vidalia
+	mkdir -p $(DATADIR)/Polipo
+	mkdir -p $(DOCSDIR)
+
 ## Package up all the Vidalia and Tor pre-requisites
 ## Filenames extracted using Dependency Walker <http://www.dependencywalker.com/>
-install-binaries:
-	rm -fr $(BINARIES)
-	mkdir $(BINARIES)
-	cp $(MING)/mingwm10.dll $(BINARIES)
+install-binaries: 
+	cp $(MING)/mingwm10.dll $(APPDIR)
 	cp $(QT)/QtCore4.dll $(QT)/QtGui4.dll \
-           $(QT)/QtNetwork4.dll $(QT)/QtXml4.dll $(BINARIES) 
-	cp $(VIDALIA)/src/vidalia/vidalia.exe $(BINARIES)
-	cp $(POLIPO)/polipo.exe $(BINARIES)
-	cp $(TOR)/src/or/tor.exe $(TOR)/src/tools/tor-resolve.exe $(BINARIES)
+           $(QT)/QtNetwork4.dll $(QT)/QtXml4.dll $(APPDIR) 
+	cp $(VIDALIA)/src/vidalia/vidalia.exe $(APPDIR)
+	cp $(POLIPO)/polipo.exe $(APPDIR)
+	cp $(TOR)/src/or/tor.exe $(TOR)/src/tools/tor-resolve.exe $(APPDIR)
 
 ## Collect up license files
 install-docs:
-	rm -fr $(DOCS)
-	mkdir -p $(DOCS)/vidalia
-	mkdir -p $(DOCS)/tor
-	mkdir -p $(DOCS)/qt
-	mkdir -p $(DOCS)/mingw
-	mkdir -p $(DOCS)/polipo
-	cp $(VIDALIA)/LICENSE $(VIDALIA)/COPYING $(VIDALIA)/AUTHORS $(QT)/../LICENSE.GPL $(DOCS)/vidalia
-	cp $(TOR)/LICENSE $(TOR)/AUTHORS $(TOR)/README $(DOCS)/tor
-	cp $(QT)/../LICENSE.GPL $(DOCS)/qt
-	cp $(MING)/../COPYING $(DOCS)/mingw
-	cp $(POLIPO)/COPYING  $(POLIPO)/README $(DOCS)/polipo
+	mkdir -p $(DOCSDIR)/Vidalia
+	mkdir -p $(DOCSDIR)/Tor
+	mkdir -p $(DOCSDIR)/Qt
+	mkdir -p $(DOCSDIR)/MinGW
+	mkdir -p $(DOCSDIR)/Polipo
+	cp $(VIDALIA)/LICENSE $(VIDALIA)/COPYING $(VIDALIA)/AUTHORS $(QT)/../LICENSE.GPL $(DOCSDIR)/Vidalia
+	cp $(TOR)/LICENSE $(TOR)/AUTHORS $(TOR)/README $(DOCSDIR)/Tor
+	cp $(QT)/../LICENSE.GPL $(DOCSDIR)/Qt
+	cp $(MING)/../COPYING $(DOCSDIR)/MinGW
+	cp $(POLIPO)/COPYING  $(POLIPO)/README $(DOCSDIR)/Polipo
 
-TORBUTTON=torbutton-1.1.12-alpha.xpi
-$(TORBUTTON):
-	$(WGET) http://torbutton.torproject.org/dev/releases/$(TORBUTTON)
+## Copy over FirefoxPortable
+install-firefoxportable:
+	cp -R $(FIREFOX_SRC) $(DEST)/FirefoxPortable
 
-bundle: package-files install-torbutton patch-language launcher
-
-launcher:
-	echo 'start /b .\\App\\vidalia.exe --datadir .\\Data\\Vidalia\\' > $(DEST)/"Start Tor Browser.bat"
-
-## This dummy profile is created just for installing extensions, otherwise Firefox
-## will output files in the default one
-DUMMYPROFILE=$(DEST)/FirefoxPortable/App/DummyProfile
-
-package-files: install-binaries install-docs $(TORBUTTON)
-	## Build directory structure
-	rm -fr $(DEST)
-	mkdir -p $(DEST)/App
-	mkdir -p $(DEST)/Data/Tor
-	mkdir -p $(DEST)/Data/Vidalia
-	mkdir -p $(DEST)/Data/Polipo
-	mkdir -p $(DEST)/Docs
-	## Copy over Firefox Portable
-	cp -R $(FIREFOX_SRC) $(DEST)/FirefoxPortable
+## Configure Firefox, FirefoxPortable, Vidalia, Polipo and Tor
+configure-apps:
 	## Configure Firefox preferences
 	cp $(CONFIG_SRC)/prefs.js $(DEST)/FirefoxPortable/App/DefaultData/profile/
 	cp $(CONFIG_SRC)/user.js $(DEST)/FirefoxPortable/App/DefaultData/profile/
@@ -92,80 +121,81 @@
 	## Configure Vidalia
 	cp $(CONFIG_SRC)/vidalia.conf $(DEST)/Data/Vidalia
 	## Configure Polipo
-	cp $(CONFIG_SRC)/polipo.conf $(DEST)/Data/Polipo/polipo.conf
+	cp $(CONFIG_SRC)/polipo.conf $(DEST)/Data/Polipo
 	## Configure Tor
 	cp $(CONFIG_SRC)/torrc $(DEST)/Data/Tor
-	## Copy over Vidalia, Tor and Polipo
-	cp -R $(BINARIES)/* $(DEST)/App
-	## Copy over documentation
-	cp -R $(DOCS)/* $(DEST)/Docs
 
-## Install torbutton (TODO: add -no-remote if Firefox is running?)
-install-torbutton:
-	## Make a dummy profile to stop Firefox creating some large files
-	cp -R $(DEST)/FirefoxPortable/App/DefaultData $(DUMMYPROFILE)
-	$(DEST)/FirefoxPortable/App/firefox/firefox.exe \
-         -profile $(DUMMYPROFILE) \
-         -install-global-extension $(TORBUTTON)
-	rm -fr $(DUMMYPROFILE)
+launcher:
+	echo 'start /b .\\App\\vidalia.exe --datadir .\\Data\\Vidalia\\' > $(DEST)/"Start Tor Browser.bat"
 
-## Install Quick Locale Switcher extension
-install-qls: quick_locale_switcher.xpi
-	## Make a dummy profile to stop Firefox creating some large files
-	cp -R $(DEST)/FirefoxPortable/App/DefaultData $(DUMMYPROFILE)
-	$(DEST)/FirefoxPortable/App/firefox/firefox.exe \
-         -profile $(DUMMYPROFILE) \
-         -install-global-extension $<
-	rm -fr $(DUMMYPROFILE)
+##
+## How to create required extensions
+##
 
-## Download language packs
+## Torbutton development version
+TORBUTTON=torbutton-1.1.12-alpha.xpi
+torbutton.xpi:
+	$(WGET) -O $@ http://torbutton.torproject.org/dev/releases/$(TORBUTTON)
+
+## Generic language pack rule
+langpack_%.xpi:
+	$(WGET) -O $@ http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.11/win32/xpi/%.xpi
+## Persian isn't a supported language by Firefox yet
 langpack_fa.xpi:
 	$(WGET) -O $@ https://addons.mozilla.org/en-US/firefox/downloads/file/18157/persian_language_pack-2.0.0.6-fx.xpi
+## English comes as default
+langpack_en.xpi:
+	touch $@
 
-langpack_zh-cn.xpi:
-	$(WGET) -O $@ http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.11/win32/xpi/zh-CN.xpi
-
 ## Download Quick Locale Switcher
 quick_locale_switcher.xpi:
 	$(WGET) -O $@ https://addons.mozilla.org/en-US/firefox/downloads/file/20672/quick_locale_switcher-1.6.3.7-fx+mz+tb+sb+nvu+ns+sm+fl.xpi
 
-## Set the language for Vidalia and Firefox
-## Currently supported: en: English; fa: Farsi; zh-cn: Chinese simplified
-LANGCODE?=en
-patch-language:
+##
+## Customize the bundle
+##
+
+bundle_%:
+	LANGCODE=$* make bundle
+	
+bundle: copy-base install-extensions patch-vidalia-language patch-firefox-config
+
+compress-bundle:
+	cd $(NAME)_$(LANGCODE); $(SEVENZIP) a -sfx7z.sfx $(NAME)_$(LANGCODE).exe $(NAME)
+
+copy-base:
+	mkdir $(NAME)_$(LANGCODE)
+	cp -R $(DEST) $(NAME)_$(LANGCODE)/$(NAME)
+
+BUNDLE=$(NAME)_$(LANGCODE)/$(NAME)
+DUMMYPROFILE=$(BUNDLE)/FirefoxPortable/App/DummyProfile
+install-extensions:
+	## Make a dummy profile to stop Firefox creating some large files
+	cp -R $(BUNDLE)/FirefoxPortable/App/DefaultData $(DUMMYPROFILE)
+	for extension in $(DEFAULT_EXTENSIONS) $(EXTENSIONS_DIR)/*; \
+	  do $(BUNDLE)/FirefoxPortable/App/firefox/firefox.exe \
+             -profile $(DUMMYPROFILE) \
+             -install-global-extension $$extension; \
+          done
+	## Delete the dummy profile
+	rm -fr $(DUMMYPROFILE)
+
+## Set the language for Vidalia
+patch-vidalia-language:
 	## Patch Vidalia
 	./patch-language.sh $(DEST)/Data/Vidalia/vidalia.conf $(LANGCODE)
-	## Download the required language pack
-	rm -f langpack.xpi
-ifeq ($(LANGCODE),fa)
-	make langpack_fa.xpi
-	cp langpack_fa.xpi langpack.xpi
-	cp $(CONFIG_SRC)/prefs_fa.js $(DEST)/FirefoxPortable/App/DefaultData/profile/prefs.js
-endif
-ifeq ($(LANGCODE),zh-cn)
-	make langpack_zh-cn.xpi
-	cp langpack_zh-cn.xpi langpack.xpi
-	cp $(CONFIG_SRC)/prefs_zh-cn.js $(DEST)/FirefoxPortable/App/DefaultData/profile/prefs.js
-endif
-	## Install the language pack if exists
-	cp -R $(DEST)/FirefoxPortable/App/DefaultData $(DUMMYPROFILE)
-	$(DEST)/FirefoxPortable/App/firefox/firefox.exe \
-         -profile $(DUMMYPROFILE) \
-         -install-global-extension langpack.xpi
-	rm -fr $(DUMMYPROFILE)
 
+patch-firefox-config:
+	## TODO
+
+###
+### Utilities
+###
+
 ## Copy Firefox preferences from a run of FirefoxPortable to be the default
 apply-prefs:
 	cp $(DEST)/FirefoxPortable/Data/profile/prefs.js $(CONFIG_SRC)
 
-compress-bundle:
-	$(SEVENZIP) a -sfx7z.sfx "Tor Browser.exe" $(DEST)
-
-clean:
-	rm -f *~
-	rm -fr $(DEST) $(BINARIES) $(DOCS)
-	rm -f "Tor Browser.exe"
-
 ## Export the source code of the bundle
 SRCVERSION=0.0.6
 SRCNAME=tor-browser-$(SRCVERSION)



More information about the tor-commits mailing list