lists.torproject.org
Sign In Sign Up
Manage this list Sign In Sign Up

Keyboard Shortcuts

Thread View

  • j: Next unread message
  • k: Previous unread message
  • j a: Jump to all threads
  • j l: Jump to MailingList overview

tbb-commits

Thread Start a new thread
Threads by month
  • ----- 2026 -----
  • February
  • January
  • ----- 2025 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2024 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2023 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2022 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2021 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2020 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2019 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2018 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2017 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2016 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2015 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2014 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
tbb-commits@lists.torproject.org

February 2026

  • 1 participants
  • 172 discussions
[Git][tpo/applications/tor-browser-build][maint-15.0] Bug 41720: Switch back from cp -l to mv.
by Pier Angelo Vendrame (@pierov) 09 Feb '26

09 Feb '26
Pier Angelo Vendrame pushed to branch maint-15.0 at The Tor Project / Applications / tor-browser-build Commits: 032c4cfd by Pier Angelo Vendrame at 2026-02-09T19:35:14+01:00 Bug 41720: Switch back from cp -l to mv. We switched to cp -l to avoid errors when trying to move an inode to itself (case we might enocunter when re-running projects/release/build, since we hard-link release files when possible). However, `cp -l` does not fall back to a copy when hard link is not possible, instead it fails. So, go back to `mv`, but run `rm -f` before running mv, to avoid the error when trying to move the file to itself. - - - - - 1 changed file: - projects/release/build Changes: ===================================== projects/release/build ===================================== @@ -5,53 +5,64 @@ destdir="[% dest_dir _ '/' _ c("var/publish_dir") %]" mkdir -p "$destdir" +function merge_directory { + pushd $1 + find -type d -exec mkdir -p $destdir/{} \; + # tor-browser-build#40338: Try to remove any existing destination, as it might + # be the same inode when re-running this script, which makes mv fail. + find -type f -exec rm -f $destdir/{} \; + find -type f -exec mv {} $destdir/{} \; + popd +} + [% IF c("var/browser_platforms/android-armv7") -%] - cp -alf "[% c('input_files_by_name/android-armv7') %]"/* "$destdir"/ + merge_directory "[% c('input_files_by_name/android-armv7') %]" [% END -%] [% IF c("var/browser_platforms/android-x86") -%] mv_files "[% c('input_files_by_name/android-x86') %]" [% END -%] [% IF c("var/browser_platforms/android-x86_64") -%] - cp -alf "[% c('input_files_by_name/android-x86_64') %]"/* "$destdir"/ + merge_directory "[% c('input_files_by_name/android-x86_64') %]" [% END -%] [% IF c("var/browser_platforms/android-aarch64") -%] - cp -alf "[% c('input_files_by_name/android-aarch64') %]"/* "$destdir"/ + merge_directory "[% c('input_files_by_name/android-aarch64') %]" [% END -%] [% IF c("var/browser_platforms/windows-i686") -%] - cp -alf "[% c('input_files_by_name/windows-i686') %]"/* "$destdir"/ + merge_directory "[% c('input_files_by_name/windows-i686') %]" [% END -%] [% IF c("var/browser_platforms/windows-x86_64") -%] - cp -alf "[% c('input_files_by_name/windows-x86_64') %]"/* "$destdir"/ + merge_directory "[% c('input_files_by_name/windows-x86_64') %]" [% END -%] [% IF c("var/browser_platforms/macos") -%] - cp -alf "[% c('input_files_by_name/macos') %]"/* "$destdir"/ + merge_directory "[% c('input_files_by_name/macos') %]" [% END -%] [% IF c("var/browser_platforms/macos-x86_64") -%] - cp -alf "[% c('input_files_by_name/macos-x86_64') %]"/* "$destdir"/ + merge_directory "[% c('input_files_by_name/macos-x86_64') %]" [% END -%] [% IF c("var/browser_platforms/macos-aarch64") -%] - cp -alf "[% c('input_files_by_name/macos-aarch64') %]"/* "$destdir"/ + merge_directory "[% c('input_files_by_name/macos-aarch64') %]" [% END -%] [% IF c("var/browser_platforms/linux-i686") -%] mv_files "[% c('input_files_by_name/linux-i686') %]" [% END -%] [% IF c("var/browser_platforms/linux-x86_64") -%] - cp -alf "[% c('input_files_by_name/linux-x86_64') %]"/* "$destdir"/ + merge_directory "[% c('input_files_by_name/linux-x86_64') %]" [% END -%] [% IF c("var/browser_platforms/linux-aarch64") -%] - cp -alf "[% c('input_files_by_name/linux-aarch64') %]"/* "$destdir"/ + merge_directory "[% c('input_files_by_name/linux-aarch64') %]" [% END -%] [% IF c("var/linux-packages") || c("var/linux-packages-aarch64") -%] [% IF c("var/linux-packages") -%] - cp -alf "[% c('input_files_by_name/deb-packages') %]"/* "$destdir"/ + merge_directory "[% c('input_files_by_name/deb-packages') %]" [% END -%] [% IF c("var/linux-packages-aarch64") -%] - cp -alf "[% c('input_files_by_name/deb-packages-aarch64') %]"/* "$destdir"/ + merge_directory "[% c('input_files_by_name/deb-packages-aarch64') %]" [% END -%] - cp -alf "[% c('input_files_by_name/rpm-packages') %]"/* "$destdir"/ + merge_directory "[% c('input_files_by_name/rpm-packages') %]" [% END -%] [% IF c("var/browser-src") -%] - cp -alf "[% c('input_files_by_name/src-firefox') %]" "$destdir"/ + rm -f "$destdir/[% c('input_files_by_name/src-firefox') %]" + mv [% c('input_files_by_name/src-firefox') %] "$destdir"/ [% END -%] cd "$destdir" cat > .htaccess <<'EOF' View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/0… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/0… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser-build][main] Bug 41720: Switch back from cp -l to mv.
by boklm (@boklm) 09 Feb '26

09 Feb '26
boklm pushed to branch main at The Tor Project / Applications / tor-browser-build Commits: 6bb082cb by Pier Angelo Vendrame at 2026-02-09T19:24:54+01:00 Bug 41720: Switch back from cp -l to mv. We switched to cp -l to avoid errors when trying to move an inode to itself (case we might enocunter when re-running projects/release/build, since we hard-link release files when possible). However, `cp -l` does not fall back to a copy when hard link is not possible, instead it fails. So, go back to `mv`, but run `rm -f` before running mv, to avoid the error when trying to move the file to itself. - - - - - 1 changed file: - projects/release/build Changes: ===================================== projects/release/build ===================================== @@ -5,47 +5,58 @@ destdir="[% dest_dir _ '/' _ c("var/publish_dir") %]" mkdir -p "$destdir" +function merge_directory { + pushd $1 + find -type d -exec mkdir -p $destdir/{} \; + # tor-browser-build#40338: Try to remove any existing destination, as it might + # be the same inode when re-running this script, which makes mv fail. + find -type f -exec rm -f $destdir/{} \; + find -type f -exec mv {} $destdir/{} \; + popd +} + [% IF c("var/browser_platforms/android-armv7") -%] - cp -alf "[% c('input_files_by_name/android-armv7') %]"/* "$destdir"/ + merge_directory "[% c('input_files_by_name/android-armv7') %]" [% END -%] [% IF c("var/browser_platforms/android-x86_64") -%] - cp -alf "[% c('input_files_by_name/android-x86_64') %]"/* "$destdir"/ + merge_directory "[% c('input_files_by_name/android-x86_64') %]" [% END -%] [% IF c("var/browser_platforms/android-aarch64") -%] - cp -alf "[% c('input_files_by_name/android-aarch64') %]"/* "$destdir"/ + merge_directory "[% c('input_files_by_name/android-aarch64') %]" [% END -%] [% IF c("var/browser_platforms/windows-i686") -%] - cp -alf "[% c('input_files_by_name/windows-i686') %]"/* "$destdir"/ + merge_directory "[% c('input_files_by_name/windows-i686') %]" [% END -%] [% IF c("var/browser_platforms/windows-x86_64") -%] - cp -alf "[% c('input_files_by_name/windows-x86_64') %]"/* "$destdir"/ + merge_directory "[% c('input_files_by_name/windows-x86_64') %]" [% END -%] [% IF c("var/browser_platforms/macos") -%] - cp -alf "[% c('input_files_by_name/macos') %]"/* "$destdir"/ + merge_directory "[% c('input_files_by_name/macos') %]" [% END -%] [% IF c("var/browser_platforms/macos-x86_64") -%] - cp -alf "[% c('input_files_by_name/macos-x86_64') %]"/* "$destdir"/ + merge_directory "[% c('input_files_by_name/macos-x86_64') %]" [% END -%] [% IF c("var/browser_platforms/macos-aarch64") -%] - cp -alf "[% c('input_files_by_name/macos-aarch64') %]"/* "$destdir"/ + merge_directory "[% c('input_files_by_name/macos-aarch64') %]" [% END -%] [% IF c("var/browser_platforms/linux-x86_64") -%] - cp -alf "[% c('input_files_by_name/linux-x86_64') %]"/* "$destdir"/ + merge_directory "[% c('input_files_by_name/linux-x86_64') %]" [% END -%] [% IF c("var/browser_platforms/linux-aarch64") -%] - cp -alf "[% c('input_files_by_name/linux-aarch64') %]"/* "$destdir"/ + merge_directory "[% c('input_files_by_name/linux-aarch64') %]" [% END -%] [% IF c("var/linux-packages") || c("var/linux-packages-aarch64") -%] [% IF c("var/linux-packages") -%] - cp -alf "[% c('input_files_by_name/deb-packages') %]"/* "$destdir"/ + merge_directory "[% c('input_files_by_name/deb-packages') %]" [% END -%] [% IF c("var/linux-packages-aarch64") -%] - cp -alf "[% c('input_files_by_name/deb-packages-aarch64') %]"/* "$destdir"/ + merge_directory "[% c('input_files_by_name/deb-packages-aarch64') %]" [% END -%] - cp -alf "[% c('input_files_by_name/rpm-packages') %]"/* "$destdir"/ + merge_directory "[% c('input_files_by_name/rpm-packages') %]" [% END -%] [% IF c("var/browser-src") -%] - cp -alf "[% c('input_files_by_name/src-firefox') %]" "$destdir"/ + rm -f "$destdir/[% c('input_files_by_name/src-firefox') %]" + mv [% c('input_files_by_name/src-firefox') %] "$destdir"/ [% END -%] cd "$destdir" cat > .htaccess <<'EOF' View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/6… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/6… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser-build][main] Bug 28595: Remove the need to update var/gradle_dependencies_version
by boklm (@boklm) 09 Feb '26

09 Feb '26
boklm pushed to branch main at The Tor Project / Applications / tor-browser-build Commits: 7c8ce499 by Nicolas Vigier at 2026-02-09T19:00:44+01:00 Bug 28595: Remove the need to update var/gradle_dependencies_version - - - - - 12 changed files: - doc/how-to-update-gradle-dependencies-list.md - projects/application-services/config - projects/application-services/gradle-dependencies-list.txt - projects/geckoview/config - projects/geckoview/gradle-dependencies-list.txt - projects/glean/config - projects/glean/gradle-dependencies-list.txt - projects/oss-licenses-plugin/config - projects/oss-licenses-plugin/gradle-dependencies-list.txt - rbm - rbm.conf - tools/fix_gradle_deps.py Changes: ===================================== doc/how-to-update-gradle-dependencies-list.md ===================================== @@ -13,8 +13,6 @@ 5. Extract it. 6. Move the `gradle-dependencies-list.txt` you just extracted to `projects/<project name>/`. -7. Bump `var/gradle_dependencies_version`. - The preferred format is `<project version>-<list version>`. Theoretically, it should be also possible to set `generate_gradle_dependencies_list: 1` in `rbm.local.conf`, run a full build and @@ -68,13 +66,8 @@ from the output artifact. New Android projects should be setup to do this. -> **Important**: dependencies are keyed and cached. So, after updating the list, -> you must also bump `var/gradle_dependencies_version`. - -This used to be an integer, but to avoid clashes between the main and -maintenance branches, we decided to switch to a -`<project version>-<list version>` format. -Usually, the list version will be `1`. +Dependencies are keyed and cached. The key is a checksum of the +gradle-dependencies-list.txt file. ## Consuming the list @@ -86,6 +79,8 @@ hashes of all the other artifacts. You can wire it in your project with code that looks like this: ```yaml +- filename: gradle-dependencies-list.txt + name: gradle-dependencies-list - filename: 'gradle-dependencies-[% c("var/gradle_dependencies_version") %]' name: gradle-dependencies exec: '[% INCLUDE "fetch-gradle-dependencies" %]' ===================================== projects/application-services/config ===================================== @@ -20,8 +20,6 @@ container: var: build_number: 1 - # This should be updated when the list of gradle dependencies is changed. - gradle_dependencies_version: 147.0-1 gradle_version: 8.14.3 nss_version: '3.118.1' nspr_version: '4.37' @@ -73,6 +71,8 @@ steps: - URL: 'https://ftp.mozilla.org/pub/security/nss/releases/NSS_[% c("var/nss_version") | replace("\\.", "_") %]_RTM/src/nss-[% c("var/nss_version") %]-with-nspr-[% c("var/nspr_version") %].tar.gz' name: nss sha256sum: 9e1f7da9f4e5e3bdfd73f7dc2c618d6125a12354aadaeedbb35af3699bc03e15 + - filename: gradle-dependencies-list.txt + name: gradle-dependencies-list - filename: 'gradle-dependencies-[% c("var/gradle_dependencies_version") %]' name: gradle-dependencies exec: '[% INCLUDE "fetch-gradle-dependencies" %]' ===================================== projects/application-services/gradle-dependencies-list.txt ===================================== @@ -1,4 +1,3 @@ -# Don't forget to update var/gradle_dependencies_version when modifying this file sha256sum | url 6bd4c7c7476f8260cd3bdbb81183583e93fc9f790c27dea7dc314181cbf87aa0 | https://dl.google.com/dl/android/maven2/androidx/annotation/annotation-expe… 2ac2f7106e12f263425b4a4dfc80989447fb895675fe902d86759aa74fd12b7d | https://dl.google.com/dl/android/maven2/androidx/annotation/annotation-expe… ===================================== projects/geckoview/config ===================================== @@ -36,9 +36,6 @@ var: - python3-zstandard - pkg-config - openjdk-17-jdk-headless - # this should be updated when the list of gradle dependencies is changed - # see doc/how-to-create-gradle-dependencies-list.txt - gradle_dependencies_version: 147-1 gradle_version: 8.14.3 glean_parser: 14.0.1 # python/mozboot/mozboot/android.py @@ -181,6 +178,8 @@ input_files: enable: '[% c("var/rlbox") %]' - project: application-services name: application-services + - filename: gradle-dependencies-list.txt + name: gradle-dependencies-list - filename: 'gradle-dependencies-[% c("var/gradle_dependencies_version") %]' name: gradle-dependencies exec: '[% INCLUDE "fetch-gradle-dependencies" %]' ===================================== projects/geckoview/gradle-dependencies-list.txt ===================================== @@ -1,4 +1,3 @@ -# Don't forget to update var/gradle_dependencies_version when modifying this file sha256sum | url 1ed13a50edbb885962751e1bcb5b8a4207a20cb780ea248ffa653aab3fb10fe9 | https://maven.google.com/androidx/activity/activity-compose/1.10.1/activity… e64db6b7126fb512394bc3cf4332a38828009daa8dd56ecbe6c0c7300b2127f5 | https://maven.google.com/androidx/activity/activity-compose/1.10.1/activity… ===================================== projects/glean/config ===================================== @@ -10,8 +10,6 @@ container: build: '[% !c("var/generate_gradle_dependencies_list") %]' var: - # This should be updated when the list of gradle dependencies is changed. - gradle_dependencies_version: 66.1.1-1 gradle_version: 8.14.3 # Uncomment this to run an online build to grab an updated # gradle-dependencies-list.txt. @@ -49,6 +47,8 @@ steps: pkg_type: cargo_vendor norec: sha256sum: 417e8e09a7fbe3205827dfa518bfc4a7a08f1869e6d4fd9edf5d8f3f1f48061a + - filename: gradle-dependencies-list.txt + name: gradle-dependencies-list - filename: 'gradle-dependencies-[% c("var/gradle_dependencies_version") %]' name: gradle-dependencies exec: '[% INCLUDE "fetch-gradle-dependencies" %]' ===================================== projects/glean/gradle-dependencies-list.txt ===================================== @@ -1,4 +1,3 @@ -# Don't forget to update var/gradle_dependencies_version when modifying this file sha256sum | url 6bd4c7c7476f8260cd3bdbb81183583e93fc9f790c27dea7dc314181cbf87aa0 | https://dl.google.com/dl/android/maven2/androidx/annotation/annotation-expe… 2ac2f7106e12f263425b4a4dfc80989447fb895675fe902d86759aa74fd12b7d | https://dl.google.com/dl/android/maven2/androidx/annotation/annotation-expe… ===================================== projects/oss-licenses-plugin/config ===================================== @@ -4,8 +4,6 @@ git_hash: 185216f8268f8b1f8bfe2377ed3e57aa73b1121c # oss-licenses-plugin-v0.10.7 git_url: https://github.com/google/play-services-plugins.git var: - # This should be updated when the list of gradle dependencies is changed. - gradle_dependencies_version: 2 gradle_version: 8.14.3 container: @@ -15,6 +13,8 @@ input_files: - project: container-image - project: gradle name: gradle + - filename: gradle-dependencies-list.txt + name: gradle-dependencies-list - filename: 'gradle-dependencies-[% c("var/gradle_dependencies_version") %]' name: gradle-dependencies exec: '[% INCLUDE "fetch-gradle-dependencies" %]' ===================================== projects/oss-licenses-plugin/gradle-dependencies-list.txt ===================================== @@ -1,5 +1,4 @@ # On how to update dependencies see doc/how-to-create-gradle-dependencies-list.txt -# Don't forget to update var/gradle_dependencies_version when modifying this file sha256sum | url 33c839e4236eabde3896c154d120d651e72064f393e456297c92041d00cc058e | https://dl.google.com/dl/android/maven2/com/android/tools/build/apksig/7.1.… 67a8f20626121a8e4f48fc63a392c0459173a9992eb35cc9c9c3ec82b882862c | https://dl.google.com/dl/android/maven2/com/android/tools/build/apksig/7.1.… ===================================== rbm ===================================== @@ -1 +1 @@ -Subproject commit 36608a50ccf8feedcd03eb846c606718f5ef2d6b +Subproject commit 4c881eb45291e323dcf4e4f1ae7eabed045ea8a3 ===================================== rbm.conf ===================================== @@ -155,7 +155,7 @@ var: input_files: [% c("input_files_id") %] build: [% SET step = c("step") -%] - [% c(step, { filename => 'f', output_dir => '/out', norec => {} }) %] + [% c(step, { filename => 'f', getting_id => 1, norec => {} }) %] display_name: '[% c("var/Project_Name") %] [% c("var/channel") FILTER ucfirst %]' exe_name: firefox @@ -300,6 +300,8 @@ var: # be enabled in rbm.local.conf. dev_artifacts: 0 + gradle_dependencies_version: '[% c("input_files_ids_by_name/gradle-dependencies-list").split(":").1.substr(0, 15) %]' + targets: notarget: linux-x86_64 noint: ===================================== tools/fix_gradle_deps.py ===================================== @@ -14,13 +14,12 @@ import requests # See https://gitlab.torproject.org/tpo/tpa/team/-/issues/41654. requests.packages.urllib3.util.connection.HAS_IPV6 = False -if len(sys.argv) < 3: +if len(sys.argv) < 2: print( - f"Usage: {sys.argv[0]} project-name gradle-dep-num" + f"Usage: {sys.argv[0]} project-name" ) sys.exit(1) target = sys.argv[1] -target_ver = sys.argv[2] # We assume the script is in tor-browser-build/tools tbbuild = Path(__file__).parent.parent @@ -38,14 +37,18 @@ for p in java_projects: parser = re.compile(r"^([0-9a-fA-F]+)\s+\|\s+(\S+)\s*$") pairs = [] +h = hashlib.sha256() with open(tbbuild / "projects" / target / "gradle-dependencies-list.txt") as f: for line in f.readlines(): + h.update(line.encode("utf-8")) line = line.strip() if line[0] == '#' or line == 'sha256sum | url': continue m = parser.match(line) pairs.append((m.group(2), m.group(1))) +target_ver = h.hexdigest()[:15] + dest_dir = tbbuild / "out" / target / f"gradle-dependencies-{target_ver}" dest_dir.mkdir(parents=True, exist_ok=True) os.chdir(str(dest_dir)) View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/7… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/7… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/rbm][main] Bug 40093: Add option to get the checksum of an input file
by boklm (@boklm) 09 Feb '26

09 Feb '26
boklm pushed to branch main at The Tor Project / Applications / RBM Commits: 4c881eb4 by Nicolas Vigier at 2026-01-28T09:51:39+01:00 Bug 40093: Add option to get the checksum of an input file input_files_ids_by_name/$name can be used to get the id (sha256sum or sha512sum) of an input file. At the same time we remove the notmpl option for simplification, which we have not used. We can add it back later in case it is useful. - - - - - 5 changed files: - doc/rbm_config.asc - doc/rbm_input_files.asc - doc/rbm_templates.asc - lib/RBM.pm - lib/RBM/DefaultConfig.pm Changes: ===================================== doc/rbm_config.asc ===================================== @@ -246,8 +246,17 @@ input_files_by_name:: with their +name+ as index. The input files without a +name+ are not in this hash. +input_files_ids_by_name:: + This option contains the ids (hashes) of all the +input_files+, + with their +name+ as index. The id of an input file will be the + value of the option +input_file_id+ if it is defined, or + +filename:hash+, where +filename+ is the filename of the file, + and +hash+ is the sha512sum if the +sha512sum+ option is defined, + the sha256sum otherwise. This option does not work for input + files of type +project+, +exec+ or +content+. + input_files_id:: - The value of this option is an identifier of the input_files. + The value of this option is a single identifier of all the input_files. When any of the input files is changed, the identifier changes. This identifier is something that can be used in a project's filename to trigger a rebuild when any of its input files is @@ -280,11 +289,6 @@ timestamp:: commit time of the commit used. If set to 0 it will use the current time. -notmpl:: - An array containing a list of options that should not be - processed as template (see the +template+ section below for - details). - step:: The value of this option is the name of the build script we are going to be running (by default 'build', but you could have an ===================================== doc/rbm_input_files.asc ===================================== @@ -53,7 +53,7 @@ filename:: name:: Optionaly the input_file can have a name. This name is used as - key in the +input_files_by_name+ option. + key in the +input_files_by_name+ and +input_files_ids_by_name+ options. content:: The content of the file. ===================================== doc/rbm_templates.asc ===================================== @@ -15,10 +15,7 @@ however, for the options that are needed to process templates, so they can't be templated themself. The following options are not templated : - projects_dir - -If you want to make other options not templated, add them to the -+notmpl+ config option, which is an array. All the other options are -automatically processed as template. + - modules_dir The template are made using perl Template Toolkit. You can read more about the syntax on the http://www.template-toolkit.org/[Template ===================================== lib/RBM.pm ===================================== @@ -237,11 +237,8 @@ sub config { } sub notmpl { - my ($name, $project) = @_; - return 1 if $name eq 'notmpl'; - my @n = (@{$config->{default}{notmpl}}, - @{project_config($project, 'notmpl')}); - return grep { $name eq $_ } @n; + my ($name) = @_; + return grep { $name eq $_ } @{$config->{default}{notmpl}}; } sub confkey_str { @@ -282,9 +279,13 @@ sub project_config { ['run'], $project_path, ['local'], [], @modules, ['system'], ['default']); if (!$options->{no_tmpl} && defined($res) && !ref $res - && !notmpl(confkey_str($name), $project)) { - $res = process_template($project, $res, - confkey_str($name) eq 'output_dir' ? '.' : undef); + && !notmpl(confkey_str($name))) { + my $output_dir = undef; + if (confkey_str($name) eq 'output_dir' || + confkey_str($name) eq 'getting_id_value/output_dir') { + $output_dir = '.'; + } + $res = process_template($project, $res, $output_dir); } $config_cache{$project}{$step}{$name_str}{$cache_id} = $res; $config->{opt} = $opt_save; @@ -733,7 +734,7 @@ sub process_template { } return $res; } - $dest_dir //= rbm_path(project_config($project, 'output_dir')); + $dest_dir //= rbm_path(project_config($project, 'getting_id_value/output_dir')); my $project_dir = modules_project_dir($project); my $common_dirs = join(':', modules_common_dirs($project)); my $template = Template->new( @@ -823,7 +824,7 @@ sub input_file_need_dl { $fname = undef; } } - if ($action eq 'input_files_id') { + if ($action eq 'input_files_id' || $action eq 'getfids') { return undef if $input_file->{input_file_id}; for my $checksum (qw/sha512sum sha256sum/) { if ( ($input_file->{$checksum} || $input_file->{norec}{$checksum}) @@ -861,7 +862,7 @@ sub input_file_id { return $filename . ':' . $t->($checksum); } } - my $opts = { norec => { output_dir => '/out', getting_id => 1, }}; + my $opts = { norec => { getting_id => 1, }}; return $filename . ':' . sha256_hex($t->('exec', $opts)) if $input_file->{exec}; shafile('sha256sum', $fname, { remove_cache => 1 }) if $t->('refresh_input'); @@ -923,6 +924,7 @@ sub input_files { my @res_copy; my %res_getfnames; my @res_getfpaths; + my %res_getfids; my $getfnames_noname = 0; my $input_files_id = ''; $options = {$options ? %$options : ()}; @@ -1016,6 +1018,11 @@ sub input_files { }; next; } + if ($action eq 'getfids') { + next if $input_file->{project}; + next if $input_file->{exec}; + next if $input_file->{content}; + } my $proj_out_dir; if ($input_file->{project}) { $proj_out_dir = rbm_path(project_step_config($t->('project'), 'output_dir', @@ -1038,38 +1045,51 @@ sub input_files { my ($fname) = file_in_dir($name, $src_dir, $proj_out_dir, @modules_common_dirs); my $file_gpg_id = gpg_id($t->('file_gpg_id')); + my $dl_file = sub {}; if (input_file_need_dl($input_file, $t, $fname, $action)) { - if ($t->('content')) { - my $dname = dirname("$proj_out_dir/$name"); - make_path($dname) unless -d $dname; - path("$proj_out_dir/$name")->spew_utf8($t->('content')); - } elsif ($t->('URL')) { - urlget($project, {%$options, %$input_file, filename => $name}, 1); - } elsif ($t->('exec')) { - my $exec_script = project_config($project, 'exec', - { $options ? %$options : (), %$input_file }); - if (run_script($project, $exec_script, - sub { system(@_) }) != 0) { - exit_error "Error creating $name"; + $dl_file = sub { + if ($t->('content')) { + my $dname = dirname("$proj_out_dir/$name"); + make_path($dname) unless -d $dname; + path("$proj_out_dir/$name")->spew_utf8($t->('content')); + } elsif ($t->('URL')) { + urlget($project, {%$options, %$input_file, filename => $name}, 1); + } elsif ($t->('exec')) { + my $exec_script = project_config($project, 'exec', + { $options ? %$options : (), %$input_file }); + if (run_script($project, $exec_script, + sub { system(@_) }) != 0) { + exit_error "Error creating $name"; + } + } elsif ($input_file->{project} && $t->('project')) { + my $p = $t->('project'); + print "Building project $p - $name\n"; + my $run_save = $config->{run}; + $config->{run} = { target => $input_file->{target} }; + $config->{run}{target} //= $run_save->{target}; + build_pkg($p, {%$options, origin_project => $project, + %$input_file}); + $config->{run} = $run_save; + print "Finished build of project $p - $name\n"; + } else { + dd $input_file; + exit_error "Missing file $name"; } - } elsif ($input_file->{project} && $t->('project')) { - my $p = $t->('project'); - print "Building project $p - $name\n"; - my $run_save = $config->{run}; - $config->{run} = { target => $input_file->{target} }; - $config->{run}{target} //= $run_save->{target}; - build_pkg($p, {%$options, origin_project => $project, - %$input_file}); - $config->{run} = $run_save; - print "Finished build of project $p - $name\n"; - } else { - dd $input_file; - exit_error "Missing file $name"; + ($fname) = file_in_dir($name, $src_dir, $proj_out_dir, + @modules_common_dirs); + exit_error "Error getting file $name" unless $fname; } - ($fname) = file_in_dir($name, $src_dir, $proj_out_dir, - @modules_common_dirs); - exit_error "Error getting file $name" unless $fname; } + if ($action eq 'getfids') { + my $if_name = $t->('name') if $input_file->{name}; + next unless $if_name; + $res_getfids{$if_name} = sub { + $dl_file->(); + return input_file_id($input_file, $t, $fname, $name); + }; + next; + } + $dl_file->(); if ($action eq 'input_files_id') { $input_files_id .= input_file_id($input_file, $t, $fname, $name); $input_files_id .= "\n"; @@ -1145,6 +1165,7 @@ sub input_files { return @res_copy if ($action eq 'copy' || $action eq 'link'); return \%res_getfnames if $action eq 'getfnames'; return \@res_getfpaths if $action eq 'getfpaths'; + return \%res_getfids if $action eq 'getfids'; } sub system_log { ===================================== lib/RBM/DefaultConfig.pm ===================================== @@ -114,6 +114,12 @@ our %default_config = ( projects_dir => 'projects', modules_dir => 'modules', output_dir => 'out', + # `getting_id_value/output_dir` is used as `output_dir` when processing + # template. To avoid having ids being affected by changing `output_dir`, + # a fixed value is returned when `getting_id` is set. + getting_id_value => { + output_dir => '[% IF c("getting_id"); GET "/out"; ELSE; GET c("output_dir"); END %]', + }, git_clone_dir => 'git_clones', hg_clone_dir => 'hg_clones', hg_clone_subdir => '.', @@ -122,7 +128,7 @@ our %default_config = ( build => '[% INCLUDE build -%]', build_log => '-', build_log_append => '1', - notmpl => [ qw(projects_dir modules_dir) ], + notmpl => [ qw(projects_dir modules_dir getting_id) ], abbrev_length => '12', abbrev => '[% IF c("git_url"); @@ -626,6 +632,7 @@ ZIP_END touch => "[% USE date %]touch -m -t [% date.format(c('timestamp'), format = '%Y%m%d%H%M') %]", arch => \&get_arch, input_files_by_name => sub { RBM::input_files('getfnames', @_); }, + input_files_ids_by_name => sub { RBM::input_files('getfids', @_); }, input_files_id => sub { RBM::input_files('input_files_id', @_); }, input_files_paths => sub { RBM::input_files('getfpaths', @_); }, link_input_files => '[% IF c("remote_exec") %]1[% END %]', View it on GitLab: https://gitlab.torproject.org/tpo/applications/rbm/-/commit/4c881eb45291e32… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/rbm/-/commit/4c881eb45291e32… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser-build][main] Bug 41718: Updated Noto Emoji to v2.051.
by Pier Angelo Vendrame (@pierov) 09 Feb '26

09 Feb '26
Pier Angelo Vendrame pushed to branch main at The Tor Project / Applications / tor-browser-build Commits: 04871e60 by Pier Angelo Vendrame at 2026-02-05T14:53:57+01:00 Bug 41718: Updated Noto Emoji to v2.051. Also, cleaned up a few URLs of other fonts. Since we check the hash of the downloaded files, we can include the tag in GitHub URLs. - - - - - 1 changed file: - projects/fonts/config Changes: ===================================== projects/fonts/config ===================================== @@ -1,12 +1,14 @@ # vim: filetype=yaml sw=2 +# Version needs to be updated whenever we change the list of Noto fonts without +# changing var/noto_git_hash. version: '4' filename: "[% project %]-[% c('version') %]-[% c('var/platform') %]-[% c('var/build_id') %].tar.[% c('compress_tar') %]" container: # We just copy files around, no need to use a container. use_container: 0 var: - # noto-monthly-release-24.9.1 - noto_git_hash: eeb71fdda20300eb0891badeed5e64850e2cbc64 + # noto-monthly-release-2026.02.01 + noto_git_hash: 0dd6225462349adf863bf50d1a69ead98342e14d # Use this way so that the script that downloads the fonts can access the # lists of all the targets. noto_fonts_common: @@ -175,26 +177,25 @@ input_files: - URL: https://github.com/notofonts/noto-fonts/raw/71d0a9e78ae4257499cabd4a8ad3e5e… sha256sum: cf264a22292950ca1679b2ade07e9e6ecb26c649ab70975d0e113f979efa827a enable: '[% c("var/linux") %]' - # Noto Sans CJK Version 2.004 - - URL: https://github.com/googlefonts/noto-cjk/raw/523d033d6cb47f4a80c58a35753646f… + - URL: https://github.com/googlefonts/noto-cjk/raw/Sans2.004/Sans/SubsetOTF/JP/Not… sha256sum: dff723ba59d57d136764a04b9b2d03205544f7cd785a711442d6d2d085ac5073 enable: '[% c("var/linux") %]' - - URL: https://github.com/googlefonts/noto-cjk/raw/523d033d6cb47f4a80c58a35753646f… + - URL: https://github.com/googlefonts/noto-cjk/raw/Sans2.004/Sans/SubsetOTF/KR/Not… sha256sum: 69975a0ac8472717870aefeab0a4d52739308d90856b9955313b2ad5e0148d68 enable: '[% c("var/linux") %]' - - URL: https://github.com/googlefonts/noto-cjk/raw/523d033d6cb47f4a80c58a35753646f… + - URL: https://github.com/googlefonts/noto-cjk/raw/Sans2.004/Sans/SubsetOTF/SC/Not… sha256sum: faa6c9df652116dde789d351359f3d7e5d2285a2b2a1f04a2d7244df706d5ea9 enable: '[% c("var/linux") %]' - - URL: https://github.com/googlefonts/noto-cjk/raw/523d033d6cb47f4a80c58a35753646f… + - URL: https://github.com/googlefonts/noto-cjk/raw/Sans2.004/Sans/SubsetOTF/TC/Not… sha256sum: 5bab0cb3c1cf89dde07c4a95a4054b195afbcfe784d69d75c340780712237537 enable: '[% c("var/linux") %]' - - URL: https://github.com/googlefonts/noto-emoji/raw/b3e3051a088047d19fd4d49b1c3ac… - sha256sum: 3ed77810c203e1a67735dc19d395f32c23f2d7c0c3696690f4f78e15e57ab816 + - URL: https://github.com/googlefonts/noto-emoji/raw/v2.051/fonts/NotoColorEmoji.t… + sha256sum: 72a635cb3d2f3524c51620cdde406b217204e8a6a06c6a096ff8ed4b5fd6e27b enable: '[% c("var/linux") %]' - URL: https://github.com/stipub/stixfonts/raw/v2.13b171/fonts/static_otf/STIXTwoM… sha256sum: 3a5f3f26f40d5698b3c62dd085d48d6663696a3f80825aab8b553d5097518e8c name: stix enable: '[% c("var/have_stix") %]' - - URL: 'https://github.com/mcfnlp/Pyidaungsu/raw/refs/heads/master/Pyidaungsu2.5.3/…' + - URL: 'https://github.com/mcfnlp/Pyidaungsu/raw/refs/heads/ff1cd8dfe8c451244329d7a…' sha256sum: df7106c15da76f6a24c10821b43da51f54961f6bc6791fb1fcf21c6c60bb2e10 name: Pyidaungsu View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/0… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/0… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][base-browser-147.0a1-16.0-2] fixup! BB 43564: Modify ./mach bootstrap for Base Browser
by brizental (@brizental) 06 Feb '26

06 Feb '26
brizental pushed to branch base-browser-147.0a1-16.0-2 at The Tor Project / Applications / Tor Browser Commits: f5d1594c by Beatriz Rizental at 2026-02-06T17:10:35-03:00 fixup! BB 43564: Modify ./mach bootstrap for Base Browser - - - - - 1 changed file: - build/moz.configure/bootstrap.configure Changes: ===================================== build/moz.configure/bootstrap.configure ===================================== @@ -198,7 +198,7 @@ def bootstrap_path(path, **kwargs): path_prefix = path_parts.pop(0) # Small hack because extensions are inside the browser folder. - if path_parts[0] in ("noscript", ): + if path_parts[0] in ("noscript",): path_prefix = "browser" def try_tbb_bootstrap(exists): View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/f5d1594… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/f5d1594… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-147.0a1-16.0-2] 2 commits: fixup! TB 42247: Android helpers for the TorProvider
by clairehurst (@clairehurst) 05 Feb '26

05 Feb '26
clairehurst pushed to branch tor-browser-147.0a1-16.0-2 at The Tor Project / Applications / Tor Browser Commits: 5eb4ba41 by Dan Ballard at 2026-02-05T13:09:54-07:00 fixup! TB 42247: Android helpers for the TorProvider Bug 43645: wiring in proper call to shutdown the tor process - - - - - c9a70495 by Dan Ballard at 2026-02-05T13:09:54-07:00 fixup! TB 41878: [android] Add standalone Tor Bootstrap Bug 43645: wire in call to shutdown tor process onDestroy - - - - - 4 changed files: - mobile/android/fenix/app/src/main/java/org/mozilla/fenix/HomeActivity.kt - mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tor/TorController.kt - mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tor/TorControllerGV.kt - mobile/android/geckoview/src/main/java/org/mozilla/geckoview/TorAndroidIntegration.java Changes: ===================================== mobile/android/fenix/app/src/main/java/org/mozilla/fenix/HomeActivity.kt ===================================== @@ -184,6 +184,7 @@ import mozilla.components.browser.engine.gecko.GeckoEngine import org.mozilla.fenix.compose.core.Action import org.mozilla.fenix.compose.snackbar.SnackbarState import org.mozilla.fenix.compose.snackbar.Snackbar +import org.mozilla.fenix.tor.TorController import org.mozilla.fenix.tor.UrlQuickLoadViewModel import org.mozilla.geckoview.TorAndroidIntegration.BootstrapStateChangeListener import org.mozilla.geckoview.TorConnectStage @@ -1586,6 +1587,7 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity { // If we don't manually stop the service, the persistent "close tabs" notification sometimes does not clear applicationContext.stopService(Intent(applicationContext, PrivateNotificationService::class.java)) finishAndRemoveTask() + components.torController.shutdown() exitProcess(0) } } ===================================== mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tor/TorController.kt ===================================== @@ -38,4 +38,5 @@ interface TorController { fun initiateTorBootstrap(lifecycleScope: LifecycleCoroutineScope? = null, withDebugLogging: Boolean = false) fun stopTor() + fun shutdown() } ===================================== mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tor/TorControllerGV.kt ===================================== @@ -176,6 +176,10 @@ class TorControllerGV( getTorIntegration().cancelBootstrap() } + override fun shutdown() { + getTorIntegration().shutdown() + } + // TorEventsBootstrapStateChangeListener override fun onBootstrapStageChange(stage: TorConnectStage) { Log.d(TAG, "onBootstrapStageChange(stage = $stage)") ===================================== mobile/android/geckoview/src/main/java/org/mozilla/geckoview/TorAndroidIntegration.java ===================================== @@ -105,8 +105,8 @@ public class TorAndroidIntegration implements BundleEventListener { registerListener(); } - /* package */ synchronized void shutdown() { - // FIXME: It seems this never gets called + // To be called when the app is shutting down only + public synchronized void shutdown() { if (mTorProcess != null) { mTorProcess.shutdown(); mTorProcess = null; @@ -332,7 +332,7 @@ public class TorAndroidIntegration implements BundleEventListener { Log.i(TAG, "[tor-" + mHandle + "] " + line); } } catch (IOException e) { - Log.e(TAG, "Failed to read stdout of the tor process " + mHandle, e); + Log.e(TAG, "Failed to read stdout of the tor process " + mHandle + " (expected when program is exiting)", e); } Log.d(TAG, "Exiting the stdout loop for process " + mHandle); final GeckoBundle data = new GeckoBundle(2); View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/cd8bcb… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/cd8bcb… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-147.0a1-16.0-2] 2 commits: fixup! Temporary changes to about:torconnect for Android.
by clairehurst (@clairehurst) 05 Feb '26

05 Feb '26
clairehurst pushed to branch tor-browser-147.0a1-16.0-2 at The Tor Project / Applications / Tor Browser Commits: 12387757 by clairehurst at 2026-02-05T12:20:55-07:00 fixup! Temporary changes to about:torconnect for Android. This reverts commit aed2663396d9fe060829290ac9e64774131ac1c3. - - - - - cd8bcb6e by clairehurst at 2026-02-05T12:20:55-07:00 fixup! [android] Implement Android-native Connection Assist UI - - - - - 9 changed files: - mobile/android/fenix/app/src/main/java/org/mozilla/fenix/HomeActivity.kt - mobile/android/fenix/app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt - mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt - mobile/android/fenix/app/src/main/java/org/mozilla/fenix/utils/Settings.kt - mobile/android/fenix/app/src/main/res/values/preference_keys.xml - mobile/android/fenix/app/src/main/res/xml/preferences.xml - toolkit/components/torconnect/content/aboutTorConnect.css - toolkit/components/torconnect/content/aboutTorConnect.html - toolkit/components/torconnect/content/aboutTorConnect.js Changes: ===================================== mobile/android/fenix/app/src/main/java/org/mozilla/fenix/HomeActivity.kt ===================================== @@ -185,7 +185,6 @@ import org.mozilla.fenix.compose.core.Action import org.mozilla.fenix.compose.snackbar.SnackbarState import org.mozilla.fenix.compose.snackbar.Snackbar import org.mozilla.fenix.tor.UrlQuickLoadViewModel -import org.mozilla.geckoview.TorAndroidIntegration import org.mozilla.geckoview.TorAndroidIntegration.BootstrapStateChangeListener import org.mozilla.geckoview.TorConnectStage import kotlin.system.exitProcess @@ -197,7 +196,7 @@ import kotlin.system.exitProcess * - browser screen */ @SuppressWarnings("TooManyFunctions", "LargeClass", "LongMethod") -open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity, TorAndroidIntegration.BootstrapStateChangeListener { +open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity { @VisibleForTesting internal lateinit var binding: ActivityHomeBinding lateinit var themeManager: ThemeManager @@ -611,14 +610,6 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity, TorAn onBackPressedCallback = onBackPressedCallback, ) - if (settings().useHtmlConnectionUi) { - val engine = components.core.engine - if (engine is GeckoEngine) { - val torIntegration = engine.getTorIntegrationController() - torIntegration.registerBootstrapStateChangeListener(this) - } - } - StartupTimeline.onActivityCreateEndHome(this) // DO NOT MOVE ANYTHING BELOW HERE. } @@ -1388,20 +1379,7 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity, TorAn @VisibleForTesting internal fun navigateToHome(navController: NavController) { - // if (this is ExternalAppBrowserActivity) { - // return - // } - - if (!settings().useHtmlConnectionUi) { - navController.navigate(NavGraphDirections.actionStartupTorConnectionAssist()) - } else { - navController.navigate(NavGraphDirections.actionStartupHome()) - openToBrowserAndLoad( - searchTermOrURL = "about:torconnect", - newTab = true, - from = BrowserDirection.FromHome, - ) - } + navController.navigate(NavGraphDirections.actionStartupTorConnectionAssist()) } final override fun attachBaseContext(base: Context) { @@ -1610,14 +1588,4 @@ open class HomeActivity : LocaleAwareAppCompatActivity(), NavHostActivity, TorAn finishAndRemoveTask() exitProcess(0) } - - override fun onBootstrapStageChange(stage: TorConnectStage) { - if (stage.isBootstrapped) { - if (settings().useHtmlConnectionUi) { - components.useCases.tabsUseCases.removeAllTabs() - navHost.navController.navigate(NavGraphDirections.actionStartupHome()) - } - } - } - override fun onBootstrapProgress(progress: Double, hasWarnings: Boolean) = Unit } ===================================== mobile/android/fenix/app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt ===================================== @@ -1954,10 +1954,6 @@ abstract class BaseBrowserFragment : @Suppress("DEPRECATION") it.announceForAccessibility(selectedTab.toDisplayTitle()) - if (getCurrentTab()?.content?.url == "about:torconnect") { - // FIXME: view is not available anymore. - // browserToolbarView.view.visibility = View.GONE - } } } else { view?.let { view -> initializeUI(view) } @@ -1991,26 +1987,6 @@ abstract class BaseBrowserFragment : ), ) } - - handleBetaHtmlTorConnect() - } - - private fun handleBetaHtmlTorConnect() { - val currentTab = getCurrentTab() ?: return - if (currentTab.content.url == "about:torconnect") { - if (!requireActivity().settings().useHtmlConnectionUi) { - requireContext().components.useCases.tabsUseCases.removeTab(currentTab.id) - (requireActivity() as HomeActivity).navigateToHome( - findNavController(), - ) - } else { - // This just makes it not flash (be visible for a split second) before handleTabSelected() hides it again - // FIXME: view is not available anymore. - // browserToolbarView.view.visibility = View.GONE - } - } else if (currentTab.content.url == "about:tor") { - requireContext().components.useCases.tabsUseCases.removeTab(currentTab.id) - } } private fun evaluateMessagesForMicrosurvey(components: Components) = ===================================== mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt ===================================== @@ -10,7 +10,6 @@ import android.os.Bundle import android.os.Handler import android.os.Looper import android.os.StrictMode -import android.util.Log import android.view.LayoutInflater import android.view.View import android.widget.Toast @@ -31,7 +30,6 @@ import androidx.preference.SwitchPreference import androidx.recyclerview.widget.RecyclerView import com.google.android.material.dialog.MaterialAlertDialogBuilder import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.delay import kotlinx.coroutines.launch import mozilla.components.browser.state.state.selectedOrDefaultSearchEngine @@ -732,20 +730,6 @@ class SettingsFragment : PreferenceFragmentCompat(), UserInteractionHandler { @VisibleForTesting internal fun setupHomepagePreference(settings: Settings) { - /*with(requirePreference<Preference>(R.string.pref_key_home)) { - summary = when { - settings.alwaysOpenTheHomepageWhenOpeningTheApp -> - getString(R.string.opening_screen_homepage_summary) - - settings.openHomepageAfterFourHoursOfInactivity -> - getString(R.string.opening_screen_after_four_hours_of_inactivity_summary) - - settings.alwaysOpenTheLastTabWhenOpeningTheApp -> - getString(R.string.opening_screen_last_tab_summary) - - else -> null - } - }*/ } @VisibleForTesting @@ -804,11 +788,6 @@ class SettingsFragment : PreferenceFragmentCompat(), UserInteractionHandler { } } - requirePreference<Preference>(R.string.pref_key_use_html_connection_ui).apply { - onPreferenceChangeListener = object : SharedPreferenceUpdater() {} - isVisible = Config.channel != ReleaseChannel.Release - } - requirePreference<Preference>(R.string.pref_key_tor_logs).apply { setOnPreferenceClickListener { val directions = ===================================== mobile/android/fenix/app/src/main/java/org/mozilla/fenix/utils/Settings.kt ===================================== @@ -2899,11 +2899,6 @@ class Settings( return sharedPreferences.getBoolean(cleanupPreferenceKey, false) } - var useHtmlConnectionUi by booleanPreference( - key = appContext.getPreferenceKey(R.string.pref_key_use_html_connection_ui), - default = false, - ) - var quickStart by booleanPreference( appContext.getPreferenceKey(R.string.pref_key_quick_start), default = false, ===================================== mobile/android/fenix/app/src/main/res/values/preference_keys.xml ===================================== @@ -538,7 +538,6 @@ <string name="pref_key_tor_network_settings_explanation" translatable="false">pref_key_tor_network_settings_explanation</string> <string name="pref_key_tor_network_settings_bridge_config" translatable="false">pref_key_tor_network_settings_bridge_config</string> <string name="pref_key_tor_logs" translatable="false">pref_key_tor_logs</string> - <string name="pref_key_use_html_connection_ui" translatable="false">pref_key_use_html_connection_ui</string> <!-- Changing the pref_key should reset it to off for users that had it enabled --> <string name="pref_key_about_config_shortcut" translatable="false">pref_key_about_config_shortcut</string> <string name="pref_key_tor_network_settings_bridge_config_explanation" translatable="false">pref_key_tor_network_settings_bridge_config_explanation</string> <string name="pref_key_tor_network_settings_bridge_config_toggle" translatable="false">pref_key_tor_network_settings_bridge_config_toggle</string> ===================================== mobile/android/fenix/app/src/main/res/xml/preferences.xml ===================================== @@ -181,13 +181,6 @@ android:title="@string/tor_connect_automatically_label" app:iconSpaceReserved="false" /> - <SwitchPreference - android:defaultValue="false" - android:key="@string/pref_key_use_html_connection_ui" - android:summary="Recommended only for debugging" - android:title="Enable HTML connection UI" - app:iconSpaceReserved="false" /> - <Preference android:key="@string/pref_key_tor_logs" app:iconSpaceReserved="false" ===================================== toolkit/components/torconnect/content/aboutTorConnect.css ===================================== @@ -4,11 +4,6 @@ @import url("chrome://global/skin/tor-colors.css"); @import url("chrome://global/skin/onion-pattern.css"); -html { - width: 100%; - height: 100%; -} - body:not(.loaded) { /* Keep blank whilst loading. */ display: none; @@ -275,147 +270,3 @@ body.aboutTorConnect .title.location { background-image: url("chrome://global/content/torconnect/connection-location.svg"); stroke: var(--icon-color-warning); } - -/* Android-specific CSS, to be removed when we use only the native UI. */ -:root { - --android-dark-accents-buttons: #9059ff; - --android-dark-background-secondary: #e1e0e7; - --android-dark-text-primary: #fbfbfe; - --android-light-text-primary: #15141a; -} - -[hidden="true"] { - display: none !important; -} - -body.android { - width: 100%; - height: 100%; - box-sizing: border-box; - margin: 0; - padding: 0 24px !important; - color: var(--android-dark-text-primary); - background: linear-gradient(194deg, #692e9d -0.93%, #393270 48.91%); - font: menu; - font-size: var(--font-size-small); - display: flex; -} - -.android #connectPageContainer { - max-width: none; - display: flex; - flex-direction: column; - flex: 1; -} - -.android #breadcrumbs { - display: none; -} - -.android #text-container { - display: flex; - flex-direction: column; - flex: 1; -} - -.android .title { - background-position: left 0; - background-repeat: no-repeat; - background-size: 40px; - padding-top: 64px; - font-size: var(--font-size-xlarge); - line-height: 28px; -} - -.android h1 { - font-weight: var(--font-weight); - font-size: inherit; - margin: 0 0 16px 0; -} - -.android p { - margin: 0; - padding-bottom: 8px; - line-height: 20px; -} - -.android #quickstartContainer { - margin-top: 24px; -} - -.android .button-container { - display: flex; - flex: 1; - flex-direction: column; -} - -.android #locationDropdown { - width: 100%; - max-width: none; - margin: 0; -} - -.android select { - background: transparent; - border: none; - /* stylelint-disable-next-line stylelint-plugin-mozilla/use-border-color-tokens */ - border-bottom: 1px solid var(--android-dark-text-primary); - color: var(--android-dark-text-primary); - display: block; - width: 100%; - margin-top: 10px; - padding: 8px; -} - -.android #buttonPadding { - flex: 1; -} - -body:not(.android) #connectButtonContainer { - /* Use the .button-container context */ - display: contents; -} - -.android #connectButtonContainer { - width: 100%; - padding-bottom: 18px; - display: grid; -} - -/* Be sure not to match the togglee */ -.android #connectButtonContainer button { - display: block; - width: 100%; - margin: 4px 0; - padding: 11px 30px; - font-size: var(--font-size-small); - font-weight: var(--font-weight); - border: none; - border-radius: var(--border-radius-small); -} - -.android #connectButton, -.android #tryBridgeButton, -.android #configureButton.primary { - color: var(--android-dark-text-primary); - background-color: var(--android-dark-accents-buttons); -} - -.android #configureButton { - order: 1; -} - -.android #restartButton { - order: 2; -} - -.android #restartButton, -.android #cancelButton, -.android #configureButton { - color: var(--android-light-text-primary); - background-color: var(--android-dark-background-secondary); -} - -.android .onion-pattern-container { - display: none; -} ===================================== toolkit/components/torconnect/content/aboutTorConnect.html ===================================== @@ -6,7 +6,6 @@ http-equiv="Content-Security-Policy" content="default-src chrome:; object-src 'none'" /> - <meta name="viewport" content="width=device-width" /> <link rel="stylesheet" href="chrome://global/content/torconnect/aboutTorConnect.css" @@ -65,7 +64,11 @@ <moz-toggle id="quickstartToggle"></moz-toggle> </div> - <div class="button-container"> + <div id="connectButtonContainer" class="button-container"> + <button id="restartButton" hidden="true"></button> + <button id="configureButton" hidden="true"></button> + <button id="cancelButton" hidden="true"></button> + <button id="connectButton" hidden="true" class="tor-button"></button> <label id="locationDropdownLabel" for="countries"></label> <form id="locationDropdown" hidden="true"> <select id="regions-select"> @@ -74,22 +77,11 @@ <optgroup id="full-regions-option-group"></optgroup> </select> </form> - <span id="buttonPadding"></span> - <span id="connectButtonContainer"> - <button id="restartButton" hidden="true"></button> - <button id="configureButton" hidden="true"></button> - <button id="cancelButton" hidden="true"></button> - <button - id="connectButton" - hidden="true" - class="tor-button" - ></button> - <button - id="tryBridgeButton" - hidden="true" - class="tor-button" - ></button> - </span> + <button + id="tryBridgeButton" + hidden="true" + class="tor-button" + ></button> </div> </div> </div> ===================================== toolkit/components/torconnect/content/aboutTorConnect.js ===================================== @@ -66,7 +66,7 @@ class AboutTorConnect { connect: "button#connectButton", tryBridge: "button#tryBridgeButton", locationDropdownLabel: "#locationDropdownLabel", - locationDropdown: "#locationDropdown", + locationDropdown: "form#locationDropdown", locationDropdownSelect: "#regions-select", }, }); @@ -757,9 +757,6 @@ class AboutTorConnect { } initElements(direction) { - const isAndroid = navigator.userAgent.includes("Android"); - document.body.classList.toggle("android", isAndroid); - document.documentElement.setAttribute("dir", direction); this.elements.connectToTorLink.addEventListener("click", () => { View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/e2e816… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/e2e816… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-147.0a1-16.0-2] 2 commits: Bug 2013390: Test file extension before testing zip and tarfiles.r=ahal
by brizental (@brizental) 05 Feb '26

05 Feb '26
brizental pushed to branch tor-browser-147.0a1-16.0-2 at The Tor Project / Applications / Tor Browser Commits: bd2b83d9 by Beatriz Rizental at 2026-02-05T19:38:10+01:00 Bug 2013390: Test file extension before testing zip and tarfiles.r=ahal The tarfile check specifically has been returning false positives on DMG files. Differential Revision: https://phabricator.services.mozilla.com/D281070 - - - - - e2e81683 by Beatriz Rizental at 2026-02-05T19:38:10+01:00 Bug 2013358: Drop Python <3.13 requirement from manifestparser.r=ahal Differential Revision: https://phabricator.services.mozilla.com/D281036 - - - - - 2 changed files: - testing/mozbase/manifestparser/setup.py - testing/mozbase/mozinstall/mozinstall/mozinstall.py Changes: ===================================== testing/mozbase/manifestparser/setup.py ===================================== @@ -25,6 +25,7 @@ setup( "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", ], # Get strings from http://pypi.python.org/pypi?%3Aaction=list_classifiers keywords="mozilla manifests", @@ -39,5 +40,5 @@ setup( [console_scripts] manifestparser = manifestparser.cli:main """, - python_requires=">=3.8, <3.13", + python_requires=">=3.8", ) ===================================== testing/mozbase/mozinstall/mozinstall/mozinstall.py ===================================== @@ -121,12 +121,12 @@ def install(src, dest): if src.lower().endswith(".msix"): # MSIX packages _are_ ZIP files, so we need to look for them first. install_dir = _install_msix(src) - elif zipfile.is_zipfile(src) or tarfile.is_tarfile(src): - install_dir = mozfile.extract(src, dest)[0] elif src.lower().endswith(".dmg"): install_dir = _install_dmg(src, dest) elif src.lower().endswith(".exe"): install_dir = _install_exe(src, dest) + elif zipfile.is_zipfile(src) or tarfile.is_tarfile(src): + install_dir = mozfile.extract(src, dest)[0] else: raise InvalidSource(f"{src} is not a valid installer file") View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/ffe41b… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/ffe41b… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][base-browser-147.0a1-16.0-2] fixup! BB 42683: Create script to generate issue triage csv file from bugzilla query and git logs
by Pier Angelo Vendrame (@pierov) 05 Feb '26

05 Feb '26
Pier Angelo Vendrame pushed to branch base-browser-147.0a1-16.0-2 at The Tor Project / Applications / Tor Browser Commits: f54e79d0 by Pier Angelo Vendrame at 2026-02-05T19:14:32+01:00 fixup! BB 42683: Create script to generate issue triage csv file from bugzilla query and git logs Delete the script that has been moved to tor-browser-build:tools/browser. - - - - - 1 changed file: - − tools/torbrowser/generate-bugzilla-triage-csv.sh Changes: ===================================== tools/torbrowser/generate-bugzilla-triage-csv.sh deleted ===================================== @@ -1,239 +0,0 @@ -#!/usr/bin/env bash - -# prints to stderr -function echoerr() { echo "$@" 1>&2; } - -# help dialog -if [ "$#" -lt 5 ]; then - echoerr "Usage: $0 ff-version begin-commit end-commit gitlab-audit-issue reviewers..." - echoerr "" - echoerr "Writes a CSV to stdout of Bugzilla issues to triage for a particular Firefox version. This" - echoerr "script performs a union of the labeled Bugzilla issues in Mozilla's issue tracker and the" - echoerr "labeled commits in the provided commit range" - echoerr - echoerr " ff-version rapid-release Firefox version to audit" - echoerr " begin-commit starting gecko-dev commit of this Firefox version" - echoerr " end-commit ending gecko-dev commit of this Firefox version" - echoerr " gitlab-audit-issue tor-browser-spec Gitlab issue number for this audit" - echoerr " reviewers... space-separated list of reviewers responsible for this audit" - echoerr "" - echoerr "Example:" - echoerr "" - echoerr "$0 116 FIREFOX_ESR_115_BASE FIREFOX_116_0_3_RELEASE 40064 richard pierov henry" - exit 1 -fi - -# set -x -set -e - - -# Ensure various required tools are available -function check_exists() { - local cmd=$1 - if ! which ${cmd} > /dev/null ; then - echoerr "missing ${cmd} dependency" - exit 1 - fi -} - -check_exists git -check_exists jq -check_exists mktemp -check_exists perl -check_exists printf -check_exists sed -check_exists sort -check_exists touch -check_exists uniq -check_exists wget - -# Assign arguments to named variables -firefox_version=$1 -git_begin=$2 -git_end=$3 -audit_issue=$4 -reviewers="${@:5}" - -# Check valid Firefox version -if ! [[ "${firefox_version}" =~ ^[1-9][0-9]{2}$ ]]; then - echoerr "invalid Firefox version (probably)" - exit 1 -fi - -# Check valid Gitlab issue number -if ! [[ "${audit_issue}" =~ ^[1-9][0-9]{4}$ ]]; then - echoerr "invalid gitlab audit issue number (probably)" - exit 1 -fi - -# -# Encoding/Decoding Functions -# - -# escape " and \ -function json_escape() { - local input="$1" - echo "${input}" | sed 's/["\]/\\"/g' -} - - -# un-escape \" -function jq_unescape() { - local input="$1" - echo "${input}" | sed 's/\\"/"/g' -} - -# change quotes to double-quotes -function csv_escape() { - local input="$1" - echo "${input}" | sed 's/"/""/g' -} - -# we need to urlencode the strings used in the new issue link -function url_encode() { - local input="$1" - echo "${input}" | perl -MURI::Escape -wlne 'print uri_escape $_' -} - - -# -# Create temp json files -# -git_json=$(mktemp -t git-audit-${firefox_version}-XXXXXXXXXXX.json) -bugzilla_json=$(mktemp -t bugzilla-audit-${firefox_version}-XXXXXXXXXXX.json) -union_json=$(mktemp -t union-audit-${firefox_version}-XXXXXXXXXXX.json) -touch "${git_json}" -touch "${bugzilla_json}" -touch "${union_json}" - -function json_cleanup { - rm -f "${git_json}" - rm -f "${bugzilla_json}" - rm -f "${union_json}" -} -trap json_cleanup EXIT - -# -# Generate Git Commit Triage List -# - -# Try and extract bug id and summary from git log -# Mozilla's commits are not always 100% consistently named, so this -# regex is a bit flexible to handle various inputs such as: -# "Bug 1234 -", "Bug 1234:", "Bug Bug 1234 -", "[Bug 1234] -", " bug 1234 -". -sed_extract_id_summary="s/^[[ ]*[bug –-]+ ([1-9][0-9]*)[]:\., –-]*(.*)\$/\\1 \\2/pI" - -# Generate a json array of objects in the same format as bugzilla: {id: number, summary: string} -printf "[\n" >> "${git_json}" - -first_object=true -git log --format='%s' $git_begin..$git_end \ -| sed -En "${sed_extract_id_summary}" \ -| sort -h \ -| uniq \ -| while IFS= read -r line; do - read -r id summary <<< "${line}" - summary=$(json_escape "${summary}") - - # json does not allow trailing commas - if [[ "${first_object}" = true ]]; then - first_object=false - else - printf ",\n" >> "${git_json}" - fi - - printf " { \"id\": %s, \"summary\": \"%s\" }" ${id} "${summary}" >> "${git_json}" -done -printf "\n]\n" >> "${git_json}" - -# -# Download Bugzilla Triage List -# - -# search for: -# + Product is NOT "Thunderbird,Calander,Chat Core,MailNews Core" (&f1=product&n1=1&o1=anyexact&v1=Thunderbird%2CCalendar%2CChat%20Core%2CMailNews%20Core). AND -# + Target Milestone contains "${firefox_version}" (115 Branch or Firefox 115) (&f2=target_milestone&o2=substring&v2=${firefox_version}). -# "&limit=0" shows all matching bugs. - -query_tail="&f1=product&n1=1&o1=anyexact&v1=Thunderbird%2CCalendar%2CChat%20Core%2CMailNews%20Core&f2=target_milestone&o2=substring&v2=${firefox_version}&limit=0" - -bugzilla_query="https://bugzilla.mozilla.org/buglist.cgi?${query_tail}" -bugzilla_json_query="https://bugzilla.mozilla.org/rest/bug?include_fields=id,component,summary${…" - -wget "${bugzilla_json_query}" -O ${bugzilla_json} - - -# -# Create Union of these two sets of issues -# - -# bugzilla array is actually on a root object: { bugs: [...] } -jq -s '[ (.[0].bugs)[], (.[1])[] ] | group_by(.id) | map(.[0])' "${bugzilla_json}" "${git_json}" > "${union_json}" - -# -# Generate Triage CSV -# - -echo "\"Review\",,\"Bugzilla Component\",\"Bugzilla Bug\"" - -jq '. | sort_by([.component, .id])[] | "\(.id)|\(.component)|\(.summary)"' ${union_json} \ -| while IFS='|' read -r id component summary; do - - # bugzilla info - id="${id:1}" - component="${component:0}" - summary="${summary:0:-1}" - summary=$(jq_unescape "${summary}") - # short summary for gitlab issue title - [[ ${#summary} -gt 80 ]] && summary_short="${summary:0:77}..." || summary_short="${summary}" - - # filter out some issue types that we never care about - skip_issue=false - - # skip `[wpt-sync] Sync PR` - if [[ "${summary}" =~ ^\[wpt-sync\]\ Sync\ PR.*$ ]]; then - skip_issue=true - # skip `Crash in [@` and variants - elif [[ "${summary}" =~ ^Crash[esin\ ]*\ \[\@.*$ ]]; then - skip_issue=true - # skip `Assertion failuire: ` - elif [[ "${summary}" =~ ^Assertion\ failure:\ .*$ ]]; then - skip_issue=true - # skip `Hit MOZ_CRASH` - elif [[ "${summary}" =~ ^Hit\ MOZ_CRASH.*$ ]]; then - skip_issue=true - fi - - if [[ "${skip_issue}" = true ]]; then - echoerr "Skipped Bugzilla ${id}: ${summary_short}" - else - csv_summary=$(csv_escape "${summary}") - csv_component=$(csv_escape "${component}") - - # parent issue - bugzilla_url="https://bugzilla.mozilla.org/show_bug.cgi?id=${id}" - # review issue title - new_issue_title=$(url_encode "Review Mozilla ${id}: ${summary_short}") - # review issue description + labeling (14.0 stable, FF128-esr, Next) - new_issue_description=$(url_encode "### Bugzilla: ${bugzilla_url}")%0A$(url_encode "/label ~\"14.0 stable\" ~FF128-esr ~Next")%0A$(url_encode "/relate tpo/applications/tor-browser-spec#${audit_issue}")%0A%0A$(url_encode "<!-- briefly describe why this issue needs further review -->")%0A - # url which create's new issue with title and description pre-populated - new_issue_url="https://gitlab.torproject.org/tpo/applications/tor-browser/-/issues/new?iss…" - - # this link will start the creation of a new gitlab issue to review - create_issue=$(csv_escape "=HYPERLINK(\"${new_issue_url}\", \"New Issue\")") - bugzilla_link=$(csv_escape "=HYPERLINK(\"${bugzilla_url}\", \"Bugzilla ${id}: ${csv_summary}\")") - - echo "FALSE,\"${create_issue}\",\"${csv_component}\",\"${bugzilla_link}\"," - fi -done - -echo -echo "\"Triaged by:\"" -for reviewer in $reviewers; do - reviewer=$(csv_escape "${reviewer}") - echo "\"FALSE\",\"${reviewer}\"" -done -echo - -bugzilla_query="=HYPERLINK(\"${bugzilla_query}\", \"Bugzilla query\")" -echo \"$(csv_escape "${bugzilla_query}")\" View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/f54e79d… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/f54e79d… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
  • ← Newer
  • 1
  • ...
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • Older →

HyperKitty Powered by HyperKitty version 1.3.12.