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- Go to the description of the Mercurial commit
- Find the same commit in
git log(you can probably use the differential revision link) - 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
- at the moment, the source is set to a branch (see
-
update geckoview gradle dependencies: - Manual procedure, check also
doc/how-to-create-gradle-dependencies-list.txt -
enable networking in your rbm.local.conf: setcontainer/disable_network/build: 0 -
make your projects/geckoview/configpoint 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--offlinee 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
- You may just comment
-
run projects/common/gen_gradle_deps_file.sh log/geckoview-armv7.log -
copy the resulting gradle-dependencies-list.txttoprojects/geckoview -
increase var/gradle_dependencies_versioninprojects/geckoview/config -
This procedure is error-prone, but that's what we currently have
🤷
- Manual procedure, check also
-
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_versioninprojects/application-services/config(onlygitthinks thatgradle-dependencies-list.txthas changed)
-
-
update android-components gradle dependencies -
(Optional) update git_branchandgit_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_versioninprojects/android-components/config(onlygitthinks thatgradle-dependencies-list.txthas changed) -
revert any unneeded change (local branch/url)
-
-
update fenix gradle dependencies -
(Optional) update git_branchandgit_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_urlandgit_hashinprojects/geckoview/config(use the tag you created earlier; probably you will need to change nightly) -
Remove Tor things from projects/geckoview/buildand themozconfigyou are going to use -
Update git_urlandgit_hashinprojects/android-components/config(use Moz's tag - remember thevbefore the version - and disabletag_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
-
tor-browser#41072 (closed) - tor-browser!332 (merged) -
android-components#40079 (closed) - android-components!84 (merged) -
fenix#40221 (closed) - fenix!149 (merged)
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