Skip to content

Switch TBA to Mozilla-102

Dependencies and toolchains

Notice: please follow this order and start by Fenix, as it will find the correct AC, GV and AS dependencies.

Also, if you do not update the correct versions in projects/$PROJECT/config first, you cannot obtain the correct toolchain list.

The output of the various make list_toolchain_updated-$PROJECT is a nice markdown which should be posted in the comments.

  • update fenix toolchain (make list_toolchain_updates-fenix)
  • update android-components toolchain (make list_toolchain_updates-android-components)
  • update application services toolchain: (make list_toolchain_updates-application-services)
  • find the base Firefox/GeckoView commit
    • find the Hg tag in https://hg.mozilla.org/mozilla-unified/tags: FIREFOX_102_0_1_RELEASE
    • find the corresponding git commit hash in mozilla/gecko-dev: feef2b7da6ff76b4c3c7a13e611eab6e97837ae2
      1. Go to the description of the Mercurial commit
      2. Find the same commit in git log (you can probably use the differential revision link)
      3. Compare the descriptions and/or the diffs
    • add an annotated and signed tag to our repo with git tag -as $TAG_NAME $COMMIT_HASH, description: Hg tag $TAG_NAME
    • These references can be used whenever needed in the following steps
  • update geckoview toolchain (make list_toolchain_updates-geckoview)
    • at the moment, the source is set to a branch (see list_toolchain_updates/git_hash): this can cause not to use the correct tree to check dependencies, so double check them if you are in doubt
  • update geckoview gradle dependencies:
    • Manual procedure, check also doc/how-to-create-gradle-dependencies-list.txt
    • enable networking in your rbm.local.conf: set container/disable_network/build: 0
    • make your projects/geckoview/config point either to the vanilla Firefox commit, or to the rebase, if already available
    • modify projects/geckoview/config:
      • comment export GRADLE_MAVEN_REPOSITORIES
      • modify GRADLE_FLAGS: remove --offline e add --debug
    • start building geckoview (e.g., with a testbuild)
      • The build will likely fail, it isn't a problem, exit from the debug shell
    • restore undeeded changes in projects/geckoview
    • disable networking again in rbm.local.conf
      • You may just comment build: 0, for future updates
    • run projects/common/gen_gradle_deps_file.sh log/geckoview-armv7.log
    • copy the resulting gradle-dependencies-list.txt to projects/geckoview
    • increase var/gradle_dependencies_version in projects/geckoview/config
    • This procedure is error-prone, but that's what we currently have 🤷
  • update application-services cargo vendor trarball
    • run make cargo_vendor-application-services
    • scp -p out/application-services/cargo_vendor/application-services-vendor-VV.tar.xz you@people.torproject.org:public_html/mirrors/sources
    • update the sha256sum in projects/application-services/config
  • update application-services gradle dependencies
    • update bug40485.patch (that patches #40485 (closed)):
      • clone application-services locally
      • create a branch out of the previous tag
      • apply the patch and commit
      • create a branch out of the new tag
      • cherry-pick the previously created commit
      • git diff HEAD~1 > .../bug40485.patch
    • make get_gradle_dependencies_list-application-services
    • cp out/application-services/gradle-dependencies-list-VV.txt projects/application-services/gradle-dependencies-list.txt
    • (Optional) bump gradle_dependencies_version in projects/application-services/config (only git thinks that gradle-dependencies-list.txt has changed)
  • update android-components gradle dependencies
    • (Optional) update git_branch and git_url (of nightly) to something local
    • make get_gradle_dependencies_list-android-components
    • cp out/android-components/gradle-dependencies-list-VV.txt projects/android-components/gradle-dependencies-list.txt
    • (Optional) bump gradle_dependencies_version in projects/android-components/config (only git thinks that gradle-dependencies-list.txt has changed)
    • revert any unneeded change (local branch/url)
  • update fenix gradle dependencies
    • (Optional) update git_branch and git_url (of nightly) to something local
    • make get_gradle_dependencies_list-fenix
    • revert any unneeded change (local branch/url)
    • cp out/fenix/gradle-dependencies-list-VV.txt projects/fenix/gradle-dependencies-list.txt
    • Notice: if you are using Moz branch, you may add some dependencies like play-services-ads, that AFAIK we don't need for Tor Browser. It must be removed when pushing.
  • (Optional) Run and test a testbuild without our patches, to make sure our build system is sane
    • (Optional) This may be a good moment to create a commit, and start from a clean tree
    • Update git_url and git_hash in projects/geckoview/config (use the tag you created earlier; probably you will need to change nightly)
    • Remove Tor things from projects/geckoview/build and the mozconfig you are going to use
    • Update git_url and git_hash in projects/android-components/config (use Moz's tag - remember the v before the version - and disable tag_gpg_id; probably you will need to change nightly)
    • Do the same in projects/fenix/config
    • Start the build, and pray, or prepare to debug and re-run the builds
    • When the build is done, test it (possibly on a real device)
    • Revert the unneeded changes (URLs, tags, git hashes, etc...), but of course be sure to keep the changes that were actually needed

Rebases

Post-merge

  • Alternative 1: version by version
    • Finish the steps on for v99 from #40446 (closed) first
    • tor-browser-spec#NN (FF100 network audit)
    • tor-browser-spec#NN (FF101 network audit)
    • tor-browser-spec#NN (FF102 network audit)
    • Review developer notes for Firefox 100-102
    • Review GeckoView Changelog for gv100-gv102
    • Review closed mozilla100-mozilla102 bugs
  • Alternative 2: use the cumulative audit that is done for desktop 91 -> 102.

Other notes

  • the (unfinished) update to v100 has a lot of interesting information: #40478 (closed)
  • see the notes about Clang 13 for the remaining issues: #40433 (closed)
Edited by Pier Angelo Vendrame
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information