From 33ef2829b663945d0d7ae702a6f5f5f342760401 Mon Sep 17 00:00:00 2001 From: Michael Eden Date: Mon, 18 Feb 2019 17:31:59 -0500 Subject: [PATCH] perlPackages.TermReadKey: add workarounds for cross compilation --- .../perl-modules/generic/default.nix | 4 ++-- pkgs/top-level/perl-packages.nix | 19 ++++++++++++++++++- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/pkgs/development/perl-modules/generic/default.nix b/pkgs/development/perl-modules/generic/default.nix index a87e0c616fd8d..5b4d9ffa15c4c 100644 --- a/pkgs/development/perl-modules/generic/default.nix +++ b/pkgs/development/perl-modules/generic/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, perl }: +{ lib, stdenv, perl, buildPackages }: { nativeBuildInputs ? [], name, ... } @ attrs: @@ -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; } ) diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix index 2866f6b6ca5f3..5b74b0a3ee26a 100644 --- a/pkgs/top-level/perl-packages.nix +++ b/pkgs/top-level/perl-packages.nix @@ -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"; @@ -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 {