I’m trying to create a derivation for gnupod. It uses automake, which made the process very easy. The problem is that during the install phase, the installer attempts to install perl modules at $perlbin
, which is write-protected during nix-build
.
My derivation looks like:
{
pkgs ? import (fetchTarball "http://nixos.org/channels/nixos-21.05/nixexprs.tar.xz") {
}
}:
pkgs.stdenv.mkDerivation rec {
version = "0.99.8";
pname = "gnupod";
src = fetchGit {
url = "git://git.savannah.gnu.org/gnupod.git";
};
nativeBuildInputs = [
pkgs.autoreconfHook
pkgs.makeWrapper
];
buildInputs = [
] ++ (with pkgs.perlPackages; [
perl
XMLParser
DigestSHA1
UnicodeString
MP3Info
]);
}
The error thrown is:
_recmkdir(//nix/store/wmpankr1aiwv9qd2533fav779yrcicry-perl-5.32.1/lib/perl5/site_perl/5.32.1/x86_64-linux-thread-multi/GNUpod): Failed to create //nix/store/wmpankr1aiwv9qd2533fav779yrcicry-perl-5.32.1/lib/perl5/site_perl/5.32.1/x86_64-linux-thread-multi/GNUpod/: Permission denied
make: *** [Makefile:28: install] Error 13
builder for '/nix/store/hjkx2fl7ik8h7ipk4if5qq34hbkj1ss9-gnupod-0.99.8.drv' failed with exit code 2
The offending line in the install script (./tools/gnupod_install.pl
) is this:
print "Installing GNUpod $VINSTALL using gnupod_install 0.26\n";
install_scripts("build/bin/*.pl", $DST.$opts{bindir});
--> install_pm("build/bin/GNUpod", "GNUpod", $opts{perlbin}, $DST);
install_man("build/man/*.gz", $DST.$opts{mandir}."/man1");
install_info("build/info/gnupod.info", $DST.$opts{infodir});
in which the script attempts to copy every .pm
file into the perl directory.
There must must an override builtin to Nix, or a flag to automake that I’m missing, but I’ve spent hours looking through examples and source code. Any help would be appreciated!