nixpkgs/pkgs/development/perl-modules/generic/default.nix
Malo Bourgon 399732b449 buildPerlPackage: don't mess with pname and phase out use of name
Currently `buildPerlPackage` prefixes the Perl version to the package's
`pname`, which results in `nix run` not being able to work for any
packages build with it out of the box. This commit corrects that and
phases out the ability to set `name` directly, as well as refactors the
code to not require `cleanedAttrs`.
2022-06-07 12:49:23 -07:00

55 lines
1.6 KiB
Nix

{ lib, stdenv, perl, buildPerl, toPerlModule }:
{ buildInputs ? []
, nativeBuildInputs ? []
, outputs ? [ "out" "devdoc" ]
, src ? null
# enabling or disabling does nothing for perl packages so set it explicitly
# to false to not change hashes when enableParallelBuildingByDefault is enabled
, enableParallelBuilding ? false
, doCheck ? true
, checkTarget ? "test"
# Prevent CPAN downloads.
, PERL_AUTOINSTALL ? "--skipdeps"
# From http://wiki.cpantesters.org/wiki/CPANAuthorNotes: "allows
# authors to skip certain tests (or include certain tests) when
# the results are not being monitored by a human being."
, AUTOMATED_TESTING ? true
# current directory (".") is removed from @INC in Perl 5.26 but many old libs rely on it
# https://metacpan.org/pod/release/XSAWYERX/perl-5.26.0/pod/perldelta.pod#Removal-of-the-current-directory-%28%22.%22%29-from-@INC
, PERL_USE_UNSAFE_INC ? "1"
, ...
}@attrs:
lib.throwIf (attrs ? name) "buildPerlPackage: `name` (\"${attrs.name}\") is deprecated, use `pname` and `version` instead"
(let
defaultMeta = {
homepage = "https://metacpan.org/dist/${attrs.pname}";
inherit (perl.meta) platforms;
};
package = stdenv.mkDerivation (attrs // {
name = "perl${perl.version}-${attrs.pname}-${attrs.version}";
builder = ./builder.sh;
buildInputs = buildInputs ++ [ perl ];
nativeBuildInputs = nativeBuildInputs ++ [ (perl.mini or perl) ];
fullperl = buildPerl;
inherit outputs src doCheck checkTarget enableParallelBuilding;
inherit PERL_AUTOINSTALL AUTOMATED_TESTING PERL_USE_UNSAFE_INC;
meta = defaultMeta // (attrs.meta or { });
});
in toPerlModule package)