chromium checkout 构建:找不到 Ninja

Her*_*man 1 build chromium ninja

尝试从 ubuntu 18.04 开始在 docker 容器中构建适用于 android 的 webview。

按照说明进行所有操作,最后一个版本可以使用命令构建:

autoninja -C out/Default system_webview_apk
Run Code Online (Sandbox Code Playgroud)

但我需要一个旧版本。所以我这样做:

git checkout 80.0.3987.99 -b 80-version
Run Code Online (Sandbox Code Playgroud)

之后运行同步:

gclient sync
Run Code Online (Sandbox Code Playgroud)

默认情况下,它也会在同步后运行钩子。然后我再次使用相同的 cmd 开始构建:

autoninja -C out/Default system_webview_apk
Run Code Online (Sandbox Code Playgroud)

但这一次在结账构建时它给了我错误,我几个小时都无法修复:

user@0bb1627b6f62:~/workdir/chromium/src$ autoninja -c out/Default/ system_webview_apk
depot_tools/ninja.py: Could not find Ninja in the third_party of the current project, nor in your PATH.
Please take a following action to install Ninja.
- If your project has DEPS, Add a CIPD Ninja dependency to DEPS.
- Otherwise, add Ninja to your PATH *after* depot_tools.
Run Code Online (Sandbox Code Playgroud)

但是当我再次切换到main分支时,进行同步,它构建得很好!

我做错了什么?gn args在两种情况下都运行正常。

树枝上mainsrc/third_party/ninja/。在结帐分支上gclient sync此文件夹消失后。在同步autoninja运行之前出现错误,unknown function因为 ninja 的版本与结帐版本不对应。

Her*_*man 5

好吧,事实证明,由于某种原因,即使使用gclient sync --with_branch_heads命令,同步也不会为我的结账获取忍者。我很困惑

Ninja 包含在 depot_tools 中,因此无需安装任何内容。

来自铬文档。此外,我认为 ninja 版本应该与我的 chromium checkout 相对应,但据我发现它gn仅与工具有关。

所以,我的解决方案只是添加到我的 docker 文件中

apt install ninja-build
Run Code Online (Sandbox Code Playgroud)

每次结账都开始顺利进行。