Skip to content

Commit

Permalink
perlPackages.TermReadKey: add workarounds for cross compilation
Browse files Browse the repository at this point in the history
  • Loading branch information
illegalprime committed Feb 18, 2019
1 parent f7c6e6b commit 33ef282
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 3 deletions.
4 changes: 2 additions & 2 deletions pkgs/development/perl-modules/generic/default.nix
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{ lib, stdenv, perl }:
{ lib, stdenv, perl, buildPackages }:

{ nativeBuildInputs ? [], name, ... } @ attrs:

Expand Down Expand Up @@ -37,6 +37,6 @@ stdenv.mkDerivation (
name = "perl${perl.version}-${name}";
builder = ./builder.sh;
nativeBuildInputs = nativeBuildInputs ++ [ (perl.dev or perl) ];
inherit perl;
perl = buildPackages.perl;
}
)
19 changes: 18 additions & 1 deletion pkgs/top-level/perl-packages.nix
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
for each package in a separate file: the call to the function would
be almost as much code as the function itself. */

{config, pkgs, fetchurl, fetchFromGitHub, stdenv, gnused, perl, overrides}:
{config, pkgs, fetchurl, fetchFromGitHub, stdenv, gnused, perl, overrides,
buildPackages}:

# cpan2nix assumes that perl-packages.nix will be used only with perl 5.28.1 or above
assert stdenv.lib.versionAtLeast perl.version "5.28.1";
Expand Down Expand Up @@ -14587,6 +14588,22 @@ let
url = "mirror://cpan/authors/id/J/JS/JSTOWE/${name}.tar.gz";
sha256 = "0hdj5mldpj3pyprd4hbbalfx9yjgi5p59gg2ixk9808f5v7q74sa";
};
cross = stdenv.hostPlatform != stdenv.buildPlatform;

# use native libraries from the host when running build commands
postConfigure = if cross then let
host_perl = buildPackages.perl;
host_self = buildPackages.perlPackages.TermReadKey;
perl_lib = "${host_perl}/lib/perl5/${host_perl.version}";
self_lib = "${host_self}/lib/perl5/site_perl/${host_perl.version}";
in ''
sed -ie 's|"-I$(INST_ARCHLIB)"|"-I${perl_lib}" "-I${self_lib}"|g' Makefile
'' else null;

# TermReadKey uses itself in the build process
nativeBuildInputs = if cross then [
buildPackages.perlPackages.TermReadKey
] else [];
};

TermReadLineGnu = buildPerlPackage rec {
Expand Down

0 comments on commit 33ef282

Please sign in to comment.