mirror of
https://github.com/NixOS/nixpkgs.git
synced 2026-07-19 23:21:27 +00:00
This goal of this change is to make nix-update-script work out of the
box with packages built using `buildPerlPackage`.
Explicitly setting `src` in the `stdenv.mkDerivation` call currently
causes `builtins.unsafeGetAttrPos "src" <package>` to point to
`pkgs/development/perl-modules/generic/default.nix` for packages built
using `buildPerlPackage`. If the result of this expression is not
`null`, nix-update will try to update `src` of `<package>` in this
file [1], which will fail for obvious reasons.
A good example of this happening is with the pgformatter package.
Removing the explicit `inherit src` allows
`builtins.unsafeGetAttrPos "src" <package>` to point to the file where
`<package>.src` is actually defined, fixing nix-update runs for
affected packages.
Git history doesn't provide any indication as to why this argument was
introduced in the first place, so I hope it's fine to remove it. The
only difference in evaluation will be for calls to `buildPerlPackage`
without `src`: In these cases, `src` will be unset instead of `null`.
[1] 8227513ecf/nix_update/eval.nix (L99)
84 lines
2.0 KiB
Nix
84 lines
2.0 KiB
Nix
{
|
|
lib,
|
|
stdenv,
|
|
perl,
|
|
toPerlModule,
|
|
}:
|
|
|
|
{
|
|
buildInputs ? [ ],
|
|
nativeBuildInputs ? [ ],
|
|
outputs ? [
|
|
"out"
|
|
"devdoc"
|
|
],
|
|
|
|
# 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",
|
|
|
|
env ? { },
|
|
|
|
postPatch ? "patchShebangs .",
|
|
|
|
...
|
|
}@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
|
|
++ (if !(stdenv.buildPlatform.canExecute stdenv.hostPlatform) then [ perl.mini ] else [ perl ]);
|
|
|
|
inherit
|
|
outputs
|
|
doCheck
|
|
checkTarget
|
|
enableParallelBuilding
|
|
postPatch
|
|
;
|
|
env = {
|
|
inherit PERL_AUTOINSTALL AUTOMATED_TESTING PERL_USE_UNSAFE_INC;
|
|
fullperl = perl.__spliced.buildHost or perl;
|
|
}
|
|
// env;
|
|
|
|
meta = defaultMeta // (attrs.meta or { });
|
|
}
|
|
);
|
|
|
|
in
|
|
toPerlModule package
|
|
)
|