| description | This page has all the information you need to get your GNU/Linux development environment set up and ready to hack on Thunderbird. |
|---|
You will need to be running a 64-bit version of Linux in order to build Thunderbird. You can check which version you're running by typing this command in your terminal:
uname -m
if this command returns x86_64 you can proceed.
The Thunderbird build can use 30-40GB of disk space to complete depending on your operating system.
{% hint style="warning" %}
Note that while it's not technically required to have an internet connection to build, the default setup has --enable-bootstrap so that the toolchains download automatically.
{% endhint %}
{% hint style="warning" %}
The bootstrap.py file will create files outside of the current directory. E.g. in ~/.mozbuild. Ensure you have enough free space in your home directory as well.
Alternatively to build within the current directory and avoid writing to the home directory run HOME="$(pwd)" ./bootstrap.py instead or use a chroot environment.
{% endhint %}
You’ll need Python 3.8 or later installed.
You can check with python3 --version to see if you have it already. If not, you can install it with your distribution’s package manager. Make sure your system is up to date!
You will also need python3-distutils and python3-pip installed from your distribution's package manager.
As noted in the Setting up a build environment page, both Firefox and Thunderbird source are stored in Git repositories. This means you will need to install Git if it is not already available. Here are some quick commands to install on common distributions:
sudo apt install git
sudo dnf install git
Once you have Git installed, you are ready to grab the source code. There are a couple of different methods to do this.
The bootstrap.py script will grab the two source repos you need, run ./mach bootstrap for you, and sets up a necessary mozconfig file. Download this file to the directory where you would like your source code folder to live, either by clicking the link and moving the file to the appropriate location or using wget. Then make it executable and run it.
mkdir tb-build && cd tb-build
wget https://raw.githubusercontent.com/thunderbird/thunderbird-desktop/main/python/rocboot/bin/bootstrap.py
chmod +x bootstrap.py
./bootstrap.py
This will create a source/ directory with both a mozconfig and a comm/ folder inside.
The source/ repository contains the Firefox source and defaults to the main branch.
The source/comm repository also defaults to the main branch.
The mozconfig file is setup to build Thunderbird and you can verify this with cat mozconfig; the --enable-project parameter should be comm/mail:
ac_add_options --enable-project=comm/mail
If you would rather manually gather the source code, perform the bootstrap, and create your mozconfig file, then follow these steps.
Get the latest Firefox source code, and check it out into a local directory source (or however you want to call it). Then, get the latest Thunderbird source code. It needs to be placed inside the Mozilla source code, in a directory named comm/:
git clone https://github.com/mozilla-firefox/firefox source/
cd source/
git clone https://github.com/thunderbird/thunderbird-desktop comm/
This step will need to be performed if you manually checked out the code and performed the bootstrap, and it will covered in the next section you follow, Building Thunderbird.
In the source directory run the following command to get additional dependencies needed to install Thunderbird:
./mach bootstrap
You will be presented with the following options:
Please choose the version of Firefox you want to build:
1. Firefox for Desktop Artifact Mode
2. Firefox for Desktop
3. GeckoView/Firefox for Android Artifact Mode
4. GeckoView/Firefox for Android
Please choose option 2 to proceed with a successful build.
This action should install all the remaining libraries and dependencies necessary to build Thunderbird locally.
It could happen that some libraries will not be installed by the bootstrap command, specifically those related to the Rust programming language. Check whether these packages are available in your system by running these commands in your terminal:
which rustcwhich cargo
If one or both commands return an empty output, you need to install them manually:
- Install Rust and cargo (the Rust package manager):
curl https://sh.rustup.rs -sSf | sh - Install cbindgen (tool that generates C bindings from Rust code):
cargo install cbindgen
{% hint style="info" %}
If you get a command not found error while running cargo, but the command which cargo returns the location of the that package, it means you need to update your PATH inside your .bashrc file to include the cargo location:
export PATH=$HOME/.cargo/bin:$PATH
{% endhint %}
{% hint style="warning" %} If you still are unable to find rustc and cargo via the ˋwhichˋ command after installing them, you may need to restart your session (log out and back into your user account, or restart your computer) to be able to see them. {% endhint %}
Go back to the Building Thunderbird page and continue following the guide.
{% content-ref url="./" %} . {% endcontent-ref %}