ma1 pushed to branch maint-15.0 at The Tor Project / Applications / tor-browser-build Commits: 5d84e9bf by hackademix at 2026-01-12T11:45:22+01:00 Bug 41681: Keep public suffixes up-to-date on 140esr-based Tor Browser for Android. - - - - - 4 changed files: - projects/browser/build.android - projects/browser/config - tools/relprep.py - + tools/update_fenix_nightly_apk.py Changes: ===================================== projects/browser/build.android ===================================== @@ -29,6 +29,8 @@ unzip $rootdir/[% c('input_files_by_name/noscript') %] }) %] popd +unzip -o "$rootdir"/[% c('input_files_by_name/fenix-nightly-apk') %] assets/publicsuffixes + [%IF c("var/tor-browser") -%] tar -xaf "$rootdir/[% c('input_files_by_name/tor-expert-bundle') %]/tor-expert-bundle.tar.gz" tor/pluggable_transports/pt_config.json tar -xf "$rootdir/[% c('input_files_by_name/moat-settings') %]" ===================================== projects/browser/config ===================================== @@ -113,6 +113,10 @@ input_files: enable: '[% ! c("var/android") %]' - filename: dmg-root enable: '[% ! c("var/android") %]' + - name: fenix-nightly-apk + URL: https://ftp.mozilla.org/pub/fenix/nightly/2026/01/2026-01-11-21-42-32-fenix-... + enable: '[% c("var/android") %]' + sha256sum: c39056d428bf573aa9df1d4be11493064f867bc247bda1e8b7e1836d5aae7a31 - URL: https://dist.torproject.org/torbrowser/noscript/noscript-13.5.2.1984.xpi name: noscript sha256sum: 4579c70b69e3198ea0bf064f9912b9341696b9ad4ed177cb19994208872425fd ===================================== tools/relprep.py ===================================== @@ -18,7 +18,7 @@ import ruamel.yaml import fetch_changelogs from update_manual import update_manual - +from update_fenix_nightly_apk import update_fenix_nightly_apk logger = logging.getLogger(__name__) @@ -140,6 +140,7 @@ class ReleasePreparation: self.update_zlib() if self.android: self.update_zstd() + update_fenix_nightly_apk(self.base_path) self.update_go() self.update_manual() self.update_moat_settings() ===================================== tools/update_fenix_nightly_apk.py ===================================== @@ -0,0 +1,78 @@ +#!/usr/bin/env python3 +import hashlib +import re +from pathlib import Path + +import requests +import ruamel.yaml + + +def find_apk_url(): + base_url = "https://ftp.mozilla.org" + path = "/pub/fenix/nightly/" + while True: + url = f"{base_url}{path}" + r = requests.get(url) + r.raise_for_status() + match = re.match(f'.*"({re.escape(path)}.*)"', r.text, re.DOTALL) + if not match: + raise Exception(f"Could not find apk url from {url}!") + # we want to get the smallest apk, which is arm64-v8a + path = match.group(1).replace("-android/", "-android-arm64-v8a/") + if path.endswith(".apk"): + return f"{base_url}{path}" + + +def update_config(base_path, url): + yaml = ruamel.yaml.YAML() + yaml.indent(mapping=2, sequence=4, offset=2) + yaml.width = 150 + yaml.preserve_quotes = True + + config_path = base_path / "projects/browser/config" + config_name = "fenix-nightly-apk" + config = yaml.load(config_path) + + for input_file in config["input_files"]: + if input_file.get("name") == config_name: + apk_file_path = base_path / "out/browser" / url.split("/")[-1] + if url == input_file["URL"]: + if apk_file_path.exists(): + print(f"{apk_file_path} exists, checking hash...") + sha256 = hashlib.sha256() + with apk_file_path.open("rb") as f: + while chunk := f.read(16384): + sha256.update(chunk) + sha256sum = sha256.hexdigest() + if sha256sum == input_file["sha256sum"]: + print(f"{config_name}/URL is up-to-date, nothing to do.") + return False + sha256sum = download_apk(url, apk_file_path) + input_file["sha256sum"] = sha256sum + input_file["URL"] = url + with config_path.open("w") as f: + yaml.dump(config, f) + print(f"Updated input_files/{config_name} in {config_path}.") + return True + raise Exception(f"Cannot find input_files/{config_name} in {config_path}!") + + +def download_apk(url, dest): + print(f"Downloading {url} to {dest}....") + r = requests.get(url, stream=True) + r.raise_for_status() + sha256 = hashlib.sha256() + with dest.open("wb") as f: + for chunk in r.iter_content(chunk_size=8192): + f.write(chunk) + sha256.update(chunk) + return sha256.hexdigest() + + +def update_fenix_nightly_apk(base_path): + url = find_apk_url() + return update_config(base_path, url) + + +if __name__ == "__main__": + update_fenix_nightly_apk(Path(__file__).parent.parent) View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/5d... -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/5d... You're receiving this email because of your account on gitlab.torproject.org.
participants (1)
-
ma1 (@ma1)