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/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
- You may just comment
-
run projects/common/gen_gradle_deps_file.sh log/geckoview-armv7.log
-
copy the resulting gradle-dependencies-list.txt
toprojects/geckoview
-
increase var/gradle_dependencies_version
inprojects/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_version
inprojects/application-services/config
(onlygit
thinks thatgradle-dependencies-list.txt
has changed)
-
-
update android-components gradle dependencies -
(Optional) update git_branch
andgit_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
inprojects/android-components/config
(onlygit
thinks thatgradle-dependencies-list.txt
has changed) -
revert any unneeded change (local branch/url)
-
-
update fenix gradle dependencies -
(Optional) update git_branch
andgit_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
andgit_hash
inprojects/geckoview/config
(use the tag you created earlier; probably you will need to change nightly) -
Remove Tor things from projects/geckoview/build
and themozconfig
you are going to use -
Update git_url
andgit_hash
inprojects/android-components/config
(use Moz's tag - remember thev
before 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