[tor-commits] [tor-browser-build/master] Bug 21998: add option for debug builds
    gk at torproject.org 
    gk at torproject.org
       
    Wed Dec  6 13:06:24 UTC 2017
    
    
  
commit 055e751493bedd4914605f418aee590ba79f96d7
Author: Nicolas Vigier <boklm at torproject.org>
Date:   Thu Nov 23 14:47:13 2017 +0100
    Bug 21998: add option for debug builds
---
 Makefile                                            | 12 ++++++++++++
 README.MAKEFILE                                     |  4 ++++
 projects/firefox/build                              |  6 ++++++
 projects/release/config                             |  6 +++++-
 projects/tor-browser/RelativeLink/start-tor-browser |  7 +++++++
 projects/tor-browser/build                          |  4 ++++
 projects/tor-browser/config                         |  4 +++-
 projects/tor/build                                  |  1 +
 rbm.conf                                            |  7 +++++++
 9 files changed, 49 insertions(+), 2 deletions(-)
diff --git a/Makefile b/Makefile
index 54965ef..2707d41 100644
--- a/Makefile
+++ b/Makefile
@@ -8,6 +8,9 @@ release: submodule-update
 release-linux-x86_64: submodule-update
 	$(rbm) build release --target release --target torbrowser-linux-x86_64
 
+release-linux-x86_64-debug: submodule-update
+	$(rbm) build release --target release --target torbrowser-linux-x86_64-debug
+
 release-linux-i686: submodule-update
 	$(rbm) build release --target release --target torbrowser-linux-i686
 
@@ -26,6 +29,9 @@ alpha: submodule-update
 alpha-linux-x86_64: submodule-update
 	$(rbm) build release --target alpha --target torbrowser-linux-x86_64
 
+alpha-linux-x86_64-debug: submodule-update
+	$(rbm) build release --target alpha --target torbrowser-linux-x86_64-debug
+
 alpha-linux-i686: submodule-update
 	$(rbm) build release --target alpha --target torbrowser-linux-i686
 
@@ -44,6 +50,9 @@ nightly: submodule-update
 nightly-linux-x86_64: submodule-update
 	$(rbm) build release --target nightly --target torbrowser-linux-x86_64
 
+nightly-linux-x86_64-debug: submodule-update
+	$(rbm) build release --target nightly --target torbrowser-linux-x86_64-debug
+
 nightly-linux-i686: submodule-update
 	$(rbm) build release --target nightly --target torbrowser-linux-i686
 
@@ -80,6 +89,9 @@ testbuild: submodule-update
 testbuild-linux-x86_64: submodule-update
 	$(rbm) build release --target testbuild --target torbrowser-linux-x86_64
 
+testbuild-linux-x86_64-debug: submodule-update
+	$(rbm) build release --target testbuild --target torbrowser-linux-x86_64-debug
+
 testbuild-linux-i686: submodule-update
 	$(rbm) build release --target testbuild --target torbrowser-linux-i686
 
diff --git a/README.MAKEFILE b/README.MAKEFILE
index 98137b2..8094651 100644
--- a/README.MAKEFILE
+++ b/README.MAKEFILE
@@ -50,6 +50,10 @@ locale is created, without mar files. By default it is based on the
 alpha channel, but you can change that by editing rbm.conf.local.
 The resulting build can be found in directory testbuild.
 
+{release,alpha,nightly,testbuild}-linux-x86_64-debug
+----------------------------------------------------
+Create a debug build for Linux x86_64 with debug features such as ASan.
+
 fetch
 -----
 Fetch new commits from all components. This is useful when you want to
diff --git a/projects/firefox/build b/projects/firefox/build
index 13142e0..ed559b0 100644
--- a/projects/firefox/build
+++ b/projects/firefox/build
@@ -49,6 +49,12 @@ tar -C /var/tmp/build -xf [% project %]-[% c('version') %].tar.gz
 
 cd /var/tmp/build/[% project %]-[% c("version") %]
 mv -f $rootdir/[% c('input_files_by_name/mozconfig') %] .mozconfig
+[% IF c("var/asan") -%]
+  mv -f .mozconfig-asan .mozconfig
+  # Without disabling LSan our build is blowing up:
+  # https://bugs.torproject.org/10599#comment:52
+  export ASAN_OPTIONS="detect_leaks=0"
+[% END -%]
 
 eval $(perl $rootdir/get-moz-build-date [% c("var/copyright_year") %] $(cat browser/config/version.txt))
 if [ -z $MOZ_BUILD_DATE ]
diff --git a/projects/release/config b/projects/release/config
index 674ec80..e53ea43 100644
--- a/projects/release/config
+++ b/projects/release/config
@@ -17,6 +17,10 @@ targets:
   torbrowser-linux-x86_64:
     var:
       torbrowser-linux-x86_64: 1
