使用本地 Glean 构建进行开发¶
FOG 使用 Glean 的发布版本,该版本发布在 crates.io 上。
对于本地开发和尝试运行,您可以用本地或远程版本替换此 Glean 实现。
要告诉
mach
在哪里找到您的 Glean,请修补顶级 Cargo.toml 以指向您的 Glean 分支。[patch.crates-io] glean = { git = "https://github.com/myfork/glean", branch = "my-feature-branch" } glean-core = { git = "https://github.com/myfork/glean", branch = "my-feature-branch" }
需要指定这两个板条箱以确保它们同步。
您可以通过
branch
、tag
或rev
(Git 提交) 指定要使用的确切代码。有关详细信息,请参阅 cargo 文档。您还可以使用路径依赖项,用于真正的本地 Glean。
[patch.crates-io] glean = { path = "../glean/glean-core/rlb" } glean-core = { path = "../glean/glean-core" }
如果修补的存储库中 Glean SDK 的版本与 mozilla-central 内的工作区所需的版本不 semver-兼容,则此时尝试更新 Cargo lockfile 将导致类似以下错误:
warning: Patch `glean vMM.m.p (/path/to/glean/glean-core/rlb)` was not used in the crate graph.
在这种情况下,将 Cargo.toml 和 gfx/wr/Cargo.toml 中的
glean
板条箱版本更改为与您的glean
存储库中的版本匹配。glean = "=MM.m.p"
更新根工作区的 Cargo lockfile。
cargo update -p glean
(您可能会认为,如果您必须在步骤 2 中更改 gfx/wr/Cargo.toml,则您也必须在
gfx/wr
中执行cargo update
,但您错了。它不是必需的,如果您尝试这样做,它只会因crates.io
不知道您本地版本的 Glean 而报错。)Mozilla 的供应链管理策略要求对第三方软件(包括 Glean SDK,因为它被分发为第三方软件)进行审核并认证其安全。您的本地 Glean SDK 并非来自经过审查的来源。如果您现在尝试引入,
./mach vendor rust
可能会报错类似以下内容:Vet error: There are some issues with your policy.audit-as-crates-io entries
为了允许您的本地 Glean 板条箱被视为来自 crates.io 的板条箱以进行审查,请在
supply-chain/config.toml
的顶部添加以下部分。[policy.glean] audit-as-crates-io = true [policy.glean-core] audit-as-crates-io = true
**注意:**不要尝试检入这些更改。
@supply-chain-reviewers
可能会因为您r-
了补丁而感到恼火。引入更改的板条箱。
./mach vendor rust
**注意:**如果您使用的是路径依赖项,
mach vendor rust
实际上不会更改文件。相反,它会直接从您指定的磁盘位置提取文件。最后,构建 Firefox。
./mach build
远程 git
引用也适用于尝试运行,但 path
依赖项则不行。
请确保您没有引入 Glean 的非发布版本。