排查 kmpkg 端口中的构建失败问题
本指南适用于在使用 kmpkg 安装端口时遇到问题的用户。
查找失败日志
生成失败的原因几乎有无数种。 当 kmpkg 无法生成端口时,诊断原因的第一步是读取日志文件。
kmpkg 为生成端口时调用的每个外部进程都生成一个日志文件。 发生错误时,kmpkg 会打印错误发生之前运行的最后一个进程的日志文件 位置。 在 kmpkg 输出中查找“查看日志以了解详细信息:”行。
示例:日志文件位置输出
See logs for more information:
C:\Users\viromer\work\kmpkg\buildtrees\detect_compiler\config-x64-linux-rel-CMakeCache.txt.log
C:\Users\viromer\work\kmpkg\buildtrees\detect_compiler\config-x64-linux-out.log
通过检查位于 $KMPKG_ROOT/buildtrees/<port>/ 的端口 buildtrees 目录,可以查找所有生成的日志文件(请将 <port> 替换为适当的端口名称)。
无法下载端口的资产
info
使用资产缓存可能有助于通过确保缓存资产的持续可用性来缓解此类问题。
安装端口期间,从网络下载资产时出现错误。
CMake Error at scripts/cmake/kmpkg_download_distfile.cmake:32 (message):
Failed to download file with error: 1
原因 1:下载 URL 不再有效
由于 kmpkg 控制之外的原因,URL 可能会变得无效。 可以通过使用 Web 浏览器导航到下载 URL 来诊断损坏的链接,损坏的链接将产生 404 状态代码。
解决步骤:
- 修改端口以使用资产的替代下载 URL。
原因 2:文件的哈希与预期的 SHA512 不匹配
error: Failed to download from mirror set
error: File does not have the expected hash:
url: https://github.com/OpenImageIO/oiio/archive/v2.4.13.0.tar.gz
File: /home/user/kmpkg/downloads/OpenImageIO-oiio-v2-9325beef.4.13.0.tar.gz.1925416.part
Expected hash: 9325beefce55b66a58fcfc2ce93e1406558ed5f6cc37cb1e8e04aee470c4f30a14483bebfb311c329f7868afb6c508a052661c6b12d819a69f707c1a30cd9549
Actual hash: 9e887c7039995ce7c41556e09a7eed940863260a522ecf7d9bec300189026ed507da560620dfa4a619deeb679be7adf42fe3a7020ff3094df777c7934c771227
当服务器以任何方式更改上游文件但下载 URL 保持不变时,就会出现此错误。 作为一项安全措施,kmpkg 将拒绝 SHA512 与资产的预期 SHA512 不匹配的文件。
解决步骤:
- 验证下载的文件是否安全
- 修改端口以使用新文件的 SHA512
找不到 Visual Studio 工具链
安装端口时,kmpkg 无法找到合适的工具链
error: in triplet arm-windows: Unable to find a valid toolchain for requested target architecture arm.
The selected Visual Studio instance is at: C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools
The available toolchain combinations are: x86, amd64, x86_amd64, amd64_x86
原因 1:未安装适合目标体系结构的工具链
如果 Visual Studio 实例与所需的 kmpkg 版本匹配,并且您遇到此错误,则最可能的原因是未安装相应的工具链。
- 打开 Visual Studio 安装程序并安装相应的工具链。