Nix: Сборка `waf` производит файл, но мне, похоже, нужна папка - PullRequest
1 голос
/ 19 января 2020

Я клонировал репозиторий nixpkgs . С вершины этого репо я могу запустить nix-build -A waf, чтобы построить waf, и 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 символическая ссылка на файл, а не на папку.

Я использую 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]$ 

1 Ответ

1 голос
/ 19 января 2020

Это похоже на ошибку реализации для меня. waf, как пакет верхнего уровня Nixpkgs, должен поместить свой двоичный файл в $out/bin. Я проверил использования waf в nixpkgs, и, кажется, он используется внутри дериваций только через wafHook.

Если вам нужно только waf внутри деривации Я рекомендую перейти с wafHook, следуя примеру других пакетов. Если вам нужно установить его в своем профиле пользователя, в идеале вы можете отправить PR, чтобы сделать waf подходящим пакетом, или обойти его с помощью собственного деривации.

...