在 macOS 上构建 Firefox

本文档将帮助您在自己的计算机上设置 Firefox 的构建环境。设置可能需要一段时间——我们需要下载大量数据!即使在快速连接下,这可能也需要 10 到 15 分钟的工作时间,分散在 1 到 2 个小时内。

需求

  • 内存:至少 4GB RAM,建议 8GB 或以上。

  • 磁盘空间:至少 30GB 的可用磁盘空间。

  • 操作系统:macOS - 最新的或之前的版本。建议升级到最新的“点”版本。有关更多信息,请参阅支持的构建主机

1. 系统准备

1.1. 安装 Brew

Mozilla 的源代码树需要许多第三方工具。您需要安装Homebrew,以便我们可以自动获取所需的工具。

1.2. 安装 Xcode

从 App Store 安装 Xcode。完成后,在您的终端中完成安装

sudo xcode-select --switch /Applications/Xcode.app
sudo xcodebuild -license

1.3 安装 Mercurial

Mozilla 的源代码托管在 Mercurial 存储库中。您需要 Mercurial 来下载和更新代码。此外,我们将用户范围内的 python 包安装到 $PATH 上,以便 hgmoz-phab 都可以轻松访问

echo 'export PATH="'"$(python3 -m site --user-base)"'/bin:$PATH"' >> ~/.zshenv
python3 -m pip install --user mercurial

现在,重新启动您的 shell 以使 PATH 更改生效。您可以通过运行以下命令测试 Mercurial 是否已安装

hg version

注意

如果您使用的 shell 不是 zsh,则需要手动将 Python 的 bin 目录添加到您的 PATH 中,因为您的 shell 可能不会获取我们在 ~/.zshenv 中的更改。

2. 引导 Firefox 源码副本

现在您的系统已准备就绪,我们可以下载源代码并让 Firefox 自动下载其所需的其它依赖项。以下命令将下载大量数据(Firefox 历史记录的数年!),然后引导您完成交互式设置过程。

curl https://hg.mozilla.org/mozilla-central/raw-file/default/python/mozboot/bin/bootstrap.py -O

# To use Git as your VCS
python3 bootstrap.py --vcs=git

# To use Mercurial as your VCS
python3 bootstrap.py

注意

要使用 git,您可以通过使用 vcs 参数运行引导脚本以“git”形式获取源代码

python3 bootstrap.py --vcs=git

这在后台使用了Git Cinnabar

选择构建类型

如果您没有修改 Firefox 后端,请选择其中一个构件模式选项。如果您正在为 Android 构建 Firefox,您还应该查看GeckoView 贡献者指南

3. 构建和运行

现在您的系统已引导,您应该可以构建了!

cd mozilla-unified
hg up -C central
./mach build

🎉 祝贺!您已构建了自己的 Firefox!在成功构建后,您应该在终端中看到以下消息

Your build was successful!
To take your build for a test drive, run: |mach run|
For more information on what to do now, see https://firefox-source-docs.mozilla.ac.cn/setup/contributing_code.html

您现在可以使用 ./mach run 命令运行您本地构建的 Firefox!

如果构建失败,请参考故障排除部分中的步骤。

签名

为本地测试对 Mac 构建进行代码签名不是必需的,并且开发中很少需要。Firefox 的签名方式确实会影响诸如密钥支持之类的功能,因此在某些情况下是必需的。生成尽可能接近生产构建的构建需要代码签名。有关更多信息,请参阅签名本地 macOS 构建

在开发环境之外运行

要在另一个 macOS 系统上测试您的更改(或在新的构建后保留该特定的 Firefox),您不能只使用生成的应用程序包(obj-*/dist/Nightly[Debug].app),因为它包含指向其他已构建库的符号链接。相反,使用以下命令构建可分发的磁盘映像:

./mach package

将生成的 .dmg 文件从 obj-*/dist/ 复制到目标系统,然后像往常一样双击它以找到包含所有依赖项的 .app 包。

在 Apple Silicon Mac 上,您需要使用签名本地 macOS 构建为其签名才能使其工作。

将构建复制到目标系统后,右键单击->打开打开它。构建默认情况下不会启动,因为它未经公证。除了代码签名外,macOS 10.15 及更高版本还需要公证才能通过在 Finder 中双击应用程序来启动下载的应用程序。

现在开始有趣的部分

是时候开始动手了!您应该加入我们在Matrix上的社区,在介绍频道中打个招呼,并找到一个错误开始着手解决。请参阅Firefox 贡献者快速参考,了解如何测试您的更改、向 Mozilla 发送补丁、在本地更新您的源代码以及更多内容。

故障排除

构建错误

如果您在尝试设置开发环境时遇到构建错误,请按照以下步骤操作
  1. 将整个构建错误复制到剪贴板

  2. 将此错误粘贴到paste.mozilla.org的文本区域中,并将“一小时后过期”选项更改为“一周后过期”。注意:获得帮助不需要一周时间,但最好让代码片段存在的时间比预期更长一些。

  3. 转到介绍频道并寻求有关构建错误的帮助。请务必发布您创建的 paste.mozilla.org 代码片段的链接!

CLOBBER 文件已更新

这是一个常见的错误,并且在长时间处理错误时往往会出现。如果您遇到此错误,则需要在运行 ./mach build 之前运行 ./mach clobber。运行 ./mach clobber 将删除以前的构建构件以从头开始重新构建。如果您使用的是构件构建,则表示下一次构建将比平时稍微长一些。但是,如果您使用的是非构件/完整构建,则下一次构建将需要更长的时间才能完成。