as requested: - moved function into strings.nix - renamed function from makePerl5Lib - removed duplicates entries in the resulting value - rewrote the function from scratch after learning a few things (much cleaner now)

Changed files
+17 -9
lib
pkgs
top-level
+1 -1
lib/default.nix
···
inherit (strings) concatStrings concatMapStrings concatImapStrings
intersperse concatStringsSep concatMapStringsSep
concatImapStringsSep makeSearchPath makeSearchPathOutput
-
makeLibraryPath makeBinPath makePerlPath optionalString
+
makeLibraryPath makeBinPath makePerlPath makeFullPerlPath optionalString
hasPrefix hasSuffix stringToCharacters stringAsChars escape
escapeShellArg escapeShellArgs replaceChars lowerChars
upperChars toLower toUpper addContextFrom splitString
+16
lib/strings.nix
···
*/
makePerlPath = makeSearchPathOutput "lib" "lib/perl5/site_perl";
+
/* Construct a perl search path recursively including all dependencies (such as $PERL5LIB)
+
+
Example:
+
pkgs = import <nixpkgs> { }
+
makeFullPerlPath [ pkgs.perlPackages.CGI ]
+
=> "/nix/store/fddivfrdc1xql02h9q500fpnqy12c74n-perl-CGI-4.38/lib/perl5/site_perl:/nix/store/8hsvdalmsxqkjg0c5ifigpf31vc4vsy2-perl-HTML-Parser-3.72/lib/perl5/site_perl:/nix/store/zhc7wh0xl8hz3y3f71nhlw1559iyvzld-perl-HTML-Tagset-3.20/lib/perl5/site_perl"
+
*/
+
makeFullPerlPath = deps:
+
let
+
recurse = dep:
+
[ dep ] ++ dep.propagatedBuildInputs ++ (map (arg: recurse arg) dep.propagatedBuildInputs)
+
;
+
in
+
makePerlPath (lib.unique (lib.flatten (map (arg: recurse arg) deps)))
+
;
+
/* Depending on the boolean `cond', return either the given string
or the empty string. Useful to concatenate against a bigger string.
-8
pkgs/top-level/perl-packages.nix
···
checkPhase = "./Build test";
});
-
# Helper function to make a PERL5LIB environment variable for a list of perlPackages and all associated runtime dependencies
-
makePerl5Lib = deps:
-
with stdenv;
-
lib.concatStringsSep ":" [
-
(lib.makePerlPath deps)
-
(lib.concatStringsSep ":" (map (dep: dep + "/lib/perl5/site_perl") (builtins.filter (dep: dep != null) (lib.flatten (map (dep: lib.getOutput "propagatedBuildInputs" dep) deps)))))
-
]
-
;
ack = buildPerlPackage rec {
name = "ack-2.24";