Using the same build process in Tor Browser and Tor Messenger
The current Tor Browser build process is using gitian to run the build inside virtual machines, with some shell scripts to download and verify dependencies.
Tor Messenger is using a different system to do that.
To make maintenance easier, we should try to use the same tools in both projects.
I think one of the main advantages of the way we are building in tor-messenger is that we can do faster builds as we rebuild only what is necessary. All components are built separately, with all built components having an identifier in their filename that is a hash of all their dependencies (build script, commit hash, source tarballs, distribution used in the container, additional packages installed). We only rebuild a component when its identifier has changed. We currently only have one branch on tor messenger, but with multiple branches (alpha, beta, nightly, etc ...) it would be possible to build the different branches from the same build repository and share the components that are identical.
An other advantage of splitting the build of each component is to be able to share them between different projects. For instance we are also building a Tor Mail bundle from the same repository and sharing some of the components. In the case of Tor Browser and Tor Messenger I think we could share the compilers. Components can also be built differently depending on which project they are built for, for instance tor-launcher is patched to use a different control port for tor-mail and tor-messenger: https://gitweb.torproject.org/tor-messenger-build.git/tree/projects/tor-launcher/controlport.patch.tmpl https://gitweb.torproject.org/tor-messenger-build.git/tree/rbm.conf#n74
I will open child tickets to list all the tasks that need to be done if we want Tor Browser to use the same build process as Tor Messenger.