commit 9bb4a20da14accf5fff1775925498355271b1c77 Author: Erinn Clark erinn@torproject.org Date: Wed Jul 25 18:04:18 2012 +0100
update alpha linux makefile with Sebastian's stable TBB logic --- build-scripts/linux-alpha.mk | 257 +++++++++++++----------------------------- 1 files changed, 79 insertions(+), 178 deletions(-)
diff --git a/build-scripts/linux-alpha.mk b/build-scripts/linux-alpha.mk index 0eacd15..21977fe 100644 --- a/build-scripts/linux-alpha.mk +++ b/build-scripts/linux-alpha.mk @@ -5,87 +5,63 @@ ### Copyright 2009 Jacob Appelbaum jacob@appelbaum.net ### Copyright 2010 Erinn Clark erinn@torproject.org ### -### You want to do the following currently supported activities: -# This downloads and compiles everything -### make -f linux-alpha.mk build-all-binaries -# This makes a generic bundle -### make -f linux-alpha.mk generic-bundle -# This makes the English bundle -### make -f linux-alpha.mk bundle_en-US -# This makes the German bundle -### make -f linux-alpha.mk bundle_de -# This makes the German compressed bundle -### make -f linux-alpha.mk compressed-bundle_de -# It's possible you may also want to do: -### make -f linux-alpha.mk build-all-binaries -### make -f linux-alpha.mk all-compressed-bundles -### ... -### Look in tbbl-dist/ for your files. ### ### See LICENSE for licensing information ### -### $Id: Makefile 19973 2009-07-12 02:26:03Z phobos $ -###
##################### ### Configuration ### #####################
-## Include versions -include $(PWD)/versions-alpha.mk - ## Architecture ARCH_TYPE=$(shell uname -m) BUILD_NUM=2 PLATFORM=Linux
-## Location of directory for source unpacking -FETCH_DIR=/srv/build-trees/build-alpha-$(ARCH_TYPE) +## Build machine specific settings +# Number of cpu cores used to build in parallel +NUM_CORES=2 + +## Location of directory for source downloading +FETCH_DIR=/srv/build-trees/build-experimental +## Location of directory for source unpacking/building +BUILD_DIR=$(FETCH_DIR)/$(ARCH_TYPE) ## Location of directory for prefix/destdir/compiles/etc -BUILT_DIR=$(FETCH_DIR)/built +BUILT_DIR=$(BUILD_DIR)/built TBB_FINAL=$(BUILT_DIR)/TBBL
-source-dance: fetch-source unpack-source - echo "We're ready for building now." +## Include versions (must happen after variable definitions above +include $(PWD)/versions-alpha.mk
-ZLIB_DIR=$(FETCH_DIR)/zlib-$(ZLIB_VER) ZLIB_OPTS=--shared --prefix=$(BUILT_DIR) -build-zlib: +build-zlib: $(ZLIB_DIR) cd $(ZLIB_DIR) && ./configure $(ZLIB_OPTS) - cd $(ZLIB_DIR) && make + cd $(ZLIB_DIR) && make -j $(NUM_CORES) cd $(ZLIB_DIR) && make install + touch $(STAMP_DIR)/build-zlib + +LIBPNG_OPTS=--prefix=$(BUILT_DIR) +build-libpng: $(LIBPNG_DIR) + cd $(LIBPNG_DIR) && ./configure $(LIBPNG_OPTS) + cd $(LIBPNG_DIR) && make + cd $(LIBPNG_DIR) && make install + touch $(STAMP_DIR)/build-libpng
-OPENSSL_DIR=$(FETCH_DIR)/openssl-$(OPENSSL_VER) OPENSSL_OPTS=-no-idea -no-rc5 -no-md2 shared zlib --prefix=$(BUILT_DIR) --openssldir=$(BUILT_DIR) -I$(BUILT_DIR)/include -L$(BUILT_DIR)/lib -build-openssl: +build-openssl: build-zlib $(OPENSSL_DIR) cd $(OPENSSL_DIR) && ./config $(OPENSSL_OPTS) cd $(OPENSSL_DIR) && make depend cd $(OPENSSL_DIR) && make - cd $(OPENSSL_DIR) && make install + cd $(OPENSSL_DIR) && make install_sw + touch $(STAMP_DIR)/build-openssl
-QT_DIR=$(FETCH_DIR)/qt-everywhere-opensource-src-$(QT_VER) -QT_BUILD_PREFS=-system-zlib -confirm-license -opensource -openssl-linked -no-qt3support -fast -release -nomake demos -nomake examples +QT_BUILD_PREFS=-system-zlib -confirm-license -opensource -openssl-linked -no-webkit -no-qt3support -fast -release -nomake demos -nomake examples QT_OPTS=$(QT_BUILD_PREFS) -prefix $(BUILT_DIR) -I $(BUILT_DIR)/include -I $(BUILT_DIR)/include/openssl/ -L$(BUILT_DIR)/lib -build-qt: +build-qt: build-zlib build-openssl $(QT_DIR) cd $(QT_DIR) && ./configure $(QT_OPTS) - cd $(QT_DIR) && make + cd $(QT_DIR) && make -j $(NUM_CORES) cd $(QT_DIR) && make install - -QTSCRIPT_DIR=$(FETCH_DIR)/qtscriptgenerator -QTSCRIPT_OPTS= -build-qtscript: - cd $(QTSCRIPT_DIR)/generator && $(BUILT_DIR)/bin/qmake - cd $(QTSCRIPT_DIR)/generator && make -j4 - cd $(QTSCRIPT_DIR)/generator && ./generator --include-paths=/usr/include/ - cp ../src/current-patches/qt/000* $(QTSCRIPT_DIR)/qtbindings/qtscript_uitools - cp patch-any-src.sh $(QTSCRIPT_DIR)/qtbindings/qtscript_uitools - cd $(QTSCRIPT_DIR)/qtbindings/qtscript_uitools && ./patch-any-src.sh - cd $(QTSCRIPT_DIR)/generator && $(BUILT_DIR)/bin/qmake - cd $(QTSCRIPT_DIR)/generator && make -j4 - cd $(QTSCRIPT_DIR)/qtbindings && $(BUILT_DIR)/bin/qmake -recursive CONFIG+="release" INCLUDEPATH+=/srv/build-trees/build-alpha-i686/built/include -build-qtfoo: - cd $(QTSCRIPT_DIR)/qtbindings && for i in $(ls -d qtscript_*); do make -C $i release; done - + touch $(STAMP_DIR)/build-qt
VIDALIA_OPTS=-DCMAKE_BUILD_TYPE=debug -DQT_QMAKE_EXECUTABLE=$(BUILT_DIR)/bin/qmake .. build-vidalia: build-qt $(VIDALIA_DIR) @@ -94,55 +70,31 @@ build-vidalia: build-qt $(VIDALIA_DIR) cd $(VIDALIA_DIR)/build && DESTDIR=$(BUILT_DIR) make install touch $(STAMP_DIR)/build-vidalia
-LIBEVENT_DIR=$(FETCH_DIR)/libevent-$(LIBEVENT_VER) LIBEVENT_OPTS=--prefix=$(BUILT_DIR) -build-libevent: +build-libevent: build-zlib build-openssl $(LIBEVENT_DIR) cd $(LIBEVENT_DIR) && ./configure $(LIBEVENT_OPTS) - cd $(LIBEVENT_DIR) && make -j2 + cd $(LIBEVENT_DIR) && make -j $(NUM_CORES) cd $(LIBEVENT_DIR) && make install + touch $(STAMP_DIR)/build-libevent
-LIBPNG_DIR=$(FETCH_DIR)/libpng-$(LIBPNG_VER) -LIBPNG_OPTS=--prefix=$(BUILT_DIR) -build-libpng: - cd $(LIBPNG_DIR) && ./configure $(LIBPNG_OPTS) - cd $(LIBPNG_DIR) && make - cd $(LIBPNG_DIR) && make install - -TOR_DIR=$(FETCH_DIR)/tor-$(TOR_VER) -TOR_OPTS=--enable-gcc-warnings --with-openssl-dir=$(BUILT_DIR) --with-zlib-dir=$(BUILT_DIR) --with-libevent-dir=$(BUILT_DIR)/lib --prefix=$(BUILT_DIR) -build-tor: - cd $(TOR_DIR) && ./configure $(TOR_OPTS) - cd $(TOR_DIR) && make -j2 - #cd $(TOR_DIR) && make install - -## Polipo doesn't use autoconf, so we just have to hack their Makefile -## This probably needs to be updated if Polipo ever updates their Makefile -POLIPO_DIR=$(FETCH_DIR)/polipo-$(POLIPO_VER) -POLIPO_MAKEFILE=$(CONFIG_SRC)/polipo-Makefile -build-polipo: - cp $(POLIPO_MAKEFILE) $(POLIPO_DIR)/Makefile - cd $(POLIPO_DIR) && make && PREFIX=$(FETCH_DIR)/built/ make install.binary +TOR_OPTS=--with-openssl-dir=$(BUILT_DIR) --with-zlib-dir=$(BUILT_DIR) --with-libevent-dir=$(BUILT_DIR)/lib
build-pidgin: echo "We're not building pidgin yet!"
-FIREFOX_DIR=$(FETCH_DIR)/mozilla-release -build-firefox: - cp ../src/current-patches/firefox/* $(FIREFOX_DIR) - cp patch-any-src.sh $(FIREFOX_DIR) - cp $(CONFIG_SRC)/dot_mozconfig $(FIREFOX_DIR)/mozconfig - cd $(FIREFOX_DIR) && ./patch-any-src.sh +build-firefox: config/dot_mozconfig $(FIREFOX_DIR) + cp config/dot_mozconfig $(FIREFOX_DIR)/mozconfig + cp branding/* $(FIREFOX_DIR)/browser/branding/official cd $(FIREFOX_DIR) && make -f client.mk build + cd $(FIREFOX_DIR) && make -C obj-$(ARCH_TYPE)-* package INNER_MAKE_PACKAGE=true + touch $(STAMP_DIR)/build-firefox
copy-firefox: - -rm -rf $(FETCH_DIR)/Firefox - ## This is so ugly. Update it to use cool tar --transform soon. - cd $(FIREFOX_DIR) && make -C obj-$(ARCH_TYPE)-*/ package - cp $(FIREFOX_DIR)/obj-$(ARCH_TYPE)-*/dist/*bz2 $(FETCH_DIR) - cd $(FETCH_DIR) && tar -xvjf firefox-$(FIREFOX_VER).en-US.linux-$(ARCH_TYPE).tar.bz2 && mv firefox Firefox - -# source-dance unpack-source -build-all-binaries: source-dance build-zlib build-openssl build-libpng build-qt build-vidalia build-libevent build-tor build-firefox + -rm -rf $(BUILD_DIR)/Firefox + mkdir -p $(BUILD_DIR)/Firefox + cp -r $(FIREFOX_DIR)/obj-$(ARCH_TYPE)-*/dist/firefox/* $(BUILD_DIR)/Firefox + +build-all-binaries: source-dance build-zlib build-openssl build-libpng build-qt build-vidalia build-libevent build-tor build-firefox copy-firefox echo "If we're here, we've done something right."
## Location of compiled libraries @@ -158,24 +110,15 @@ QT=$(COMPILED_LIBS) ZLIB=$(COMPILED_LIBS)
## Location of binary bundle components -POLIPO=$(COMPILED_BINS)/polipo -#TOR=$(COMPILED_BINS)/tor -#VIDALIA=$(BUILT_DIR)/usr/local/bin/vidalia -TOR=$(FETCH_DIR)/tor-$(TOR_VER)/src/or/tor -VIDALIA=$(FETCH_DIR)/vidalia-$(VIDALIA_VER)/build/src/vidalia/vidalia +TOR=$(COMPILED_BINS)/tor +VIDALIA=$(BUILT_DIR)/usr/local/bin/vidalia ## Someday, this will be our custom Firefox -FIREFOX=$(FETCH_DIR)/Firefox +FIREFOX=$(BUILD_DIR)/Firefox PIDGIN=$(COMPILED_BINS)/pidgin
## Location of utility applications WGET:=$(shell which wget)
-## Size of split archive volumes for WinRAR -SPLITSIZE=1440k - -## Location of config files -CONFIG_SRC=config - ## Destination for the generic bundle DEST=generic-bundle
@@ -202,7 +145,7 @@ endif DEFAULT_EXTENSIONS=torbutton.xpi noscript.xpi httpseverywhere.xpi
## Where to download Mozilla language packs -MOZILLA_LANGUAGE=http://releases.mozilla.org/pub/mozilla.org/firefox/releases/$(FIREFOX_VER)/... +MOZILLA_LANGUAGE=https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/$(FIREFOX_VER)/linu...
## Put more extensions here EXTENSIONS_DIR=extensions @@ -235,13 +178,14 @@ all-compressed-bundles: compressed-bundle_ar \ compressed-bundle_es-ES \ compressed-bundle_fa \ compressed-bundle_fr \ + compressed-bundle_it \ + compressed-bundle_ko \ compressed-bundle_nl \ compressed-bundle_pl \ compressed-bundle_pt-PT \ compressed-bundle_ru \ - compressed-bundle_zh-CN \ - compressed-bundle_it \ - compressed-bundle_vi + compressed-bundle_vi \ + compressed-bundle_zh-CN
## ## Cleanup @@ -253,6 +197,7 @@ clean: rm -f *~ rm -fr *.xpi *.jar *.zip rm -fr $(NAME)_* + rm -f $(STAMP_DIR)/*.stamp cd ../src/RelativeLink/ && $(MAKE) clean
## @@ -271,7 +216,7 @@ generic-bundle: directory-structure \ launcher \ strip-it-stripper \ remove-bundle-shared-lib-symlinks - touch generic-bundle.stamp + touch $(STAMP_DIR)/generic-bundle.stamp
APPDIR=$(DEST)/App LIBSDIR=$(DEST)/Lib @@ -280,7 +225,7 @@ DATADIR=$(DEST)/Data TB_TMPDIR=$(DEST)/tmp
## Build directory structure -directory-structure: +directory-structure: rm -fr $(DEST) mkdir -p $(APPDIR) mkdir -p $(LIBSDIR) @@ -299,19 +244,20 @@ install-binaries: cp -d $(QT)/libQtGui.so* $(LIBSDIR) cp -d $(QT)/libQtNetwork.so* $(LIBSDIR) cp -d $(QT)/libQtXml.so* $(LIBSDIR) - cp -d $(QT)/libQtScript.so* $(LIBSDIR) - #rm $(LIBSDIR)/libQt*.so*.debug # zlib - cp -d $(ZLIB)/libz.so $(ZLIB)/libz.so.1 $(ZLIB)/libz.so.1.2.6 $(LIBSDIR)/libz + cp -d $(ZLIB)/libz.so $(ZLIB)/libz.so.1 $(ZLIB)/libz.so.1.2.7 $(LIBSDIR)/libz # Libevent - cp -d $(LIBEVENT)/libevent-2.0.so.5 $(LIBEVENT)/libevent-2.0.so.5.1.5 $(LIBEVENT)/libevent_core.so \ - $(LIBEVENT)/libevent_core-2.0.so.5 $(LIBEVENT)/libevent_core-2.0.so.5.1.5 \ - $(LIBEVENT)/libevent_extra-2.0.so.5 $(LIBEVENT)/libevent_extra-2.0.so.5.1.5 \ + cp -d $(LIBEVENT)/libevent-2.0.so.5 $(LIBEVENT)/libevent-2.0.so.5.1.7 $(LIBEVENT)/libevent_core.so \ + $(LIBEVENT)/libevent_core-2.0.so.5 $(LIBEVENT)/libevent_core-2.0.so.5.1.7 \ + $(LIBEVENT)/libevent_extra-2.0.so.5 $(LIBEVENT)/libevent_extra-2.0.so.5.1.7 \ $(LIBEVENT)/libevent_extra.so $(LIBEVENT)/libevent.so $(LIBSDIR) + # libpng cp -d $(LIBPNG)/libpng15.so* $(LIBSDIR) # OpenSSL cp -d $(OPENSSL)/libssl.so* $(OPENSSL)/libcrypto.so* $(LIBSDIR) + chmod 644 $(LIBSDIR)/libssl.so* + chmod 644 $(LIBSDIR)/libcrypto.so* # Vidalia cp $(VIDALIA) $(APPDIR) cp $(TOR) $(APPDIR) @@ -342,32 +288,26 @@ ifeq ($(USE_PIDGIN),1) cp -R $(PIDGIN) $(APPDIR) endif
-## Configure Firefox, Vidalia, Polipo and Tor +## Configure Firefox, Vidalia, and Tor configure-apps: ## Configure Firefox preferences mkdir -p $(DEST)/Data/profile/extensions - cp -R $(CONFIG_SRC)/firefox-profiles.ini $(DEST)/Data/profiles.ini - cp $(CONFIG_SRC)/bookmarks.html $(DEST)/Data/profile - cp $(CONFIG_SRC)/no-polipo-4.0.js $(DEST)/Data/profile/prefs.js + cp -R config/firefox-profiles.ini $(DEST)/Data/profiles.ini + cp config/bookmarks.html $(DEST)/Data/profile + cp config/prefs.js $(DEST)/Data/profile/prefs.js ## Configure Pidgin ifeq ($(USE_PIDGIN),1) mkdir -p $(DEST)/PidginPortable/Data/settings/.purple - cp $(CONFIG_SRC)/prefs.xml $(DEST)/PidginPortable/Data/settings/.purple + cp config/prefs.xml $(DEST)/PidginPortable/Data/settings/.purple endif ## Configure Vidalia - mkdir -p $(DEST)/Data/Vidalia/plugins - cp -r $(FETCH_DIR)/vidalia-plugins/tbb $(DEST)/Data/Vidalia/plugins - mkdir -p $(DEST)/App/script - cp $(FETCH_DIR)/qtscriptgenerator/plugins/script/* $(DEST)/App/script ifeq ($(USE_PIDGIN),1) - cp $(CONFIG_SRC)/alpha/vidalia.conf.ff+pidgin-linux $(DEST)/Data/Vidalia/vidalia.conf + cp config/vidalia.conf.ff+pidgin-linux $(DEST)/Data/Vidalia/vidalia.conf else - cp $(CONFIG_SRC)/alpha/vidalia.conf.ff-linux $(DEST)/Data/Vidalia/vidalia.conf + cp config/alpha/vidalia.conf.ff-linux $(DEST)/Data/Vidalia/vidalia.conf endif - ## Configure Polipo - #cp $(CONFIG_SRC)/polipo.conf $(DEST)/Data/Polipo/polipo.conf ## Configure Tor - cp $(CONFIG_SRC)/torrc-linux $(DEST)/Data/Tor/torrc + cp config/alpha/torrc-linux $(DEST)/Data/Tor/torrc cp $(TOR_DIR)/src/config/geoip $(DEST)/Data/Tor/geoip chmod 700 $(DEST)/Data/Tor
@@ -378,7 +318,6 @@ launcher:
strip-it-stripper: strip $(APPDIR)/tor - #strip $(APPDIR)/polipo strip $(APPDIR)/vidalia strip $(LIBSDIR)/*.so* strip $(LIBSDIR)/libz/*.so* @@ -386,35 +325,6 @@ strip-it-stripper: remove-bundle-shared-lib-symlinks: ./remove-shared-lib-symlinks $(LIBSDIR) ./remove-shared-lib-symlinks $(LIBSDIR)/libz - ./remove-shared-lib-symlinks $(APPDIR)/script - -## -## How to create required extensions -## - -## Torbutton development version -torbutton.xpi: - $(WGET) -O $@ $(TORBUTTON) - -## NoScript development version -noscript.xpi: - $(WGET) -O $@ $(NOSCRIPT) - -## BetterPrivacy -betterprivacy.xpi: - $(WGET) -O $@ $(BETTERPRIVACY) - -## HTTPS Everywhere -httpseverywhere.xpi: - $(WGET) -O $@ --no-check-certificate $(HTTPSEVERYWHERE) - -## Generic language pack rule -langpack_%.xpi: - $(WGET) -O $@ $(MOZILLA_LANGUAGE)/$*.xpi - -## English comes as default -#langpack_en-US.xpi: -# touch $@
## ## Customize the bundle @@ -426,9 +336,9 @@ compressed-bundle_%: LANGCODE=$* make -f linux-alpha.mk compressed-bundle-localized
bundle-localized_%.stamp: - make -f linux-alpha.mk copy-files_$* install-extensions install-lang-extensions patch-vidalia-language patch-firefox-language \ + make -f linux-alpha.mk copy-files_$* install-extensions install-torbutton install-lang-extensions patch-vidalia-language patch-firefox-language \ patch-pidgin-language update-extension-pref write-tbb-version - touch bundle-localized_$*.stamp + touch $(STAMP_DIR)/bundle-localized_$*.stamp
bundle-localized: bundle-localized_$(LANGCODE).stamp
@@ -449,7 +359,7 @@ DUMMYPROFILE=$(BUNDLE)/.mozilla/ ## This is a little overcomplicated, but I'm keeping it here in case there are ## extensions we want to use in the future install-extensions: $(DEFAULT_EXTENSIONS) - for extension in *.xpi; \ + for extension in httpseverywhere.xpi noscript.xpi; \ do \ cp $$extension $$extension.zip; \ ext_id=$$(unzip -p $$extension.zip install.rdf | sed -n '/em:id/{s#[^<]*em:id(.*)</em:id>#\1#p;q}'); \ @@ -458,20 +368,11 @@ install-extensions: $(DEFAULT_EXTENSIONS) (cd $(BUNDLE)/Data/profile/extensions/$$ext_id/ && unzip *.zip && rm *.zip); \ done
-install-betterprivacy: betterprivacy.xpi - mkdir -p $(BUNDLE)/Data/profile/extensions/{d40f5e7b-d2cf-4856-b441-cc613eeffbe3} - cp betterprivacy.xpi $(BUNDLE)/Data/profile/extensions/{d40f5e7b-d2cf-4856-b441-cc613eeffbe3}/betterprivacy.zip - (cd $(BUNDLE)/Data/profile/extensions/{d40f5e7b-d2cf-4856-b441-cc613eeffbe3}/ && unzip *.zip && rm *.zip); - +install-torbutton: torbutton.xpi + mkdir -p $(BUNDLE)/Data/profile/extensions/ + cp torbutton.xpi $(BUNDLE)/Data/profile/extensions/{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}.xpi
## Language extensions need to be handled differently from other extensions -fix-install-rdf: $(filter-out langpack_en-US.xpi,langpack_$(LANGCODE).xpi) -ifneq ($(LANGCODE), en-US) - rm -fr xx - mkdir xx - (cd xx && unzip ../langpack_$(LANGCODE).xpi && sed -i -e "s/em:maxVersion>6.0.1/em:maxVersion>6.0.*/" install.rdf && zip -r ../langpack_$(LANGCODE).xpi .) -endif - install-lang-extensions: $(filter-out langpack_en-US.xpi,langpack_$(LANGCODE).xpi) ifneq ($(LANGCODE), en-US) mkdir -p $(BUNDLE)/Data/profile/extensions @@ -494,12 +395,12 @@ endif
patch-firefox-language: ## Patch the default Firefox prefs.js - ## Don't use {} because they aren't always interpreted correctly. Thanks, sh. + ## Don't use {} because they aren't always interpreted correctly. Thanks, sh. mkdir -p $(BUNDLE)/App/Firefox/defaults/profile/ - cp $(CONFIG_SRC)/bookmarks.html $(BUNDLE)/App/Firefox/defaults/profile/ - cp $(CONFIG_SRC)/no-polipo-4.0.js $(BUNDLE)/App/Firefox/defaults/profile/prefs.js - cp $(CONFIG_SRC)/bookmarks.html $(BUNDLE)/Data/profile - cp $(CONFIG_SRC)/no-polipo-4.0.js $(BUNDLE)/Data/profile/prefs.js + cp config/bookmarks.html $(BUNDLE)/App/Firefox/defaults/profile/ + cp config/prefs.js $(BUNDLE)/App/Firefox/defaults/profile/prefs.js + cp config/bookmarks.html $(BUNDLE)/Data/profile + cp config/prefs.js $(BUNDLE)/Data/profile/prefs.js ./patch-firefox-language.sh $(BUNDLE)/App/Firefox/defaults/profile/prefs.js $(LANGCODE) -e ./patch-firefox-language.sh $(BUNDLE)/Data/profile/prefs.js $(LANGCODE) -e