diff options
author | volth <volth@volth.com> | 2019-04-09 14:49:47 +0000 |
---|---|---|
committer | volth <volth@volth.com> | 2019-04-12 09:09:06 +0000 |
commit | 03eaa480bd7a649e0cfc4f8479fc6deba279eb48 (patch) | |
tree | e2f50d4f7565a7a399a40f2b5013332ac6b79d2f /pkgs/top-level/perl-packages.nix | |
parent | 68f7f25706225aef65bcac95dc28c51ccd116941 (diff) | |
download | nixlib-03eaa480bd7a649e0cfc4f8479fc6deba279eb48.tar nixlib-03eaa480bd7a649e0cfc4f8479fc6deba279eb48.tar.gz nixlib-03eaa480bd7a649e0cfc4f8479fc6deba279eb48.tar.bz2 nixlib-03eaa480bd7a649e0cfc4f8479fc6deba279eb48.tar.lz nixlib-03eaa480bd7a649e0cfc4f8479fc6deba279eb48.tar.xz nixlib-03eaa480bd7a649e0cfc4f8479fc6deba279eb48.tar.zst nixlib-03eaa480bd7a649e0cfc4f8479fc6deba279eb48.zip |
perl: add .withPackages
Diffstat (limited to 'pkgs/top-level/perl-packages.nix')
-rw-r--r-- | pkgs/top-level/perl-packages.nix | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix index 0d6e1c7bfc6e..cc5b22c0c1b3 100644 --- a/pkgs/top-level/perl-packages.nix +++ b/pkgs/top-level/perl-packages.nix @@ -12,14 +12,33 @@ assert stdenv.lib.versionAtLeast perl.version "5.28.1"; let inherit (stdenv.lib) maintainers; - self = _self // overrides; + self = _self // (overrides pkgs); _self = with self; { inherit perl; callPackage = pkgs.newScope self; - buildPerlPackage = callPackage ../development/perl-modules/generic { }; + # Check whether a derivation provides a perl module. + hasPerlModule = drv: drv ? perlModule ; + + requiredPerlModules = drvs: let + modules = stdenv.lib.filter hasPerlModule drvs; + in stdenv.lib.unique ([perl] ++ modules ++ stdenv.lib.concatLists (stdenv.lib.catAttrs "requiredPerlModules" modules)); + + # Convert derivation to a perl module. + toPerlModule = drv: + drv.overrideAttrs( oldAttrs: { + # Use passthru in order to prevent rebuilds when possible. + passthru = (oldAttrs.passthru or {}) // { + perlModule = perl; + requiredPerlModules = requiredPerlModules drv.propagatedBuildInputs; + }; + }); + + buildPerlPackage = callPackage ../development/perl-modules/generic { + inherit toPerlModule; + }; # Helper functions for packages that use Module::Build to build. buildPerlModule = { buildInputs ? [], ... } @ args: |