summaryrefslogtreecommitdiffstats
path: root/pkgs/development/interpreters/perl/default.nix
diff options
context:
space:
mode:
authorJohn Ericson <John.Ericson@Obsidian.Systems>2019-11-25 00:23:07 +0000
committerJohn Ericson <John.Ericson@Obsidian.Systems>2019-11-25 00:23:07 +0000
commit6bc456c91c6a556e905852d9a13034ed1932ea3d (patch)
tree69df19159e5e7df77ae939041f8f6e941c5ef056 /pkgs/development/interpreters/perl/default.nix
parentea9a2c5ec21bf088bbdef036238fa67cdc85b073 (diff)
parent4273a6adcc9327b9dc0e09e9fe205b4861c15679 (diff)
Merge remote-tracking branch 'upstream/master' into ghcjs-cross-without-cc
Diffstat (limited to 'pkgs/development/interpreters/perl/default.nix')
-rw-r--r--pkgs/development/interpreters/perl/default.nix26
1 files changed, 17 insertions, 9 deletions
diff --git a/pkgs/development/interpreters/perl/default.nix b/pkgs/development/interpreters/perl/default.nix
index 5ad19ce9f3d2..5baa3450b846 100644
--- a/pkgs/development/interpreters/perl/default.nix
+++ b/pkgs/development/interpreters/perl/default.nix
@@ -1,5 +1,5 @@
{ config, lib, stdenv, fetchurl, pkgs, buildPackages, callPackage
-, enableThreading ? stdenv ? glibc, makeWrapper
+, enableThreading ? stdenv ? glibc, coreutils, makeWrapper
}:
with lib;
@@ -35,7 +35,7 @@ let
# TODO: Add a "dev" output containing the header files.
outputs = [ "out" "man" "devdoc" ] ++
- stdenv.lib.optional crossCompiling "dev";
+ optional crossCompiling "dev";
setOutputFlags = false;
disallowedReferences = [ stdenv.cc ];
@@ -57,12 +57,20 @@ let
++ optionals stdenv.isDarwin [ ./cpp-precomp.patch ./sw_vers.patch ]
++ optional crossCompiling ./MakeMaker-cross.patch;
- postPatch = ''
- pwd="$(type -P pwd)"
+ # This is not done for native builds because pwd may need to come from
+ # bootstrap tools when building bootstrap perl.
+ postPatch = (if crossCompiling then ''
substituteInPlace dist/PathTools/Cwd.pm \
- --replace "/bin/pwd" "$pwd"
- '' + stdenv.lib.optionalString crossCompiling ''
+ --replace "/bin/pwd" '${coreutils}/bin/pwd'
substituteInPlace cnf/configure_tool.sh --replace "cc -E -P" "cc -E"
+ '' else ''
+ substituteInPlace dist/PathTools/Cwd.pm \
+ --replace "/bin/pwd" "$(type -P pwd)"
+ '') +
+ # Perl's build system uses the src variable, and its value may end up in
+ # the output in some cases (when cross-compiling)
+ ''
+ unset src
'';
# Build a thread-safe Perl with a dynamic libperls.o. We need the
@@ -85,7 +93,7 @@ let
++ optional stdenv.isSunOS "-Dcc=gcc"
++ optional enableThreading "-Dusethreads";
- configureScript = stdenv.lib.optionalString (!crossCompiling) "${stdenv.shell} ./Configure";
+ configureScript = optionalString (!crossCompiling) "${stdenv.shell} ./Configure";
dontAddPrefix = !crossCompiling;
@@ -140,7 +148,7 @@ let
}" /no-such-path \
--replace "${stdenv.cc}" /no-such-path \
--replace "$man" /no-such-path
- '' + stdenv.lib.optionalString crossCompiling
+ '' + optionalString crossCompiling
''
mkdir -p $dev/lib/perl5/cross_perl/${version}
for dir in cnf/{stub,cpan}; do
@@ -172,7 +180,7 @@ let
platforms = platforms.all;
priority = 6; # in `buildEnv' (including the one inside `perl.withPackages') the library files will have priority over files in `perl`
};
- } // stdenv.lib.optionalAttrs (stdenv.buildPlatform != stdenv.hostPlatform) rec {
+ } // optionalAttrs (stdenv.buildPlatform != stdenv.hostPlatform) rec {
crossVersion = "980998f7d11baf97284426ca91f84681d49a08f5"; # Jul 20, 2019
perl-cross-src = fetchurl {