build - Nix:构建“waf”会生成一个文件,但我似乎需要一个文件夹
问题描述
我已经克隆了 nixpkgs repo。从该 repo 的顶部,我可以运行nix-build -A waf
buildwaf
并nix-env -f . -iA waf
成为waf
我的用户环境的一部分。两者都没有抱怨 - 但之后我仍然无法打电话waf
:
[jeff@jbb-dell:~/nix/nixpkgs]$ waf
waf: command not found
[jeff@jbb-dell:~/nix/nixpkgs]$
大多数包,当我使用 构建它们时nix-build -A
,会生成一个名为的符号链接,该链接result
指向包含相关可执行文件的文件夹。但奇怪的是,在waf
's 的情况下,符号链接指向文件,而不是文件夹。
我正在运行 NixOS。如果我在我的配置中waf
添加,在构建时我会收到一个错误,这似乎是上一段中描述的奇怪的结果:environment.systemPackages
[jeff@jbb-dell:~/nix/jbb-config]$ sudo nixos-rebuild switch
building Nix...
building the system configuration...
these derivations will be built:
/nix/store/s618gllra3g2vn62c92advg9ks2swkz1-system-path.drv
/nix/store/gpph3adrgn949mikfvkwld86flshdbvq-unit-polkit.service.drv
/nix/store/i7xql7889ank54fnhd16zk4z79l1ix88-unit-systemd-fsck-.service.drv
/nix/store/dv9p4fsrqn1fwdvy9scyc7g9422wvm7c-dbus-1.drv
/nix/store/y730jf9s9nrzmkf55i01nlwinw5gxpsp-unit-dbus.service.drv
/nix/store/4wjan71p2di7lscnscdfhp55j49dcymx-system-units.drv
/nix/store/qrzwrpsz0hh5gzaxic6ww8mnwl03zwil-unit-dbus.service.drv
/nix/store/lhq0s9s5v3sqvjx6mqlyqj6hf4kv38sf-user-units.drv
/nix/store/hk5wbmf4dpna3dn0h0q1balj3482l6xd-etc.drv
/nix/store/yj3lfyv5sbp751xzy9jdw1d06n9gdiin-nixos-system-jbb-dell-19.09.1889.692a8cabbcc.drv
building '/nix/store/s618gllra3g2vn62c92advg9ks2swkz1-system-path.drv'...
The store path /nix/store/f1ylicjswpfx1wbvxapsnwy987qnlxl6-waf-2.0.18 is a file and can't be merged into an environment us ing pkgs.buildEnv! at /nix/store/kncarzyhspzsplkcmmyiqg2cavrwr373-builder.pl line 96.
builder for '/nix/store/s618gllra3g2vn62c92advg9ks2swkz1-system-path.drv' failed with exit code 2
cannot build derivation '/nix/store/yj3lfyv5sbp751xzy9jdw1d06n9gdiin-nixos-system-jbb-dell-19.09.1889.692a8cabbcc.drv': 1 dependencies couldn't be built
error: build of '/nix/store/yj3lfyv5sbp751xzy9jdw1d06n9gdiin-nixos-system-jbb-dell-19.09.1889.692a8cabbcc.drv' failed
[jeff@jbb-dell:~/nix/jbb-config]$
解决方案
这对我来说似乎是一个实现错误。waf
,作为顶级 Nixpkgs 包,应将其二进制文件放入$out/bin
. 我检查了in的用法,waf
nixpkgs
它似乎只在派生中使用wafHook
。
如果您只需要waf
在派生中,我建议使用wafHook
,遵循其他包的示例。如果您需要在您的用户配置文件中安装它,理想情况下您可以发送 PR 以制作waf
正确的包,或者您可以使用自定义派生解决它。
推荐阅读
- jquery - 如何使用 jquery 为表中的每个不同 ID 选择第一行?
- python - Python - 访问另一个类中的类属性,这不是它的孩子
- html - 作为前端开发人员使用模板
- javascript - 使用“babel-plugin-module-resolver”配置自定义“根”目录?
- shopify - Shopify/Liquid,将特定尺寸的产品变体添加到购物车
- ios - iPad 中的弹跳滚动(反应)
- .net-core - 由于文件位置,发布失败
- android-studio - Android studio 点击按钮显示消息
- javascript - 处理下拉列表选项中可用的标签
- c# - 无法在具有正确文件名和扩展名的 devops rest api 中下载 attachemet