代码之家  ›  专栏  ›  技术社区  ›  Tim unnamed eng

应该如何读取此依赖性平台表?

  •  0
  • Tim unnamed eng  · 技术社区  · 2 年前

    https://nixos.org/manual/nixpkgs/stable/#ssec-stdenv-dependencies-reference

    当它的某些 其他可传递(非即时)的下游依赖项也需要它 作为直接依赖。[3]

    需要注意的是,依赖关系不一定 以与以前相同的依赖关系传播,但是 而是作为相应的排序,以便平台规则仍然一致 向上的为了确定依赖关系传播的确切规则,我们开始 通过为每个依赖项分配一对三进制数(-1用于 build,0表示主机,1表示目标)表示其依赖类型, 它捕获其主机和目标平台各自的偏移量 从依赖的派生主机和目标平台。这个 下表总结了可以 获得:

    host → target         attribute name          offset
    build --> build       depsBuildBuild          -1, -1
    build --> host        nativeBuildInputs       -1, 0
    build --> target      depsBuildTarget         -1, 1
    host --> host         depsHostHost            0, 0
    host --> target       buildInputs             0, 1
    target --> target     depsTargetTarget        1, 1
    

    我想知道如何阅读表格?

    “主机目标”和“构建-->构建”中的箭头是什么意思?

    偏移是如何计算的?

    0 回复  |  直到 2 年前
        1
  •  1
  •   tobiasBora    2 年前

    所以这与你的另一个问题非常接近 here ,事实证明,我在那里的新答案也回答了这个问题。长话短说,如果你不构建编译器,那么你只想使用 nativeBuildInputs 用于编译时所需的依赖项( cmake , pkg-build 等等),以及 buildInputs 其他一切。

    对于更高级的用例,您看到的表有两个冗余列: offset 只是第一列的数字转换,其中:

    • -1 = build (构建程序的机器的体系结构),
    • 0 = host (将运行程序的机器的体系结构),
    • 1 = target (如果您构建编译器,将运行程序编译的程序的机器的体系结构)。

    所以 host -> target 与设置元组是一样的 (0,1) ,并且它非正式地表示依赖项将在 主办 ,以及(如果是编译器)它应该为体系结构编译东西 目标

    中间的列是调用的命令,用于将相应的元组属性为依赖项:例如:

    nativeBuildInput = [ gcc ];
    

    将关联 build -> host 到gcc,即陈述的味道 gcc 需要的是在上运行的 建筑 体系结构,为编译 主办 建筑学

    更多详细信息 在这里