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 | - /** |