EXPERIMENTAL - copy of comm-central for forking on github
Перейти к файлу
Geoff Lankow bab4b4b540 Bug 1869998 - Port bug 1869078 - Filter-out target_cpu from substs provided by old-configure. rs=bustage-fix
https://hg.mozilla.org/mozilla-central/rev/722156e33a15 made lower-case target_cpu unavailable. Looks like we should've been using upper-case TARGET_CPU anyway.

--HG--
extra : amend_source : 23e2de96ef1469a0ee32ea09b8cbe7bc5637e0f9
2023-12-14 23:05:45 +13:00
build Bug 1864521 - [macOS] Restore the addressbook entitlement for releases. r=darktrojan 2023-12-05 15:47:39 +00:00
calendar Bug 1854393 - Message List Header - Message List display options icon drop down option outside of Thunderbird window. r=freaktechnik 2023-12-11 23:09:29 +00:00
chat Bug 1854255 - Enforce prefer-const eslint rule globally. r=john.bieling,ikey 2023-11-21 11:02:13 +00:00
docs Bug 1860654 - Support Rust for Thunderbird development. r=rjl 2023-12-01 12:15:13 +00:00
mail Bug 1867532 follow-up - Fix a broken test. r=leftmostcat 2023-12-14 12:06:56 +13:00
mailnews Bug 1764895 - Fix build bustage on comm-central. rs=bustage-fix 2023-12-14 13:06:34 +13:00
other-licenses/7zstub Bug 1840940 - Update Windows installer icon. r=aleca 2023-06-30 19:24:56 +02:00
python No bug - Archive completed Fluent migrations. rs=me DONTBUILD 2023-12-08 10:28:47 -05:00
rust Bug 1860654 - Vendor in new application-services / Glean / UniFFI. r=thunderbird-build-system-reviewers,rjl 2023-12-13 18:29:28 +00:00
suite Bug 1764895 - part 2: Make comm-central stop using `nsIEditor.setShouldTxnSetSelection` r=mkmelin 2023-12-11 05:36:02 +00:00
taskcluster Bug 1869405 - mach commlint should not use unconfigured linters. r=dandarnell 2023-12-12 11:16:29 -05:00
testing Bug 1859939 - Lower the leak threshold for Mochitest tasks. r=aleca 2023-10-19 11:23:13 +01:00
third_party Bug 1869998 - Port bug 1869078 - Filter-out target_cpu from substs provided by old-configure. rs=bustage-fix 2023-12-14 23:05:45 +13:00
tools Bug 1869405 - Ensure vendored Rust code and associated generated files are not linted. r=ikey 2023-12-11 20:32:03 +00:00
.arcconfig Bug 1460372 - Update .arcconfig to make history mutable. r=Fallen 2018-05-09 13:56:23 -04:00
.clang-format-ignore Bug 1787097 - Remove libical. r=leftmostcat 2022-08-25 15:54:49 +12:00
.cron.yml Backed out changeset ae5eb63b87ef - Restore Daily builds cron. rs=me DONTBUILD CLOSED TREE 2023-07-04 09:32:14 -04:00
.eslintignore Bug 1845794 - Create a "beta" branding directory. r=dandarnell#!thunderbird-build-system-reviewers,#thunderbird-reviewers 2023-10-23 13:34:38 +00:00
.eslintrc.js Bug 1854255 - Enforce prefer-const eslint rule globally. r=john.bieling,ikey 2023-11-21 11:02:13 +00:00
.gecko_rev.yml Backed out changeset ae4312567478 (bug 1810211) for including unwanted changes. r=backout a=rjl 2023-01-16 20:06:52 -05:00
.hg-annotate-ignore-revs Bug 1833949 - Follow-up: Add reformatting revs to .hg-annotate-ignore-revs. r=aleca 2023-05-24 20:38:01 +10:00
.hgignore Bug 1860654 - Update .hgignore to allow for JetBrains .idea directories outside of root directory. r=thunderbird-build-system-reviewers,rjl 2023-12-13 18:29:28 +00:00
.hgtags No bug - tagging 9ee6bde97d4007ec4284846fb3868223d602d924 with NIGHTLY_121_END a=release DONTBUILD CLOSED TREE 2023-11-20 16:57:34 +00:00
.prettierignore Bug 1867860 - Make starting with `--migration` open the import tab. r=aleca 2023-12-11 20:19:49 +00:00
.readthedocs.yaml Bug 1805810 - Incremental improvements to source-docs building. r=dandarnell 2022-12-15 18:36:46 +00:00
.stylelintignore Bug 1832130 - Port bug 1508369: Add stylelint to mach commlint. r=aleca 2023-05-24 18:49:33 +00:00
.stylelintrc.js Bug 1858972 - Port bug 1857565: Remove leftover mention of moz-image-rect. r=john.bieling 2023-10-13 13:34:08 -04:00
.taskcluster.yml Bug 1864894 - Update comm tree to clone from comm-unified. r=rjl 2023-12-02 11:44:32 +02:00
.yamllint Bug 1793921 - Don't add local code as explicit dependency to storybook. r=rjl 2022-10-07 23:56:22 +00:00
.ycm_extra_conf.py Bug 1185540 - Support YouCompleteMe vim plugin in comm-central. r=mkmelin a=SM CLOSED TREE 2015-07-20 17:31:37 +02:00
AUTHORS Bug 1138689 - /me and /action should fire a sending-message notification before actually sending the action. r=clokep 2015-03-13 13:04:26 -07:00
README.md Bug 1803012 - Port bug 1801738: Use --enable-project instead of --enable-application in mozconfig. r=rjl 2022-12-02 22:27:49 +00:00
mots.yaml Bug 1845361 - Update Thunderbird Desktop module ownership. r=sancus 2023-07-25 13:42:12 -04:00
moz.build Fix bug 1139679 - Make use of BUG_COMPONENT metadata. r=jcranmer 2015-03-17 13:50:09 +01:00
pyproject.toml Bug 1822061 - Port bug 1811850: Replace isort linter with ruff. r=dandarnell 2023-03-20 22:40:28 +00:00

