更新 glean_parser

项目 FOG 使用 glean_parser 从指标定义生成代码。它依赖于 pypi.org 上的 glean-parser

要更新树内的 glean-parser,请更改 third_party/python/pyproject.toml 中的版本,然后运行

./mach vendor python

我们目前将 glean-parser 的版本固定到 sdk_generator.sh 中的版本,否则我们可以使用一些 ./mach vendor python 上更有趣的开关

注意

重要:glean_parser 及其所有依赖项必须支持 Python 3.5,此处有相关讨论。这是 mach 支持的最低版本,并且安装在 CI 镜像上以运行测试。Python 安装清单中声明的版本范围强制执行此要求。

Python 依赖项的版本不匹配

处理版本不匹配的逻辑与 Rust crate 的非常相似。有关详细信息,请参阅 更新 Glean SDK。但是,更新 Python 包还需要考虑 Python 3.5(以及 Python 2,仍然)的兼容性。

保持版本同步

Glean SDK 和 glean_parser 目前作为单独的项目发布。但是,每个 Glean SDK 版本都需要特定的 glean_parser 版本。更新其中一个或另一个时,请确保版本保持兼容。您可以在 Glean SDK 源代码树中找到当前使用的 glean_parser 版本,例如在 sdk_generator.sh 中。

使用本地 glean_parser 开发版本

要在 mozilla-central 中测试新的 glean_parser,请按照以下步骤操作

  1. 从用户范围的虚拟环境中删除 glean_parser。这可以在类似 ~/.mozbuild/srcdirs/gecko-f5e3b9c6ded5/_virtualenvs/mach/lib/python3.10/site-packages/glean_parser 的路径中找到。请注意,gecko-f5e3b9c6ded5 部分根据您的本地检出而有所不同。删除所有提及 glean_parser 的目录和文件

  2. 从构建虚拟环境中删除 glean_parser。这可以在 $MOZ_OBJDIR/_virtualenvs/common/lib/python3.6/site-packages/glean_parser 中找到。请注意,$MOZ_OBJDIR 依赖于您的本地 mozconfig 配置。删除所有提及 glean_parser 的目录和文件

  3. 将本地 glean_parser 检出复制到 third_party/python/glean_parser 中。例如:cp ~/code/glean_parser $GECKO/third_party/python/glean_parser

您现在应该能够构建 mozilla-central,它将使用修改后的 glean_parser。您可以在 $GECKO/third_party/python/glean_parser 中进行进一步的编辑。