+  torbrowser-linux-x86_64-debug:
+    var:
+      torbrowser-linux-x86_64: 1
+      debug-build: '-debug'
   torbrowser-linux-i686:
     var:
       torbrowser-linux-i686: 1
@@ -77,7 +81,7 @@ input_files:
    enable: '[% c("var/torbrowser-linux-x86_64") %]'
    target:
      - '[% c("var/build_target") %]'
-     - torbrowser-linux-x86_64
+     - 'torbrowser-linux-x86_64[% c("var/debug-build") %]'
 
  - name: sandbox-linux-x86_64
    project: sandbox
diff --git a/projects/tor-browser/RelativeLink/start-tor-browser b/projects/tor-browser/RelativeLink/start-tor-browser
index 2dd40fc..94a8c99 100755
--- a/projects/tor-browser/RelativeLink/start-tor-browser
+++ b/projects/tor-browser/RelativeLink/start-tor-browser
@@ -272,6 +272,13 @@ LD_LIBRARY_PATH="${HOME}/TorBrowser/Tor/"
 export LD_LIBRARY_PATH
 export SELFRANDO_write_layout_file=
 
+[% IF c("var/asan") -%]
+# We need to disable LSan which is enabled by default now. Otherwise we'll get
+# a crash during shutdown: https://bugs.torproject.org/10599#comment:59
+ASAN_OPTIONS="detect_leaks=0"
+export ASAN_OPTIONS
+[% END -%]
+
 function setControlPortPasswd() {
     local ctrlPasswd=$1
 
diff --git a/projects/tor-browser/build b/projects/tor-browser/build
index 56d6294..f8f1356 100644
--- a/projects/tor-browser/build
+++ b/projects/tor-browser/build
@@ -70,6 +70,10 @@ tar -C $TBDIR[% IF c("var/osx") %]/Contents/Resources[% END %] -xf [% c('input_f
 [% IF c("var/linux") %]
   cp RelativeLink/* ${TB_STAGE_DIR}/Browser/
   cp RelativeLink/start-tor-browser.desktop ${TB_STAGE_DIR}/
+  cat > ${TB_STAGE_DIR}/Browser/start-tor-browser << 'RBM_TB_EOF'
+[% INCLUDE 'RelativeLink/start-tor-browser' -%]
+RBM_TB_EOF
+  chmod +x ${TB_STAGE_DIR}/Browser/start-tor-browser
 [% END %]
 
 tar -C ${TB_STAGE_DIR} -xf [% c('input_files_by_name/firefox') %]/tor-browser.tar.gz
diff --git a/projects/tor-browser/config b/projects/tor-browser/config
index eb0a5d0..42f77e4 100644
--- a/projects/tor-browser/config
+++ b/projects/tor-browser/config
@@ -69,7 +69,9 @@ input_files:
   - URL: https://addons.cdn.mozilla.net/user-media/addons/722/noscript_security_suite-5.1.7-fx+sm.xpi
     name: noscript
     sha256sum: 617f73683acdca7df2a7d08843443d38929afbf40075e113ab3ccab0eef7cd6b
-  - filename: RelativeLink
+  - filename: 'RelativeLink/start-tor-browser.desktop'
+    enable: '[% c("var/linux") %]'
+  - filename: 'RelativeLink/execdesktop'
     enable: '[% c("var/linux") %]'
   - project: libdmg-hfsplus
     name: libdmg
diff --git a/projects/tor/build b/projects/tor/build
index 24617ce..ac51782 100644
--- a/projects/tor/build
+++ b/projects/tor/build
@@ -57,6 +57,7 @@ cd /var/tmp/build/[% project %]-[% c('version') %]
 ./autogen.sh
 find -type f -print0 | xargs -0 [% c("var/touch") %]
 ./configure --disable-asciidoc --with-libevent-dir="$libeventdir" --with-openssl-dir="$openssldir" \
+    [% IF c("var/asan") %]--enable-fragile-hardening[% END %] \
     [% IF c("var/windows") %]--with-zlib-dir="$zlibdir"[% END %] \
     [% IF c("var/osx") %]--enable-static-openssl[% END %] \
     --prefix="$distdir" [% c("var/configure_opt") %]
diff --git a/rbm.conf b/rbm.conf
index 4f74450..5abc5ff 100644
--- a/rbm.conf
+++ b/rbm.conf
@@ -130,6 +130,10 @@ targets:
   torbrowser-linux-x86_64:
     - linux-x86_64
     - linux
+  torbrowser-linux-x86_64-debug:
+    - linux-debug
+    - linux-x86_64
+    - linux
   torbrowser-linux-i686:
     - linux-i686
     - linux
@@ -171,6 +175,9 @@ targets:
         - libtool
         - zip
         - unzip
+  linux-debug:
+    var:
+      asan: 1
 
   torbrowser-windows-i686:
     - windows-i686
    
    
More information about the tor-commits
mailing list