[tor-commits] [tor-browser-build/master] Bug 29981: Add option to build without using containers

gk at torproject.org gk at torproject.org
Mon Apr 29 10:24:46 UTC 2019


commit 9072578261fc2e4198e39b81313683bf2674c5b4
Author: Nicolas Vigier <boklm at torproject.org>
Date:   Thu Apr 4 14:35:37 2019 +0200

    Bug 29981: Add option to build without using containers
    
    We do that by adding support for a no_containers target which defines
    the new option var/container/global_disable in rbm.conf. We already had
    the option var/container/use_container doing something similar to this
    new option, however it can not be overriden in rbm.conf as we define it
    in each project's configuration, which has priority over rbm.conf.
---
 README                          | 29 +++++++++++++++++++++++++++++
 projects/container-image/config |  9 +++++++++
 projects/firefox/build          |  4 ++--
 projects/release/config         |  7 +++++++
 rbm.conf                        | 19 +++++++++++++------
 5 files changed, 60 insertions(+), 8 deletions(-)

diff --git a/README b/README
index 2b09ab1..1dc2cfd 100644
--- a/README
+++ b/README
@@ -182,6 +182,35 @@ of files and containers that would be removed without doing it, you can
 use 'make clean-dry-run'.
 
 
+Building without containers (Android builds only)
+-------------------------------------------------
+
+By default the build is done inside containers. Adding the no_containers
+target will disable the use of containers. The following commands can
+be used to build the alpha version for android-armv7 and android-x86:
+
+  ./rbm/rbm build release --target no_containers --target testbuild \
+                          --target torbrowser-android-armv7
+  ./rbm/rbm build release --target no_containers --target testbuild \
+                          --target torbrowser-android-x86
+
+Note: the logs will still show the use and creation of a container image
+called "containers_disabled". This is due to the way we disable the use
+of containers: the container-image project is still called, but it will
+just create an empty file instead of a real container image.
+
+The build without containers is currently only supported for the Android
+builds, and will require that you run Debian Stretch and install build
+dependencies for all the components that are built. This can be done
+with the following command:
+
+  # apt-get install build-essential python automake libtool zip unzip
+            autoconf2.13 openjdk-8-jdk gettext-base autotools-dev \
+            automake autoconf libtool autopoint libssl-dev \
+            pkg-config zlib1g-dev libparallel-forkmanager-perl \
+            libfile-slurp-perl bzip2 xz-utils apksigner
+
+
 Common Build Errors
 -------------------
 
diff --git a/projects/container-image/config b/projects/container-image/config
index 68c401a..effcdf3 100644
--- a/projects/container-image/config
+++ b/projects/container-image/config
@@ -13,6 +13,15 @@ lsb_release:
   codename: wheezy
   release: 7.11
 
+targets:
+  no_containers:
+    filename: containers_disabled
+    pre: ''
+    input_files: []
+    build: |
+      mkdir -p [% dest_dir %]
+      touch [% dest_dir _ '/' _ c('filename') %]
+
 pre: |
   #!/bin/sh
   # [% c('var/container/suite') %]
diff --git a/projects/firefox/build b/projects/firefox/build
index c070770..aace388 100644
--- a/projects/firefox/build
+++ b/projects/firefox/build
@@ -98,8 +98,8 @@ mv -f $rootdir/[% c('input_files_by_name/mozconfig') %] .mozconfig
 [% END -%]
 
 [% IF c("var/android") %]
-  export GRADLE_MAVEN_REPOSITORIES="file:///var/tmp/gradle-dependencies"
-  gradle_repo=/var/tmp/gradle-dependencies
+  gradle_repo=/var/tmp/dist/gradle-dependencies
+  export GRADLE_MAVEN_REPOSITORIES="file://$gradle_repo"
   # Move Gradle Repo to hard-coded location. This location is embedded in the file
   # chrome/toolkit/content/global/buildconfig.html so needs to be standard for reproducibility
   mv $rootdir/[% c('input_files_by_name/gradle-dependencies') %] $gradle_repo