README.md

Thunderbird

Thunderbird is a powerful and customizable open source email client with lots of users. It is based on the same platform that Firefox uses.

Getting Started

This README will try and give you the basics that you need to get started, more comprehensive documentation is available on the Thunderbird Developer Website.

Mozilla Code Base

Thunderbird is built on the Mozilla platform, the same base that Firefox is built from. As such the two projects share a lot of code and much of the documentation for one will apply, in many ways, to the other.

In order to be able to build Thunderbird - you will need the mozilla-central repository as well as the comm-central repository (where this README lives). Check out our Getting Started documentation for instructions on how and where to get the source code.

mozilla-central vs. comm-central

The mozilla-central repostitory contains the Firefox codebase and all of the platform code. The comm-central repository is added as a subdirectory "comm/" under mozilla-central. This contains the code for Thunderbird.

Building Thunderbird

Build Prerequisites

This README assumes that you already have the prerequisite software required to build Thunderbird. If you have not already done so, please complete the instructions for your operating system and then continue following this guide:

Build Configuration

To build Thunderbird, you need to create a file named mozconfig (can also be .mozconfig) to the root directory of the mozilla-central checkout that contains the option comm/mail enabled. You can create a file with this line by doing this in the root source directory:

echo 'ac_add_options --enable-project=comm/mail' > mozconfig

If you omit this line, the build system will build Firefox instead. Other build configuration options can be added to this file, although it's strongly recommended that you only use options that you fully understand. For example, to create a debug build instead of a release build, that file would also contain the line:

ac_add_options --enable-debug

Each of these ac_add_options entries needs to be on its own line.

For more on configuration options, see the page Configuring build options. Note that if you use an MOZ_OBJDIR it cannot be a sibling folder to the root source directory. Use an absolute path to be sure!

Building

Before you start, make sure that the version you checked out is not busted. For hg tip, you should see green Bs on https://treeherder.mozilla.org/#/jobs?repo=comm-central

To start the build, cd into the root source directory, and run:

./mach build

mach is our command-line tool to streamline common developer tasks. See the mach article for more.

Building can take a significant amount of time, depending on your system, OS, and chosen build options. Linux builds on a fast box may take under 15 minutes, but Windows builds on a slow box may take several hours.

Make Your Build Faster

Follow this guide to rely on ccache and other Tips for making builds faster.

Running Thunderbird

To run your build, you can use:

./mach run

There are various command line parameters you can add, e.g. to specify a profile, such as: -no-remote -P testing --purgecaches

Various temporary files, libraries, and the Thunderbird executable will be found in your object directory under `comm-central/`, which is prefixed with obj-. The exact name depends on your system and OS. For example, a Mac user may get an object directory name of obj-x86_64-apple-darwin10.7.3/.

