[tbb-commits] [tor-browser-build/maint-10.0-android] Bug 40270: Improve process to generate gradle-dependencies-list.txt
sysrqb at torproject.org
sysrqb at torproject.org
Thu May 6 03:59:31 UTC 2021
commit 0ef5812083c3cdd2d4aedf15144fc75074645aa8
Author: Nicolas Vigier <boklm at torproject.org>
Date: Tue Apr 13 17:59:12 2021 +0200
Bug 40270: Improve process to generate gradle-dependencies-list.txt
---
Makefile | 9 +++++
projects/android-components/build | 4 ++-
projects/android-components/config | 14 ++++++--
projects/application-services/build | 4 ++-
projects/application-services/config | 23 +++++++++++--
{tools => projects/common}/gen_gradle_deps_file.sh | 0
.../how-to-create-gradle-dependencies-list.txt | 40 ++++++++++++++++------
projects/fenix/build | 7 +++-
projects/fenix/config | 33 ++++++++++++------
9 files changed, 105 insertions(+), 29 deletions(-)
diff --git a/Makefile b/Makefile
index d4562ac..c30c70b 100644
--- a/Makefile
+++ b/Makefile
@@ -219,6 +219,15 @@ create_glean_deps_tarball: submodule-update
create_glean_deps_tarball-with_torsocks: submodule-update
$(rbm) build glean --step create_glean_deps_tarball --target alpha --target torbrowser-android-armv7 --target with_torsocks
+get_gradle_dependencies_list-fenix: submodule-update
+ $(rbm) build fenix --step get_gradle_dependencies_list --target nightly --target torbrowser-android-armv7
+
+get_gradle_dependencies_list-application-services: submodule-update
+ $(rbm) build application-services --step get_gradle_dependencies_list --target nightly --target torbrowser-android-armv7
+
+get_gradle_dependencies_list-android-components: submodule-update
+ $(rbm) build android-components --step get_gradle_dependencies_list --target nightly --target torbrowser-android-armv7
+
submodule-update:
git submodule update --init
diff --git a/projects/android-components/build b/projects/android-components/build
index 896ba3a..e14b803 100644
--- a/projects/android-components/build
+++ b/projects/android-components/build
@@ -41,7 +41,9 @@ patch -p1 < $rootdir/git.patch
# XXX: fetching deps for `assembleGeckoBeta -x lint` by using that same target
# results in some missing dependencies for yet unknown reasons. Thus, we use
# `assemble` instead for now.
- gradle --debug --no-daemon assemble
+ gradle --debug --no-daemon assemble > gradle.log 2>&1 || ( cat gradle.log; exit 1 )
+ $rootdir/gen_gradle_deps_file.sh gradle.log
+ mv gradle-dependencies-list.txt '[% dest_dir _ "/" _ c("filename") %]'
[% ELSE %]
# Prepare Glean dependencies for offline build
tar -xf $rootdir/[% c('input_files_by_name/glean') %]
diff --git a/projects/android-components/config b/projects/android-components/config
index 531b278..33bcdaf 100644
--- a/projects/android-components/config
+++ b/projects/android-components/config
@@ -14,9 +14,6 @@ var:
use_container: 1
# This should be updated when the list of gradle dependencies is changed.
gradle_dependencies_version: 22
- # Switch to make it easier to grab all dependencies during a dry-run.
- # Note: Use the commit before support for new GeckoView interfaces gets added.
- fetch_gradle_dependencies: 0
gradle_version: 6.6.1
glean_parser: 2.2.0
@@ -27,10 +24,13 @@ targets:
input_files:
- project: container-image
+ pkg_type: build
- name: '[% c("var/compiler") %]'
project: '[% c("var/compiler") %]'
+ pkg_type: build
- project: gradle
name: gradle
+ pkg_type: build
- name: geckoview
project: geckoview
pkg_type: merge_aars
@@ -52,6 +52,8 @@ input_files:
name: glean
sha256sum: 24ceaaadaf155445e8ad135173d894e05c0745b41ab5fee150f9548550acf2a6
enable: '[% !c("var/fetch_gradle_dependencies") %]'
+ - filename: gen_gradle_deps_file.sh
+ enable: '[% c("var/fetch_gradle_dependencies") %]'
steps:
list_toolchain_updates:
@@ -75,3 +77,9 @@ steps:
- name: glean
project: glean
pkg_type: src
+
+ get_gradle_dependencies_list:
+ filename: 'gradle-dependencies-list-[% c("var/android_components_version") %].txt'
+ get_gradle_dependencies_list: '[% INCLUDE build %]'
+ var:
+ fetch_gradle_dependencies: 1
diff --git a/projects/application-services/build b/projects/application-services/build
index b7461bf..40001cd 100644
--- a/projects/application-services/build
+++ b/projects/application-services/build
@@ -83,7 +83,9 @@ patch -p1 < $rootdir/target.patch
[% IF c('var/fetch_gradle_dependencies') %]
# XXX: `assemble` is still not enough to see all fetched dependencies via
# Gradle's --debug. See: tor-browser-build#40056.
- gradle --debug --no-daemon assemble
+ gradle --debug --no-daemon assemble > gradle.log 2>&1 || ( cat gradle.log; exit 1 )
+ $rootdir/gen_gradle_deps_file.sh gradle.log
+ mv gradle-dependencies-list.txt '[% dest_dir _ "/" _ c("filename") %]'
[% ELSE %]
# Prepare Glean dependencies for offline build
tar -xjf $rootdir/glean-parser-[% c('var/glean_parser') %].tar.bz2
diff --git a/projects/application-services/config b/projects/application-services/config
index 588d573..456ce87 100644
--- a/projects/application-services/config
+++ b/projects/application-services/config
@@ -12,50 +12,61 @@ var:
gradle_dependencies_version: 5
# This should be updated when the list of rust dependencies is changed.
rust_vendor_version: 5
- # Switch to make it easier to grab all dependencies during a dry-run.
- fetch_gradle_dependencies: 0
gradle_version: 6.5
input_files:
- project: container-image
+ pkg_type: build
- project: '[% c("var/compiler") %]'
name: '[% c("var/compiler") %]'
+ pkg_type: build
- project: gradle
name: gradle
+ pkg_type: build
- project: rust
name: rust
+ pkg_type: build
- project: uniffi-rs
name: uniffi-rs
+ pkg_type: build
- project: nss
name: nss-armv7
+ pkg_type: build
target_prepend:
- android-armv7
- project: nss
name: nss-aarch64
+ pkg_type: build
target_prepend:
- android-aarch64
- project: nss
name: nss-x86
+ pkg_type: build
target_prepend:
- android-x86
- project: nss
name: nss-x86_64
+ pkg_type: build
target_prepend:
- android-x86_64
- project: sqlcipher
name: sqlcipher-armv7
+ pkg_type: build
target_prepend:
- android-armv7
- project: sqlcipher
name: sqlcipher-aarch64
+ pkg_type: build
target_prepend:
- android-aarch64
- project: sqlcipher
name: sqlcipher-x86
+ pkg_type: build
target_prepend:
- android-x86
- project: sqlcipher
name: sqlcipher-x86_64
+ pkg_type: build
target_prepend:
- android-x86_64
- name: python
@@ -79,6 +90,8 @@ input_files:
- filename: target.patch
- filename: viaduct-workaround.patch
- filename: update-cargo-lock.patch
+ - filename: gen_gradle_deps_file.sh
+ enable: '[% c("var/fetch_gradle_dependencies") %]'
steps:
list_toolchain_updates:
@@ -87,3 +100,9 @@ steps:
var:
container:
use_container: 0
+
+ get_gradle_dependencies_list:
+ filename: 'gradle-dependencies-list-[% c("version") %].txt'
+ get_gradle_dependencies_list: '[% INCLUDE build %]'
+ var:
+ fetch_gradle_dependencies: 1
diff --git a/tools/gen_gradle_deps_file.sh b/projects/common/gen_gradle_deps_file.sh
similarity index 100%
rename from tools/gen_gradle_deps_file.sh
rename to projects/common/gen_gradle_deps_file.sh
diff --git a/projects/common/how-to-create-gradle-dependencies-list.txt b/projects/common/how-to-create-gradle-dependencies-list.txt
index 940f810..b233eec 100644
--- a/projects/common/how-to-create-gradle-dependencies-list.txt
+++ b/projects/common/how-to-create-gradle-dependencies-list.txt
@@ -3,9 +3,17 @@ If additional Android dependencies are required by the project's build, then
the Gradle build will fail due to missing dependencies. To find out what the
missing dependencies are take the following steps.
-If the dependencies for `application-services`, `android-components`, or `fenix`
-are needed, set the `fetch_gradle_dependencies` flag in their `config` files to
-`1`.
+1) Updating gradle dependencies for `application-services`, `android-components`
+ or `fenix`
+
+The following makefile rules can be used:
+
+ make get_gradle_dependencies_list-application-services
+ make get_gradle_dependencies_list-android-components
+ make get_gradle_dependencies_list-fenix
+
+which should create the gradle-dependencies-list.txt files in the
+corresponding out/$project directory, using nightly's branch.
Note: `android-components` and `fenix` require modified `geckoview` and
`android-components` artifacts to compile successfully. In order to generate the
@@ -18,7 +26,16 @@ breaks). For `fenix` dependencies there is still a manual processing required
afterwards right now as e.g. our tor-android-service related artifacts are not
picked up.
-For the firefox project, comment out the following line in the project's build file:
+
+2) Updating gradle dependencies for `geckoview`, `tor-android-service`
+ or `tor-onion-proxy-library`
+
+The `geckoview`, `tor-android-service` and `tor-onion-proxy-library`
+projects don't have (yet) a makefile rule to generate their
+gradle-dependencies-list.txt file, so a few more steps are needed.
+
+For the geckoview project, comment out the following line in the project's
+build file:
export GRADLE_MAVEN_REPOSITORIES="file://$gradle_repo"
@@ -34,11 +51,14 @@ Finally, allow network access during the build by setting
Dependent artifacts will show up as downloads in the logs. You can pull out
these dependencies into a list by passing the log file to the gradle dependency
-list script in the tools directory:
+list script in the projects/common directory:
+
+`projects/common/gen_gradle_deps_file.sh /path/to/log/file`
+
-`./gen_gradle_deps_file.sh /path/to/log/file`
+3) Copying the resulting `gradle-dependencies-list.txt`
-Copy the resulting `gradle-dependencies-list.txt` over the one in the respective
-project. Then, in the project's config file, increment the
-`var/gradle_dependencies_version` and make sure to restore the project's build
-file back to original or set `fetch_gradle_dependencies` to `0` again.
+Copy the resulting `gradle-dependencies-list.txt` (from step 1. or 2.)
+over the one in the respective project. Then, in the project's config
+file, increment the `var/gradle_dependencies_version` and make sure to
+restore the project's build file back to original if you modified it.
diff --git a/projects/fenix/build b/projects/fenix/build
index b118cdc..6de75cf 100644
--- a/projects/fenix/build
+++ b/projects/fenix/build
@@ -42,7 +42,12 @@ cp $rootdir/[% c('input_files_by_name/tor-android-service') %]/* app/
# XXX We need the build variant in lower case. Do something smarter here.
v=[% c("variant") %]
[% IF c("var/fetch_gradle_dependencies") %]
- $GRADLE_HOME/gradle/bin/gradle --debug --no-daemon app:assemble[% c('variant') %] app:assembleAndroidTest -x lint -PtestBuildType=${v,} -PdisableOptimization
+ $GRADLE_HOME/gradle/bin/gradle --debug --no-daemon app:assemble[% c('variant') %] \
+ app:assembleAndroidTest -x lint -PtestBuildType=${v,} -PdisableOptimization \
+ > gradle.log 2>&1 \
+ || ( cat gradle.log; exit 1 )
+ $rootdir/gen_gradle_deps_file.sh gradle.log
+ mv gradle-dependencies-list.txt '[% dest_dir _ "/" _ c("filename") %]'
[% ELSE %]
# Add our localized strings
[% FOREACH lang = c('var/locales_mobile');
diff --git a/projects/fenix/config b/projects/fenix/config
index af2772e..b9371d9 100644
--- a/projects/fenix/config
+++ b/projects/fenix/config
@@ -15,9 +15,6 @@ var:
use_container: 1
# This should be updated when the list of gradle dependencies is changed.
gradle_dependencies_version: 24
- # Switch to make it easier to grab all dependencies during a dry-run.
- # Note: Use the commit that integrates Tor.
- fetch_gradle_dependencies: 0
gradle_version: 6.5.1
glean_parser: 2.2.0
@@ -35,30 +32,22 @@ input_files:
name: gradle
- name: android-components
project: android-components
- enable: '[% !c("var/fetch_gradle_dependencies") %]'
- name: application-services
project: application-services
- enable: '[% !c("var/fetch_gradle_dependencies") %]'
- name: geckoview
project: geckoview
pkg_type: merge_aars
- enable: '[% !c("var/fetch_gradle_dependencies") %]'
- name: python
project: python
- enable: '[% !c("var/fetch_gradle_dependencies") %]'
- name: tba-translation
project: tba-translation
- enable: '[% !c("var/fetch_gradle_dependencies") %]'
- filename: 'gradle-dependencies-[% c("var/gradle_dependencies_version") %]'
name: gradle-dependencies
- enable: '[% !c("var/fetch_gradle_dependencies") %]'
exec: '[% INCLUDE "fetch-gradle-dependencies" %]'
- URL: https://people.torproject.org/~boklm/mirrors/sources/glean-wheels-[% c('var/glean_parser') %].tar.xz
name: glean
sha256sum: 24ceaaadaf155445e8ad135173d894e05c0745b41ab5fee150f9548550acf2a6
- enable: '[% !c("var/fetch_gradle_dependencies") %]'
- filename: mavenLocal.patch
- enable: '[% !c("var/fetch_gradle_dependencies") %]'
- project: tor-android-service
name: tor-android-service
- project: tor-onion-proxy-library
@@ -73,3 +62,25 @@ steps:
var:
container:
use_container: 0
+
+ get_gradle_dependencies_list:
+ filename: 'gradle-dependencies-list-[% c("var/fenix_version") %].txt'
+ get_gradle_dependencies_list: '[% INCLUDE build %]'
+ var:
+ fetch_gradle_dependencies: 1
+ input_files:
+ - project: container-image
+ pkg_type: build
+ - filename: gen_gradle_deps_file.sh
+ - name: '[% c("var/compiler") %]'
+ project: '[% c("var/compiler") %]'
+ pkg_type: build
+ - project: gradle
+ name: gradle
+ pkg_type: build
+ - project: tor-android-service
+ name: tor-android-service
+ pkg_type: build
+ - project: tor-onion-proxy-library
+ name: topl
+ pkg_type: build
More information about the tbb-commits
mailing list