core/pkgs/by-name/pe/perl/default.nix

72 lines
2.5 KiB
Nix
Raw Normal View History

2024-05-02 00:46:19 +00:00
{ callPackage }:
let
# Common passthru for all perl interpreters.
# copied from lua
2024-05-13 21:24:10 +00:00
passthruFun = { overrides, perlOnBuildForBuild, perlOnBuildForHost
, perlOnBuildForTarget, perlOnHostForHost, perlOnTargetForTarget
, perlAttr ? null, self # is perlOnHostForTarget
}:
let
2024-05-02 00:46:19 +00:00
perlPackages = callPackage
# Function that when called
# - imports perl-packages.nix
# - adds spliced package sets to the package set
2024-05-13 21:24:10 +00:00
({ stdenv, pkgs, perl, callPackage, makeScopeWithSplicing' }:
let
perlPackagesFun = callPackage ./perl-packages.nix {
# allow 'perlPackages.override { pkgs = pkgs // { imagemagick = imagemagickBig; }; }' like in python3Packages
# most perl packages aren't called with callPackage so it's not possible to override their arguments individually
# the conditional is because the // above won't be applied to __splicedPackages and hopefully no one is doing that when cross-compiling
pkgs = if stdenv.buildPlatform != stdenv.hostPlatform then
pkgs.__splicedPackages
else
pkgs;
inherit stdenv;
perl = self;
};
2024-05-02 00:46:19 +00:00
2024-05-13 21:24:10 +00:00
otherSplices = {
selfBuildBuild = perlOnBuildForBuild.pkgs;
selfBuildHost = perlOnBuildForHost.pkgs;
selfBuildTarget = perlOnBuildForTarget.pkgs;
selfHostHost = perlOnHostForHost.pkgs;
selfTargetTarget = perlOnTargetForTarget.pkgs or { };
};
in makeScopeWithSplicing' {
inherit otherSplices;
f = perlPackagesFun;
}) { perl = self; };
2024-05-02 00:46:19 +00:00
in rec {
2024-05-13 21:24:10 +00:00
buildEnv = callPackage ./wrapper.nix {
perl = self;
inherit (pkgs) requiredPerlModules;
};
withPackages = f: buildEnv.override { extraLibs = f pkgs; };
pkgs = perlPackages // (overrides pkgs);
interpreter = "${self}/bin/perl";
libPrefix = "lib/perl5/site_perl";
perlOnBuild = perlOnBuildForHost.override {
inherit overrides;
self = perlOnBuild;
};
};
2024-05-02 00:46:19 +00:00
in rec {
# Maint version
perl536 = callPackage ./interpreter.nix {
self = perl536;
version = "5.36.3";
sha256 = "sha256-8qGtiBFjkaF2Ji3ULfxS7yKvtA9MDpgQ8V1WHm8ccmo=";
inherit passthruFun;
};
# Maint version
perl538 = callPackage ./interpreter.nix {
self = perl538;
version = "5.38.2";
sha256 = "sha256-oKMVNEUet7g8fWWUpJdUOlTUiLyQygD140diV39AZV4=";
inherit passthruFun;
};
}