buildEnv内置函数如何工作?

srg*_*hma 6 nix

buildEnv如何工作?为什么是内置的?如何使用?有什么manifest争论?关于buildEnv的文档在哪里?

小智 6

在寻找实际的buildenv.nix还是buildEnv功能的?

因为buildenv.nixNix包管理器的内部机制对非Nix本身的开发人员没有太大的兴趣。

如果您对此buildEnv功能是NixPkgs软件包集合的一部分感兴趣,请在以下位置实现此功能:https : //github.com/NixOS/nixpkgs/blob/master/pkgs/build-support/buildenv/default.nix

即使代码提供了一些提示,我也没有找到任何真正的文档,但是您可以在手册中找到一些示例:https : //nixos.org/nixpkgs/manual/#sec-building-environment

如果我正确理解,清单也是Nix的内部文件:它是一个Nix文件,其中包含与给定环境相对应的派生列表。例如,您可以在装有nix的计算机上看一看/nix/var/nix/profiles/per-user/root/channels/manifest.nix

它不是很可读,看起来像这样:

[ { meta = { }; name = "nixos-18.09pre143771.a8c71037e04"; out = { outPath = "/nix/store/yqxc408mhbcksnaqndkpdkg8ylcj2xhg-nixos-18.09pre143771.a8c71037e04"; }; outPath = "/nix/store/yqxc408mhbcksnaqndkpdkg8ylcj2xhg-nixos-18.09pre143771.a8c71037e04"; outputs = [ "out" ]; system = "x86_64-linux"; type = "derivation"; } { meta = { }; name = "nixos-1803-18.03.132768.94d80eb7247"; out = { outPath = "/nix/store/ih8bhvgmp47rs3acchkc9ch7f8760rpz-nixos-1803-18.03.132768.94d80eb7247"; }; outPath = "/nix/store/ih8bhvgmp47rs3acchkc9ch7f8760rpz-nixos-1803-18.03.132768.94d80eb7247"; outputs = [ "out" ]; system = "x86_64-linux"; type = "derivation"; } ]

  • `buildins.buildenv`和`lib.buildEnv`都做同样的事情吗? (2认同)
  • nixpkgs buildEnv被大量用于组合环境。通常会创建非常简单的代理环境,以某种配置包装现有的软件包。例如,通过将选项或标志添加到现有程序包的二进制文件中。 (2认同)
  • Nixpkgs 手册中的 [第 7 章函数参考](https://nixos.org/nixpkgs/manual/#chap-functions) 下不应该记录 `buildEnv` 吗?似乎大部分章节都描述了 `nixpkgs/pkgs/build-support/` 中的包(`buildEnv` 也位于其中)。 (2认同)