在 MozillaBuild 外部于 Windows 上使用 Mach¶
注意
这些文档仍然要求您已遵循 在 Windows 上构建 Firefox 指南。
MozillaBuild 构建 Windows 上的 Firefox 所必需,因为它提供了必要的类 Unix 工具,例如 sh
和 awk
。
传统上,为了与 Mach 和 Firefox 构建系统交互,Windows 开发人员必须在 MozillaBuild shell 中进行操作。这可能由于两个主要原因而造成不利影响
MozillaBuild 环境是类 Unix 的,基于
bash
,对于习惯使用 Windows 命令提示符或 PowerShell 的开发人员来说可能不熟悉。MozillaBuild 存在长期存在的稳定性问题 - 这是由于底层“MSYS”工具和“原生 Windows”二进制文件之间的脆弱接口点导致的。
现在(实验性地!)可以从其他命令行环境(例如 PowerShell、命令提示符甚至开发人员管理的 MSYS2 环境)直接调用 Mach。对于那些处于“前沿”的开发人员来说,Windows Terminal 也应该可以工作。
注意
如果您使用的是基于 Cygwin 的环境(例如 MSYS2),最好使用 Windows 原生的 Python 版本(如下所述),而不是环境的包管理器提供的 Python 发行版。否则,您可能会遇到兼容性问题
由于 Mach 假设它在“Windows”平台上,而 Cygwin/MSYS Python 尽管具有意外的类 Unix 约定,但仍会遇到与 Mach 的兼容性问题。此外,还可能存在性能问题。
MinGW Python 会遇到构建原生包的问题,因为它们会期望使用 MSVC 工具链。
警告
这仅推荐给更高级的 Windows 开发人员:这项工作是实验性的,可能会遇到意外的故障!
以下是准备 Windows 原生(命令提示符/PowerShell)使用 Mach 的步骤
1. 安装 Python¶
从 官方网站 下载 Python。
注意
为了避免 Mach 与最近的 Python 版本的兼容性问题,建议安装倒数第二个“主要版本”。例如,在撰写本文时,当前的现代 Python 版本是 3.10.1,因此要安装的安全版本是最近的 3.9 版本。
您需要下载与您选择的版本关联的“Windows 安装程序 (64 位)”。在安装过程中,请确保选中“将 Python 3.x 添加到 PATH”选项,否则您可能会 遇到运行 Mercurial 的问题。
注意
由于 Python DLL 导入错误与通过 pip 安装的二进制文件相关的问题,因此不建议使用 Windows 应用商店版 Python。
2. 修改 PATH¶
需要将 Python 的“用户站点包目录”添加到您的 PATH
中,以便可以通过 pip install --user
(例如 hg
)安装的包从命令行调用。
从“开始”菜单中,转到“编辑您的帐户的环境变量”的控制面板条目。
双击顶部变量列表中的
Path
行。单击“新建”以向列表中添加新项目。在命令提示符窗口中,使用命令
python -c "import site; import os; print(os.path.abspath(os.path.join(site.getusersitepackages(), '..', 'Scripts')))"
解析 Python 目录。将输出粘贴到“编辑环境变量”窗口中的新项目条目中。
再次单击“新建”,并添加 MozillaBuild 的
bin
文件夹:可能是C:\mozilla-build\bin
。单击“确定”。
3. 安装版本控制系统¶
如果您使用的是 Mercurial,则需要将其安装到您的 Windows 原生 Python 中
pip3 install --user mercurial windows-curses
如果您使用的是带有 Cinnabar 的 Git,请按照其 设置说明 进行操作。
4. 设置 PowerShell 执行策略¶
如果您使用的是 PowerShell,则当您尝试调用 .\mach.ps1
时,Windows 默认会引发错误
.\mach : File <topsrcdir>\mach.ps1 cannot be loaded because running scripts is disabled on this system. For
more information, see about_Execution_Policies at https:/go.microsoft.com/fwlink/?LinkID=135170.
At line:1 char:1
要解决此问题
从“开始”菜单中,输入“PowerShell”,然后右键单击最佳匹配项并单击“以管理员身份运行”
运行命令
Set-ExecutionPolicy RemoteSigned
关闭管理员 PowerShell 窗口,并打开一个常规 PowerShell 窗口
转到您的 Firefox 检出目录(可能是
C:\mozilla-source\mozilla-unified
)通过运行
.\mach bootstrap
测试新的执行策略。如果它没有立即因有关“执行策略”的错误而失败,则问题已解决。
成功!¶
此时,您应该能够在 MozillaBuild 外部调用 Mach 并管理您的版本控制系统。
提示
请参阅此处,了解有关使用 MSYS2、zsh 和 Windows Terminal 安装和自定义开发环境的详细指南。