brizental pushed to branch main at The Tor Project / Applications / tor-browser-build
Commits:
-
bda3d714
by Beatriz Rizental at 2025-06-26T11:30:55+02:00
11 changed files:
- − projects/application-services/41422-disable-viaduct.diff
- − projects/application-services/a-s-noop.diff
- − projects/application-services/apply-bug-13028.diff
- − projects/application-services/bug_13028.patch
- projects/application-services/build
- − projects/application-services/cargo-no-build.sh
- projects/application-services/config
- − projects/application-services/glean-noop.diff
- − projects/application-services/local-repository.diff
- − projects/application-services/no-ndk-lookup.diff
- − projects/application-services/offline-nimbus-fml.diff
Changes:
1 | -diff --git a/components/viaduct/src/backend/ffi.rs b/components/viaduct/src/backend/ffi.rs
|
|
2 | -index cca6bc68f..5d11eb026 100644
|
|
3 | ---- a/components/viaduct/src/backend/ffi.rs
|
|
4 | -+++ b/components/viaduct/src/backend/ffi.rs
|
|
5 | -@@ -37,6 +37,8 @@ macro_rules! backend_error {
|
|
6 | - pub struct FfiBackend;
|
|
7 | - impl Backend for FfiBackend {
|
|
8 | - fn send(&self, request: crate::Request) -> Result<crate::Response, Error> {
|
|
9 | -+ return Err(backend_error!("Viaduct is disabled in Tor Browser."));
|
|
10 | -+
|
|
11 | - use ffi_support::IntoFfi;
|
|
12 | - use prost::Message;
|
|
13 | - super::note_backend("FFI (trusted)"); |
1 | -diff --git a/build-scripts/component-common.gradle b/build-scripts/component-common.gradle
|
|
2 | -index a126341b0..3b3579290 100644
|
|
3 | ---- a/build-scripts/component-common.gradle
|
|
4 | -+++ b/build-scripts/component-common.gradle
|
|
5 | -@@ -111,16 +111,30 @@ ext.configureUniFFIBindgen = { crateName ->
|
|
6 | - commandLine "${mozconfig.topobjdir}/dist/host/bin/embedded-uniffi-bindgen", 'generate', '--library', libraryPath, "--crate", crateName, '--language', 'kotlin', '--out-dir', uniffiOutDir.get(), '--no-format'
|
|
7 | - }
|
|
8 | - } else {
|
|
9 | -- def libraryPath = megazordNative.asFileTree.matching {
|
|
10 | -- include "${nativeRustTarget}/libmegazord.*"
|
|
11 | -- }.singleFile
|
|
12 | --
|
|
13 | -- if (libraryPath == null) {
|
|
14 | -- throw new GradleException("libmegazord dynamic library path not found")
|
|
15 | -- }
|
|
16 | -- exec {
|
|
17 | -- workingDir project.rootDir
|
|
18 | -- commandLine '/usr/bin/env', 'cargo', 'uniffi-bindgen', 'generate', '--library', libraryPath, "--crate", crateName, '--language', 'kotlin', '--out-dir', uniffiOutDir.get(), '--no-format'
|
|
19 | -+ if (crateName.toString().contains("places")) {
|
|
20 | -+ def libraryPath = megazordNative.asFileTree.matching {
|
|
21 | -+ include "${nativeRustTarget}/libmegazord.*"
|
|
22 | -+ }.singleFile
|
|
23 | -+
|
|
24 | -+ if (libraryPath == null) {
|
|
25 | -+ throw new GradleException("libmegazord dynamic library path not found")
|
|
26 | -+ }
|
|
27 | -+ exec {
|
|
28 | -+ workingDir project.rootDir
|
|
29 | -+ commandLine '/usr/bin/env', 'cargo', 'uniffi-bindgen', 'generate', '--library', libraryPath, "--crate", crateName, '--language', 'kotlin', '--out-dir', uniffiOutDir.get(), '--no-format'
|
|
30 | -+ }
|
|
31 | -+ } else {
|
|
32 | -+ def libraryPath = "${project.rootDir}/megazords/full/target/debug/libmegazord.so"
|
|
33 | -+ exec {
|
|
34 | -+ workingDir project.rootDir
|
|
35 | -+ def command = ["${rootProject.projectDir}/uniffi-rs/uniffi-bindgen", 'generate', '--library', libraryPath, "--crate", crateName, '--language', 'kotlin', '--out-dir', uniffiOutDir.get(), '--no-format']
|
|
36 | -+ println "Executing command: ${command.join(' ')}"
|
|
37 | -+ commandLine command
|
|
38 | -+
|
|
39 | -+ // Print both stdout and stderr to Gradle's console
|
|
40 | -+ standardOutput = System.out
|
|
41 | -+ errorOutput = System.err
|
|
42 | -+ }
|
|
43 | - }
|
|
44 | - }
|
|
45 | - }
|
|
46 | -diff --git a/components/fxa-client/android/src/main/java/mozilla/appservices/fxaclient/Config.kt b/components/fxa-client/android/src/main/java/mozilla/appservices/fxaclient/Config.kt
|
|
47 | -index 78c16dd0a..d2615fa74 100644
|
|
48 | ---- a/components/fxa-client/android/src/main/java/mozilla/appservices/fxaclient/Config.kt
|
|
49 | -+++ b/components/fxa-client/android/src/main/java/mozilla/appservices/fxaclient/Config.kt
|
|
50 | -@@ -13,4 +13,5 @@ fun FxaServer.contentUrl() = when (this) {
|
|
51 | - is FxaServer.China -> "https://accounts.firefox.com.cn"
|
|
52 | - is FxaServer.LocalDev -> "http://127.0.0.1:3030"
|
|
53 | - is FxaServer.Custom -> this.url
|
|
54 | -+ is FxaServer.__NOOP -> ""
|
|
55 | - }
|
|
56 | -diff --git a/components/nimbus/android/src/main/java/org/mozilla/experiments/nimbus/Nimbus.kt b/components/nimbus/android/src/main/java/org/mozilla/experiments/nimbus/Nimbus.kt
|
|
57 | -index 376ef90d9..d80eea50f 100644
|
|
58 | ---- a/components/nimbus/android/src/main/java/org/mozilla/experiments/nimbus/Nimbus.kt
|
|
59 | -+++ b/components/nimbus/android/src/main/java/org/mozilla/experiments/nimbus/Nimbus.kt
|
|
60 | -@@ -535,6 +535,8 @@ open class Nimbus(
|
|
61 | - ),
|
|
62 | - )
|
|
63 | - }
|
|
64 | -+
|
|
65 | -+ EnrollmentChangeEventType.__NOOP -> {}
|
|
66 | - }
|
|
67 | - }
|
|
68 | - }
|
|
69 | -diff --git a/megazords/full/Cargo.toml b/megazords/full/Cargo.toml
|
|
70 | -index c5e9eea19..ce899aac1 100644
|
|
71 | ---- a/megazords/full/Cargo.toml
|
|
72 | -+++ b/megazords/full/Cargo.toml
|
|
73 | -@@ -9,24 +9,24 @@ license = "MPL-2.0"
|
|
74 | - crate-type = ["cdylib"]
|
|
75 | - |
|
76 | - [dependencies]
|
|
77 | --fxa-client = { path = "../../components/fxa-client" }
|
|
78 | --logins = { path = "../../components/logins" }
|
|
79 | --tabs = { path = "../../components/tabs/" }
|
|
80 | --sync_manager = { path = "../../components/sync_manager/" }
|
|
81 | -+# fxa-client = { path = "../../components/fxa-client" }
|
|
82 | -+# logins = { path = "../../components/logins" }
|
|
83 | -+# tabs = { path = "../../components/tabs/" }
|
|
84 | -+# sync_manager = { path = "../../components/sync_manager/" }
|
|
85 | - # TODO: Uncomment this code when webext-storage component is integrated in android
|
|
86 | - # webext-storage = { path = "../../components/webext-storage/" }
|
|
87 | - places = { path = "../../components/places" }
|
|
88 | --push = { path = "../../components/push" }
|
|
89 | --remote_settings = { path = "../../components/remote_settings" }
|
|
90 | --rust-log-forwarder = { path = "../../components/support/rust-log-forwarder" }
|
|
91 | --viaduct = { path = "../../components/viaduct" }
|
|
92 | --nimbus-sdk = { path = "../../components/nimbus" }
|
|
93 | --autofill = { path = "../../components/autofill" }
|
|
94 | --crashtest = { path = "../../components/crashtest" }
|
|
95 | --error-support = { path = "../../components/support/error" }
|
|
96 | --suggest = { path = "../../components/suggest" }
|
|
97 | --search = { path = "../../components/search" }
|
|
98 | --tracing-support = { path = "../../components/support/tracing" }
|
|
99 | -+# push = { path = "../../components/push" }
|
|
100 | -+# remote_settings = { path = "../../components/remote_settings" }
|
|
101 | -+# rust-log-forwarder = { path = "../../components/support/rust-log-forwarder" }
|
|
102 | -+# viaduct = { path = "../../components/viaduct" }
|
|
103 | -+# nimbus-sdk = { path = "../../components/nimbus" }
|
|
104 | -+# autofill = { path = "../../components/autofill" }
|
|
105 | -+# crashtest = { path = "../../components/crashtest" }
|
|
106 | -+# error-support = { path = "../../components/support/error" }
|
|
107 | -+# suggest = { path = "../../components/suggest" }
|
|
108 | -+# search = { path = "../../components/search" }
|
|
109 | -+# tracing-support = { path = "../../components/support/tracing" }
|
|
110 | - |
|
111 | - lazy_static = "1.4"
|
|
112 | - init_rust_components = { path = "../../components/init_rust_components" }
|
|
113 | -diff --git a/megazords/full/src/lib.rs b/megazords/full/src/lib.rs
|
|
114 | -index 4b6ba4499..e4fde58ae 100644
|
|
115 | ---- a/megazords/full/src/lib.rs
|
|
116 | -+++ b/megazords/full/src/lib.rs
|
|
117 | -@@ -8,24 +8,24 @@
|
|
118 | - use std::ffi::CString;
|
|
119 | - use std::os::raw::c_char;
|
|
120 | - |
|
121 | --pub use autofill;
|
|
122 | --pub use crashtest;
|
|
123 | --pub use error_support;
|
|
124 | --pub use fxa_client;
|
|
125 | --pub use init_rust_components;
|
|
126 | --pub use logins;
|
|
127 | --pub use merino;
|
|
128 | --pub use nimbus;
|
|
129 | -+// pub use autofill;
|
|
130 | -+// pub use crashtest;
|
|
131 | -+// pub use error_support;
|
|
132 | -+// pub use fxa_client;
|
|
133 | -+// pub use init_rust_components;
|
|
134 | -+// pub use logins;
|
|
135 | -+// pub use merino;
|
|
136 | -+// pub use nimbus;
|
|
137 | - pub use places;
|
|
138 | --pub use push;
|
|
139 | --pub use remote_settings;
|
|
140 | --pub use rust_log_forwarder;
|
|
141 | --pub use search;
|
|
142 | --pub use suggest;
|
|
143 | --pub use sync_manager;
|
|
144 | --pub use tabs;
|
|
145 | --pub use tracing_support;
|
|
146 | --pub use viaduct;
|
|
147 | -+// pub use push;
|
|
148 | -+// pub use remote_settings;
|
|
149 | -+// pub use rust_log_forwarder;
|
|
150 | -+// pub use search;
|
|
151 | -+// pub use suggest;
|
|
152 | -+// pub use sync_manager;
|
|
153 | -+// pub use tabs;
|
|
154 | -+// pub use tracing_support;
|
|
155 | -+// pub use viaduct;
|
|
156 | - // TODO: Uncomment this code when webext-storage component is integrated in android
|
|
157 | - // pub use webext_storage;
|
|
158 | - |
1 | -diff --git a/libs/build-all.sh b/libs/build-all.sh
|
|
2 | -index 650c1299..6c4e5404 100755
|
|
3 | ---- a/libs/build-all.sh
|
|
4 | -+++ b/libs/build-all.sh
|
|
5 | -@@ -128,6 +128,15 @@ echo $'\
|
|
6 | - fi
|
|
7 | - ' | patch "${NSS_SRC_PATH}/nspr/configure"
|
|
8 | -
|
|
9 | -+rm -f python
|
|
10 | -+ln -s /usr/bin/python3 python
|
|
11 | -+export PATH=$(pwd):$PATH
|
|
12 | -+patch_13028=$(realpath bug_13028.patch)
|
|
13 | -+pushd $NSS_SRC_PATH
|
|
14 | -+# Apply our proxy bypass defense-in-depth here as well to be on the safe side.
|
|
15 | -+patch -p2 < $patch_13028
|
|
16 | -+popd
|
|
17 | -+
|
|
18 | - if [[ "${PLATFORM}" == "ios" ]]
|
|
19 | - then
|
|
20 | - ./build-all-ios.sh "${SQLCIPHER_SRC_PATH}" "${NSS_SRC_PATH}" |
1 | -From 2f0888c348561249d3083555db33c5619840dbfa Mon Sep 17 00:00:00 2001
|
|
2 | -From: Mike Perry <mikeperry-git@torproject.org>
|
|
3 | -Date: Mon, 29 Sep 2014 14:30:19 -0700
|
|
4 | -Subject: [PATCH] Bug 13028: Prevent potential proxy bypass cases.
|
|
5 | - |
|
6 | -It looks like these cases should only be invoked in the NSS command line
|
|
7 | -tools, and not the browser, but I decided to patch them anyway because there
|
|
8 | -literally is a maze of network function pointers being passed around, and it's
|
|
9 | -very hard to tell if some random code might not pass in the proper proxied
|
|
10 | -versions of the networking code here by accident.
|
|
11 | - |
|
12 | -diff --git a/security/nss/lib/certhigh/ocsp.c b/security/nss/lib/certhigh/ocsp.c
|
|
13 | -index cea8456606bf..86fa971cfbef 100644
|
|
14 | ---- a/security/nss/lib/certhigh/ocsp.c
|
|
15 | -+++ b/security/nss/lib/certhigh/ocsp.c
|
|
16 | -@@ -2932,6 +2932,14 @@ ocsp_ConnectToHost(const char *host, PRUint16 port)
|
|
17 | - PRNetAddr addr;
|
|
18 | - char *netdbbuf = NULL;
|
|
19 | -
|
|
20 | -+ // XXX: Do we need a unittest ifdef here? We don't want to break the tests, but
|
|
21 | -+ // we want to ensure nothing can ever hit this code in production.
|
|
22 | -+#if 1
|
|
23 | -+ printf("Tor Browser BUG: Attempted OSCP direct connect to %s, port %u\n", host,
|
|
24 | -+ port);
|
|
25 | -+ goto loser;
|
|
26 | -+#endif
|
|
27 | -+
|
|
28 | - sock = PR_NewTCPSocket();
|
|
29 | - if (sock == NULL)
|
|
30 | - goto loser;
|
|
31 | -diff --git a/security/nss/lib/libpkix/pkix_pl_nss/module/pkix_pl_socket.c b/security/nss/lib/libpkix/pkix_pl_nss/module/pkix_pl_socket.c
|
|
32 | -index e8698376b5be..85791d84a932 100644
|
|
33 | ---- a/security/nss/lib/libpkix/pkix_pl_nss/module/pkix_pl_socket.c
|
|
34 | -+++ b/security/nss/lib/libpkix/pkix_pl_nss/module/pkix_pl_socket.c
|
|
35 | -@@ -1334,6 +1334,13 @@ pkix_pl_Socket_Create(
|
|
36 | - plContext),
|
|
37 | - PKIX_COULDNOTCREATESOCKETOBJECT);
|
|
38 | -
|
|
39 | -+ // XXX: Do we need a unittest ifdef here? We don't want to break the tests, but
|
|
40 | -+ // we want to ensure nothing can ever hit this code in production.
|
|
41 | -+#if 1
|
|
42 | -+ printf("Tor Browser BUG: Attempted pkix direct socket connect\n");
|
|
43 | -+ PKIX_ERROR(PKIX_PRNEWTCPSOCKETFAILED);
|
|
44 | -+#endif
|
|
45 | -+
|
|
46 | - socket->isServer = isServer;
|
|
47 | - socket->timeout = timeout;
|
|
48 | - socket->clientSock = NULL;
|
|
49 | -@@ -1433,6 +1440,13 @@ pkix_pl_Socket_CreateByName(
|
|
50 | -
|
|
51 | - localCopyName = PL_strdup(serverName);
|
|
52 | -
|
|
53 | -+ // XXX: Do we need a unittest ifdef here? We don't want to break the tests, but
|
|
54 | -+ // we want to ensure nothing can ever hit this code in production.
|
|
55 | -+#if 1
|
|
56 | -+ printf("Tor Browser BUG: Attempted pkix direct connect to %s\n", serverName);
|
|
57 | -+ PKIX_ERROR(PKIX_PRNEWTCPSOCKETFAILED);
|
|
58 | -+#endif
|
|
59 | -+
|
|
60 | - sepPtr = strchr(localCopyName, ':');
|
|
61 | - /* First strip off the portnum, if present, from the end of the name */
|
|
62 | - if (sepPtr) {
|
|
63 | -@@ -1582,6 +1596,13 @@ pkix_pl_Socket_CreateByHostAndPort(
|
|
64 | - PKIX_ENTER(SOCKET, "pkix_pl_Socket_CreateByHostAndPort");
|
|
65 | - PKIX_NULLCHECK_THREE(hostname, pStatus, pSocket);
|
|
66 | -
|
|
67 | -+ // XXX: Do we need a unittest ifdef here? We don't want to break the tests, but
|
|
68 | -+ // we want to ensure nothing can ever hit this code in production.
|
|
69 | -+#if 1
|
|
70 | -+ printf("Tor Browser BUG: Attempted pkix direct connect to %s, port %u\n", hostname,
|
|
71 | -+ portnum);
|
|
72 | -+ PKIX_ERROR(PKIX_PRNEWTCPSOCKETFAILED);
|
|
73 | -+#endif
|
|
74 | -
|
|
75 | - prstatus = PR_GetHostByName(hostname, buf, sizeof(buf), &hostent);
|
|
76 | -
|
|
77 | ---
|
|
78 | -2.27.0
|
|
79 | - |
... | ... | @@ -68,34 +68,12 @@ EOF |
68 | 68 | |
69 | 69 | tar -xf $rootdir/[% c('input_files_by_name/uniffi-rs') %]
|
70 | 70 | |
71 | -# We add a suffix to the version to make it super specific.
|
|
72 | -# This is useful for developer builds, which seem to try to fetch
|
|
73 | -# latest versions of dependencies sometimes.
|
|
74 | -sed -i '$ s/$/-TORBROWSER/' version.txt
|
|
75 | - |
|
76 | 71 | pushd libs
|
77 | 72 | ln -s $rootdir/[% c("input_files_by_name/nss") %] ./
|
78 | -ln -s $rootdir/bug_13028.patch
|
|
79 | -patch -p2 < $rootdir/apply-bug-13028.diff
|
|
80 | -patch -p2 < $rootdir/no-ndk-lookup.diff
|
|
81 | 73 | ./build-all.sh desktop
|
82 | 74 | ./build-all.sh android
|
83 | 75 | popd
|
84 | 76 | |
85 | -pushd megazords/full
|
|
86 | -NSS_DIR=$(pwd)/../../libs/desktop/linux-x86-64/nss cargo build --target-dir=$(pwd)/target
|
|
87 | -popd
|
|
88 | - |
|
89 | -cp $rootdir/cargo-no-build.sh megazords/full/android/
|
|
90 | -chmod +x megazords/full/android/cargo-no-build.sh
|
|
91 | -patch -p1 < $rootdir/a-s-noop.diff
|
|
92 | - |
|
93 | -pushd components/external/glean
|
|
94 | -cp $rootdir/cargo-no-build.sh glean-core/android-native/
|
|
95 | -cp $builddir/uniffi-rs/uniffi-bindgen glean-core/android-native/
|
|
96 | -patch -p1 < $rootdir/glean-noop.diff
|
|
97 | -popd
|
|
98 | - |
|
99 | 77 | [% IF c('var/fetch_gradle_dependencies') %]
|
100 | 78 | # XXX: `assemble` is still not enough to see all fetched dependencies via
|
101 | 79 | # Gradle's --debug. See: tor-browser-build#40056.
|
... | ... | @@ -107,10 +85,7 @@ popd |
107 | 85 | # otherwise `click` barfs. See: https://click.palletsprojects.com/python3/
|
108 | 86 | export LC_ALL=C.UTF-8
|
109 | 87 | export LANG=C.UTF-8
|
110 | - patch -p1 < $rootdir/local-repository.diff
|
|
111 | - patch -p1 < $rootdir/offline-nimbus-fml.diff
|
|
112 | - patch -p1 < $rootdir/41422-disable-viaduct.diff
|
|
113 | - gradle_flags="--offline --no-daemon"
|
|
88 | + gradle_flags="--offline --no-daemon -PuniffiBindgenNoop=$builddir/uniffi-rs/uniffi-bindgen -PgradleDependenciesUrl=file:///var/tmp/dist/gradle-dependencies"
|
|
114 | 89 | gradle $gradle_flags assembleRelease
|
115 | 90 | gradle $gradle_flags publish
|
116 | 91 | mv build/maven $distdir
|
1 | -#!/bin/bash
|
|
2 | - |
|
3 | -if [[ "$1" == "build" ]]; then
|
|
4 | - echo "cargo build is disabled."
|
|
5 | - exit 0
|
|
6 | -else
|
|
7 | - command cargo "$@"
|
|
8 | -fi |
1 | 1 | # vim: filetype=yaml sw=2
|
2 | 2 | version: 140.0
|
3 | -git_hash: 8ee6cb6a23f96ff8e2161926441aea72d6f09249
|
|
4 | -git_url: https://github.com/mozilla/application-services
|
|
3 | +git_hash: 'v[% c("version") %]-TORBROWSER'
|
|
4 | +git_url: https://gitlab.torproject.org/tpo/applications/application-services.git
|
|
5 | +tag_gpg_id: 1
|
|
5 | 6 | git_submodule: 1
|
6 | 7 | container:
|
7 | 8 | use_container: 1
|
... | ... | @@ -65,19 +66,10 @@ steps: |
65 | 66 | project: application-services
|
66 | 67 | pkg_type: cargo_vendor
|
67 | 68 | norec:
|
68 | - sha256sum: 4cf0235b525b5ce1d8bcc40e9763a13fd0e79c773749b900b4d7420551cf5114
|
|
69 | - - filename: local-repository.diff
|
|
69 | + sha256sum: 23b027cf546e34b57576ab88ef3ce8218cf1654cc44c4bde3c553aea98274f20
|
|
70 | 70 | enable: '[% !c("var/fetch_gradle_dependencies") %]'
|
71 | 71 | - filename: gen_gradle_deps_file.sh
|
72 | 72 | enable: '[% c("var/fetch_gradle_dependencies") %]'
|
73 | - - filename: bug_13028.patch
|
|
74 | - - filename: apply-bug-13028.diff
|
|
75 | - - filename: no-ndk-lookup.diff
|
|
76 | - - filename: offline-nimbus-fml.diff
|
|
77 | - - filename: glean-noop.diff
|
|
78 | - - filename: a-s-noop.diff
|
|
79 | - - filename: cargo-no-build.sh
|
|
80 | - - filename: 41422-disable-viaduct.diff
|
|
81 | 73 | |
82 | 74 | list_toolchain_updates:
|
83 | 75 | git_hash: 'v[% c("version") %]'
|
1 | -diff --git a/glean-core/android-native/build.gradle b/glean-core/android-native/build.gradle
|
|
2 | -index 53716d523..d38af8320 100644
|
|
3 | ---- a/glean-core/android-native/build.gradle
|
|
4 | -+++ b/glean-core/android-native/build.gradle
|
|
5 | -@@ -48,6 +48,8 @@ android {
|
|
6 | - }
|
|
7 | - |
|
8 | - cargo {
|
|
9 | -+ cargoCommand = "${rootDir}/glean-core/android-native/cargo-no-build.sh"
|
|
10 | -+
|
|
11 | - // The directory of the Cargo.toml to build.
|
|
12 | - module = '../bundle-android'
|
|
13 | - |
|
14 | -diff --git a/glean-core/android/build.gradle b/glean-core/android/build.gradle
|
|
15 | -index 7748378b4..5af06b1c3 100644
|
|
16 | ---- a/glean-core/android/build.gradle
|
|
17 | -+++ b/glean-core/android/build.gradle
|
|
18 | -@@ -197,7 +197,7 @@ def generateUniffiBindings = tasks.register("generateUniffiBindings") {
|
|
19 | - doFirst {
|
|
20 | - exec {
|
|
21 | - workingDir project.rootDir
|
|
22 | -- commandLine 'cargo', 'uniffi-bindgen', 'generate', '--no-format', "${project.projectDir}/${udlFilePath}", '--language', 'kotlin', '--out-dir', UNIFFI_OUT_DIR.get()
|
|
23 | -+ commandLine '${rootDir}/glean-core/android-native/uniffi-bindgen', 'generate', '--no-format', "${project.projectDir}/${udlFilePath}", '--language', 'kotlin', '--out-dir', UNIFFI_OUT_DIR.get()
|
|
24 | - }
|
|
25 | - }
|
|
26 | - outputs.dir UNIFFI_OUT_DIR |
1 | -diff --git a/build.gradle b/build.gradle
|
|
2 | -index bd516e58c..b30d552c9 100644
|
|
3 | ---- a/build.gradle
|
|
4 | -+++ b/build.gradle
|
|
5 | -@@ -14,6 +14,14 @@ buildscript {
|
|
6 | - }
|
|
7 | - |
|
8 | - repositories {
|
|
9 | -+ maven {
|
|
10 | -+ url "file:///var/tmp/dist/gradle-dependencies"
|
|
11 | -+ metadataSources {
|
|
12 | -+ gradleMetadata()
|
|
13 | -+ mavenPom()
|
|
14 | -+ }
|
|
15 | -+ }
|
|
16 | -+
|
|
17 | - mavenCentral()
|
|
18 | - google()
|
|
19 | - maven {
|
|
20 | -@@ -59,6 +67,14 @@ plugins {
|
|
21 | - |
|
22 | - allprojects {
|
|
23 | - repositories {
|
|
24 | -+ maven {
|
|
25 | -+ url "file:///var/tmp/dist/gradle-dependencies"
|
|
26 | -+ metadataSources {
|
|
27 | -+ gradleMetadata()
|
|
28 | -+ mavenPom()
|
|
29 | -+ }
|
|
30 | -+ }
|
|
31 | -+
|
|
32 | - google()
|
|
33 | - mavenCentral()
|
|
34 | - maven {
|
|
35 | -diff --git a/settings.gradle b/settings.gradle
|
|
36 | -index 4117bc0d3..f1b028dad 100644
|
|
37 | ---- a/settings.gradle
|
|
38 | -+++ b/settings.gradle
|
|
39 | -@@ -1,6 +1,19 @@
|
|
40 | - /* This Source Code Form is subject to the terms of the Mozilla Public
|
|
41 | - * License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
42 | - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
43 | -+
|
|
44 | -+pluginManagement {
|
|
45 | -+ repositories {
|
|
46 | -+ maven {
|
|
47 | -+ url "file:///var/tmp/dist/gradle-dependencies"
|
|
48 | -+ metadataSources {
|
|
49 | -+ gradleMetadata()
|
|
50 | -+ mavenPom()
|
|
51 | -+ }
|
|
52 | -+ }
|
|
53 | -+ }
|
|
54 | -+}
|
|
55 | -+
|
|
56 | - import org.yaml.snakeyaml.Yaml
|
|
57 | - |
|
58 | - // We prefer `appServicesRootDir` over `rootDir` to help us on the path to the monorepo.
|
|
59 | -@@ -23,6 +36,14 @@ buildscript {
|
|
60 | - if (!gradle.root.hasProperty("mozconfig")) {
|
|
61 | - // in app-services
|
|
62 | - repositories {
|
|
63 | -+ maven {
|
|
64 | -+ url "file:///var/tmp/dist/gradle-dependencies"
|
|
65 | -+ metadataSources {
|
|
66 | -+ gradleMetadata()
|
|
67 | -+ mavenPom()
|
|
68 | -+ }
|
|
69 | -+ }
|
|
70 | -+
|
|
71 | - mavenCentral()
|
|
72 | - }
|
|
73 | - } else {
|
|
74 | -diff --git a/tools/nimbus-gradle-plugin/settings.gradle b/tools/nimbus-gradle-plugin/settings.gradle
|
|
75 | -index 7d907f057..c0d213503 100644
|
|
76 | ---- a/tools/nimbus-gradle-plugin/settings.gradle
|
|
77 | -+++ b/tools/nimbus-gradle-plugin/settings.gradle
|
|
78 | -@@ -14,6 +14,14 @@ buildscript {
|
|
79 | - if (!gradle.root.hasProperty("mozconfig")) {
|
|
80 | - // in app-services
|
|
81 | - repositories {
|
|
82 | -+ maven {
|
|
83 | -+ url "file:///var/tmp/dist/gradle-dependencies"
|
|
84 | -+ metadataSources {
|
|
85 | -+ gradleMetadata()
|
|
86 | -+ mavenPom()
|
|
87 | -+ }
|
|
88 | -+ }
|
|
89 | -+
|
|
90 | - mavenCentral()
|
|
91 | - }
|
|
92 | - } else { |
1 | -diff --git a/libs/android_defaults.sh b/libs/android_defaults.sh
|
|
2 | -index 2cfcc4206..9e3d3de97 100755
|
|
3 | ---- a/libs/android_defaults.sh
|
|
4 | -+++ b/libs/android_defaults.sh
|
|
5 | -@@ -1,11 +1,7 @@
|
|
6 | - #!/usr/bin/env bash
|
|
7 | -
|
|
8 | --# Find the NDK.
|
|
9 | --pushd ..
|
|
10 | --NDK_VERSION=$(./gradlew -q printNdkVersion | tail -1)
|
|
11 | --export ANDROID_NDK_HOME="$ANDROID_HOME/ndk/$NDK_VERSION"
|
|
12 | --export ANDROID_NDK_ROOT="$ANDROID_NDK_HOME"
|
|
13 | --popd || exit
|
|
14 | -+# Do not try to find the NDK, as it does not work offline.
|
|
15 | -+# We already define the needed variables in our environment.
|
|
16 | -
|
|
17 | - if [[ -z "${ANDROID_NDK_API_VERSION:-}" ]]; then
|
|
18 | - export ANDROID_NDK_API_VERSION=21 |
1 | -diff --git a/tools/nimbus-gradle-plugin/src/main/groovy/org/mozilla/appservices/tooling/nimbus/NimbusAssembleToolsTask.groovy b/tools/nimbus-gradle-plugin/src/main/groovy/org/mozilla/appservices/tooling/nimbus/NimbusAssembleToolsTask.groovy
|
|
2 | -index 67c9e66d0..6dd949c92 100644
|
|
3 | ---- a/tools/nimbus-gradle-plugin/src/main/groovy/org/mozilla/appservices/tooling/nimbus/NimbusAssembleToolsTask.groovy
|
|
4 | -+++ b/tools/nimbus-gradle-plugin/src/main/groovy/org/mozilla/appservices/tooling/nimbus/NimbusAssembleToolsTask.groovy
|
|
5 | -@@ -20,6 +20,11 @@ import org.gradle.api.tasks.Nested
|
|
6 | - import org.gradle.api.tasks.OutputFile
|
|
7 | - import org.gradle.api.tasks.TaskAction
|
|
8 | -
|
|
9 | -+import java.nio.file.Files
|
|
10 | -+import java.nio.file.Path
|
|
11 | -+import java.nio.file.Paths
|
|
12 | -+import java.nio.file.StandardCopyOption
|
|
13 | -+
|
|
14 | - import javax.inject.Inject
|
|
15 | -
|
|
16 | - import groovy.transform.Immutable
|
|
17 | -@@ -84,46 +89,17 @@ abstract class NimbusAssembleToolsTask extends DefaultTask {
|
|
18 | -
|
|
19 | - @TaskAction
|
|
20 | - void assembleTools() {
|
|
21 | -- def sources = [fetchSpec, *fetchSpec.fallbackSources.get()].collect {
|
|
22 | -- new Source(new URI(it.archive.get()), new URI(it.hash.get()))
|
|
23 | -- }
|
|
24 | --
|
|
25 | -- def successfulSource = sources.find { it.trySaveArchiveTo(archiveFile.get().asFile) }
|
|
26 | -- if (successfulSource == null) {
|
|
27 | -- throw new GradleException("Couldn't fetch archive from any of: ${sources*.archiveURI.collect { "`$it`" }.join(', ')}")
|
|
28 | -- }
|
|
29 | --
|
|
30 | -- // We get the checksum, although don't do anything with it yet;
|
|
31 | -- // Checking it here would be able to detect if the zip file was tampered with
|
|
32 | -- // in transit between here and the server.
|
|
33 | -- // It won't detect compromise of the CI server.
|
|
34 | -- try {
|
|
35 | -- successfulSource.saveHashTo(hashFile.get().asFile)
|
|
36 | -- } catch (IOException e) {
|
|
37 | -- throw new GradleException("Couldn't fetch hash from `${successfulSource.hashURI}`", e)
|
|
38 | -- }
|
|
39 | --
|
|
40 | -- def zipTree = archiveOperations.zipTree(archiveFile.get())
|
|
41 | -- def visitedFilePaths = []
|
|
42 | -- zipTree.matching {
|
|
43 | -- include unzipSpec.includePatterns.get()
|
|
44 | -- }.visit { FileVisitDetails details ->
|
|
45 | -- if (!details.directory) {
|
|
46 | -- if (visitedFilePaths.empty) {
|
|
47 | -- details.copyTo(fmlBinary.get().asFile)
|
|
48 | -- fmlBinary.get().asFile.setExecutable(true)
|
|
49 | -- }
|
|
50 | -- visitedFilePaths.add(details.relativePath)
|
|
51 | -+ String nimbusFmlPath = System.getenv("NIMBUS_FML")
|
|
52 | -+ Path source
|
|
53 | -+ if (nimbusFmlPath == null) {
|
|
54 | -+ nimbusFmlPath = System.getProperty("nimbusFml")
|
|
55 | -+ if (nimbusFmlPath == null) {
|
|
56 | -+ throw new GradleException("NIMBUS_FML and property nimbusFml are not defined.")
|
|
57 | - }
|
|
58 | - }
|
|
59 | --
|
|
60 | -- if (visitedFilePaths.empty) {
|
|
61 | -- throw new GradleException("Couldn't find any files in archive matching unzip spec: (${unzipSpec.includePatterns.get().collect { "`$it`" }.join(' | ')})")
|
|
62 | -- }
|
|
63 | --
|
|
64 | -- if (visitedFilePaths.size() > 1) {
|
|
65 | -- throw new GradleException("Ambiguous unzip spec matched ${visitedFilePaths.size()} files in archive: ${visitedFilePaths.collect { "`$it`" }.join(', ')}")
|
|
66 | -- }
|
|
67 | -+ source = Paths.get(nimbusFmlPath)
|
|
68 | -+ Path dest = fmlBinary.get().asFile.toPath()
|
|
69 | -+ Files.copy(source, dest, StandardCopyOption.REPLACE_EXISTING)
|
|
70 | - }
|
|
71 | -
|
|
72 | - /** |