Я пытаюсь создать локальный пакет perl, который использует другой в качестве зависимости.
Рассматриваемая зависимость Getopt-Plus
; устанавливается с помощью этого выражения nix:
{ fetchurl, perlPackages }:
perlPackages.buildPerlModule rec {
version = "0.99";
name = "Getopt-Plus";
src = fetchurl {
url = "mirror://cpan/authors/id/F/FL/FLUFFY/${name}-${version}.tar.gz";
sha256 = "0vsr4d0myv98aqbs7rc5rvqdpfz1vg1w7b5wyn4i6lmycp1wxxqk";
};
buildInputs = [ ];
propagatedBuildInputs = with perlPackages; [ ];
doCheck = false;
}
Эта установка проходит успешно, что подтверждается следующим образом:
$ nix-env -q | grep Getopt
perl5.28.2-Getopt-Plus-0.99
Теперь у меня есть локальный пакет с захватывающим названием Finance
, в котором используется Getopt-Plus. Итак, вот предполагаемое выражение nix:
{ nixpkgs }:
with nixpkgs;
with perlPackages;
buildPerlModule rec {
version = "1.01";
name = "Finance";
src = fetchurl {
url = "http://localhost:8888/${name}-${version}-002.tar.gz";
sha256 = "0fib0rbzx8519imsw9jrfl805r6lrl6qzbnhipxxix5scar913r7";
};
buildInputs = [ ];
propagatedBuildInputs = [ "Getopt-Plus" ];
doCheck = false;
}
Наряду с оверлейным файлом для разрешения ссылок на локально определенные пакеты (через self
):
self: super: {
Finance = import ../pkgs/Finance/default.nix { nixpkgs = self; };
}
Моя проблема в том, как обратиться к Getopt-Plus; все, что я пробую, приводит к ошибке вида build input Getopt-Plus does not exist
.
Я пробовал с двойными кавычками и без них (без кавычек приводит к ошибкам «неопределенной переменной»; ясно, что Getopt-Plus
будет переменной, я думаю, из-за дефиса); Я пробовал «установленное» имя perl5.28.2-Getopt-Plus-0.99
; Я пробовал другие варианты на них (например, perl5.28.2-Getopt-Plus
, perl-Getopt-Plus
, perl-Getopt-Plus-0.99
. Я также пытался удалить дефис из установки Getopt-Plus, чтобы он стал GetoptPlus
; он, конечно, прекрасно устанавливается, но похоже, не помогает эта проблема.
Если я запускаю nix repl, установка p = import <nixpkgs> {}
; тогда он ясно представляет p.GetoptPlus
(и p.Finance
) как действительный вывод.
Мои вопросы:
- Какое правильное имя использовать, чтобы Финансы зависели от Гетопт-Плюс; и
- Должен ли я использовать здесь buildInputs или spreadatedBuildInputs? Мне неясно, в чем разница.
Спасибо за любую помощь.