[tbb-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 tbb-commits
mailing list