diff --git a/projects/release/config b/projects/release/config
index 52a416a..ddb17d1 100644
--- a/projects/release/config
+++ b/projects/release/config
@@ -6,6 +6,7 @@ var:
   signed_status: unsigned
   today: '[% USE date; date.format(format = "%Y-%m-%d") %]'
   publish_dir: '[% c("var/signed_status") %]/[% c("version") %]-[% c("var/torbrowser_build") %]'
+  containers_target: with_containers
 
 targets:
   torbrowser-all:
@@ -85,6 +86,10 @@ targets:
       build_target: torbrowser-testbuild
       publish_dir: ''
 
+  no_containers:
+    var:
+      containers_target: no_containers
+
   signed:
     var:
       signed_status: signed
@@ -100,6 +105,7 @@ input_files:
    project: tor-browser
    enable: '[% c("var/torbrowser-android-armv7") %]'
    target:
+     - '[% c("var/containers_target") %]'
      - '[% c("var/build_target") %]'
      - torbrowser-android-armv7
 
@@ -107,6 +113,7 @@ input_files:
    project: tor-browser
    enable: '[% c("var/torbrowser-android-x86") %]'
    target:
+     - '[% c("var/containers_target") %]'
      - '[% c("var/build_target") %]'
      - torbrowser-android-x86
 
diff --git a/rbm.conf b/rbm.conf
index a3482ac..9e4fc78 100644
--- a/rbm.conf
+++ b/rbm.conf
@@ -40,7 +40,7 @@ var:
   build_id_txt: |
     [% c("version") %]
     [% IF c("git_hash") || c("hg_hash"); GET c("abbrev"); END; %]
-    [% IF c("var/container/use_container") -%]
+    [% IF c("var/container/use_container") && ! c("var/container/global_disable") -%]
     [% c("var/container/suite") %]
     [% c("var/container/arch") %]
     [% END -%]
@@ -118,6 +118,9 @@ var:
     export SHELL=/bin/bash
     export HOME=$rootdir
     umask 0022
+    [% IF c("var/container/global_disable") -%]
+      rm -Rf /var/tmp/build /var/tmp/dist
+    [% END -%]
 
   DOCSDIR_project: '[% project %]'
   set_PTDIR_DOCSDIR: |
@@ -351,6 +354,10 @@ targets:
     var:
       build_id: 1
 
+  no_containers:
+    var:
+      container:
+        global_disable: 1
 
 # change the default gpg_wrapper to allow git tag signed using an
 # expired key.
@@ -376,11 +383,11 @@ gpg_wrapper: |
         exec [% c('gpg_bin') %] [% c('gpg_args') %] --with-fingerprint [% gpg_kr %] "$@"
   fi
 
-remote_start: '[% IF c("var/container/use_container") %][% c("runc/remote_start") %][% END %]'
-remote_exec: '[% IF c("var/container/use_container") %][% c("runc/remote_exec") %][% END %]'
-remote_put: '[% IF c("var/container/use_container") %][% c("runc/remote_put") %][% END %]'
-remote_get: '[% IF c("var/container/use_container") %][% c("runc/remote_get") %][% END %]'
-remote_finish: '[% IF c("var/container/use_container") %][% c("runc/remote_finish") %][% END %]'
+remote_start: '[% IF c("var/container/use_container") && ! c("var/container/global_disable") %][% c("runc/remote_start") %][% END %]'
+remote_exec: '[% IF c("var/container/use_container") && ! c("var/container/global_disable") %][% c("runc/remote_exec") %][% END %]'
+remote_put: '[% IF c("var/container/use_container") && ! c("var/container/global_disable") %][% c("runc/remote_put") %][% END %]'
+remote_get: '[% IF c("var/container/use_container") && ! c("var/container/global_disable") %][% c("runc/remote_get") %][% END %]'
+remote_finish: '[% IF c("var/container/use_container") && ! c("var/container/global_disable") %][% c("runc/remote_finish") %][% END %]'
 
 runc:
   remote_start: |





More information about the tor-commits mailing list