The Thunderbird executable in particular, and its dependencies are located under the dist/bin folder under the object directory. To run the executable from your comm-central working directory:

  • Windows: obj-.../dist/bin/thunderbird.exe
  • Linux: obj-.../dist/bin/thunderbird
  • macOS: obj-.../dist/Daily.app/Contents/MacOS/thunderbird

Update and Build Again

To pull down the latest changes, in the mozilla directory run the following commands:

hg pull -u
cd comm
hg pull -u
cd ..

or to do it via one command:

hg pull -u && cd comm && hg pull -u

The just run the ./mach build command detailed in the Buildinginstructions above. This will only recompile files that changed, but it may still take a long time.

Rebuilding

To build after changes you can simply run:

./mach build

Rebuilding Specific Parts

If you have made many changes, but only want to rebuild specific parts, you may run the following commands.

C or C++ Files:

./mach build binaries

JavaScript or XUL Files Windows Only:

./mach build path/to/dir

Replace path/to/dir with the directory with the files changed.

This is the tricky bit since you need to specify the directory that installs the files, which may be a parent directory of the changed file's directory. For example, to just rebuild the Lightning calendar extension:

./mach build comm/calendar/lightning

Contributing

Getting Plugged into the Community

We have a complete listing of the ways in which you can get involved with Thunderbird on our website. Below are some quick references from that page that you can use if you are looking to contribute to Thunderbird core right away.

Mailing Lists

If you want to participate in discussions about Thunderbird development, there are two main mailing lists you want to join.

  1. TB-Planning: This mailing list is higher level topics like: the future of Thunderbird, potential features, and changes that you would like to see happen. It is also used to discuss a variety of broader issues around community and governance of the project.
  2. Maildev: A moderated mailing list for discussing engineering plans for Thunderbird. It is a place where you can raise questions and ideas for core Thunderbird development.

IRC

If you want to ask questions about how to hack on Thunderbird, the IRC channel you want to join is #maildev on irc.mozilla.org.

Report a Bug and Request Features

Bugzilla

Thunderbird uses bugzilla for reporting and tracking bugs as well as enhancement requests. If you want to become a contributor to Thunderbird, you will need an account on Bugzilla.

Fixing a Bug and Submitting Patches

All the issues, bugs, work in progress patches, or updates related to Thunderbird, are listed on Bugzilla and are properly organized per Product, Component, and Status. For instance you can see how they are listed by looking at recent bugs for Thunderbird.

Create a Bugzilla account

Creating an account is necessary in order to submit patches, leave comments, and interact with any other aspect of Bugzilla. If you're currently using an IRC username in the #maildev channel, we recommend saving your profile name with the current format Firstname Lastname (:username) in order to be easily searchable and allow the Thunderbird team to offer better support.

Find a Bug

Use the Advanced Search section to find bugs you want to take care of, and be sure that the bug doesn't currently have any user listed as Assignee and the Status is set to NEW. You can see a list of "easy" bugs for beginners via this query. However, we assume you came here to fix your "pet hate" bug, so you already likely have a bug to work with.

Search for Code References

Making sense of the Thunderbird source code, and knowing where to look, will take some time. The code base is pretty big and if you never worked with XBL or Custom Elements it can be overwhelming at first. We recommend using our code search engine, Searchfox, to inspect the source code and find snippets and references to help you out while investigating a bug.

Mercurial Workflow

Mercurial is pretty flexible in terms of allowing you to write your own code and keep it separate from the main code base. You can use Mercurial Bookmarks or Mercurial Queues for managing your work. We have guides created for bookmarks and queues on our developer website. While some find Mercurial Queues easier to work with, support for them is being deprecated in various Mozilla tools.

Once you finished taking care of your favorite bug and using Mercurial to commit and export your patch, you can upload it to Bugzilla for review.

Upload a Patch

Open your patch file in your code editor and be sure it includes all your code changes, and your name and commit message at the top. You can see an example of a patch for this README here.

If everything looks good, you can access the selected bug in Bugzilla and click on the Attach File link located above the first comment.

Ask for a Review

When uploading a patch to Bugzilla, you can request a review from the user who opened the bug or another developer. Simply select the ? in the dropdown selector in the review option of the Flags section. An input field will appear which will allow you to type the name or username of the user you want to review your patch. You can see an example of a patch on Bugzilla here.