Merge pull request #119126 from fabaff/pycomfoconnect
[NixPkgs.git] / pkgs / development / interpreters / perl / wrapper.nix
blobe1909a15e059fecd8f506f76215959069a958363
1 { lib, perl, buildEnv, makeWrapper
2 , extraLibs ? []
3 , extraOutputsToInstall ? []
4 , postBuild ? ""
5 , ignoreCollisions ? false
6 , requiredPerlModules
7 }:
9 # Create a perl executable that knows about additional packages.
10 let
11   env = let
12     paths = requiredPerlModules (extraLibs ++ [ perl ] );
13   in buildEnv {
14     name = "${perl.name}-env";
16     inherit paths;
17     inherit ignoreCollisions;
18     extraOutputsToInstall = [ "out" ] ++ extraOutputsToInstall;
20     nativeBuildInputs = [ makeWrapper ];
22     # we create wrapper for the binaries in the different packages
23     postBuild = ''
24       if [ -L "$out/bin" ]; then
25           unlink "$out/bin"
26       fi
27       mkdir -p "$out/bin"
29       # take every binary from perl packages and put them into the env
30       for path in ${lib.concatStringsSep " " paths}; do
31         if [ -d "$path/bin" ]; then
32           cd "$path/bin"
33           for prg in *; do
34             if [ -f "$prg" ]; then
35               rm -f "$out/bin/$prg"
36               if [ -x "$prg" ]; then
37                 makeWrapper "$path/bin/$prg" "$out/bin/$prg" --suffix PERL5LIB ':' "$out/${perl.libPrefix}"
38               fi
39             fi
40           done
41         fi
42       done
43     '' + postBuild;
45     meta = perl.meta // { outputsToInstall = ["out"]; }; # remove "man" from meta.outputsToInstall. pkgs.buildEnv produces no "man", it puts everything to "out"
47     passthru = perl.passthru // {
48       interpreter = "${env}/bin/perl";
49       inherit perl;
50     };
51   };
52 in env