From 0fcad047b9563f5b5ec4442d5337d8fc5f802397 Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Sun, 25 Feb 2018 20:36:43 -0500 Subject: [PATCH] Guile: Fix cross-compilation (cherry picked from commit f79fa7794176c11530a3be3f05ffbc10f1e53003) --- pkgs/development/interpreters/guile/2.0.nix | 10 +++++----- pkgs/development/interpreters/guile/default.nix | 10 +++++----- pkgs/development/interpreters/guile/riscv.patch | 13 +++++++++++++ 3 files changed, 23 insertions(+), 10 deletions(-) create mode 100644 pkgs/development/interpreters/guile/riscv.patch diff --git a/pkgs/development/interpreters/guile/2.0.nix b/pkgs/development/interpreters/guile/2.0.nix index 5746300fca09..ea8ff924064a 100644 --- a/pkgs/development/interpreters/guile/2.0.nix +++ b/pkgs/development/interpreters/guile/2.0.nix @@ -1,6 +1,6 @@ { fetchurl, stdenv, libtool, readline, gmp, pkgconfig, boehmgc, libunistring , libffi, gawk, makeWrapper, fetchpatch, coverageAnalysis ? null, gnu ? null -, hostPlatform +, hostPlatform, buildPackages }: # Do either a coverage analysis build or a standard build. @@ -19,7 +19,9 @@ outputs = [ "out" "dev" "info" ]; setOutputFlags = false; # $dev gets into the library otherwise - nativeBuildInputs = [ makeWrapper gawk pkgconfig ]; + depsBuildBuild = [ buildPackages.stdenv.cc ]; + nativeBuildInputs = [ makeWrapper gawk pkgconfig ] ++ + stdenv.lib.optional stdenv.isCross buildPackages.buildPackages.guile_2_0; buildInputs = [ readline libtool libunistring libffi ]; propagatedBuildInputs = [ gmp boehmgc ] @@ -29,9 +31,6 @@ # see below. ++ [ libtool libunistring ]; - # A native Guile 2.0 is needed to cross-build Guile. - selfNativeBuildInput = true; - enableParallelBuilding = true; patches = [ ./disable-gc-sensitive-tests.patch ./eai_system.patch ./clang.patch @@ -40,6 +39,7 @@ url = "http://git.savannah.gnu.org/cgit/guile.git/patch/?id=2fbde7f02adb8c6585e9baf6e293ee49cd23d4c4"; sha256 = "0p6c1lmw1iniq03z7x5m65kg3lq543kgvdb4nrxsaxjqf3zhl77v"; }) + ./riscv.patch ] ++ (stdenv.lib.optional (coverageAnalysis != null) ./gcov-file-name.patch); diff --git a/pkgs/development/interpreters/guile/default.nix b/pkgs/development/interpreters/guile/default.nix index e10c5fbb5684..fc7cd2b60ead 100644 --- a/pkgs/development/interpreters/guile/default.nix +++ b/pkgs/development/interpreters/guile/default.nix @@ -1,6 +1,6 @@ { fetchurl, stdenv, libtool, readline, gmp, pkgconfig, boehmgc, libunistring , libffi, gawk, makeWrapper, fetchpatch, coverageAnalysis ? null, gnu ? null -, hostPlatform +, hostPlatform, buildPackages }: # Do either a coverage analysis build or a standard build. @@ -20,7 +20,9 @@ outputs = [ "out" "dev" "info" ]; setOutputFlags = false; # $dev gets into the library otherwise - nativeBuildInputs = [ makeWrapper gawk pkgconfig ]; + depsBuildBuild = [ buildPackages.stdenv.cc ]; + nativeBuildInputs = [ makeWrapper gawk pkgconfig ] ++ + stdenv.lib.optional stdenv.isCross buildPackages.buildPackages.guile; buildInputs = [ readline libtool libunistring libffi ]; propagatedBuildInputs = [ gmp boehmgc ] @@ -30,13 +32,11 @@ # see below. ++ [ libtool libunistring ]; - # A native Guile 2.0 is needed to cross-build Guile. - selfNativeBuildInput = true; - enableParallelBuilding = true; patches = [ ./eai_system.patch + ./riscv.patch ] ++ (stdenv.lib.optional (coverageAnalysis != null) ./gcov-file-name.patch); diff --git a/pkgs/development/interpreters/guile/riscv.patch b/pkgs/development/interpreters/guile/riscv.patch new file mode 100644 index 000000000000..b835e1613838 --- /dev/null +++ b/pkgs/development/interpreters/guile/riscv.patch @@ -0,0 +1,13 @@ +diff --git a/module/system/base/target.scm b/module/system/base/target.scm +index 95ab8d8c9..93616f4a3 100644 +--- a/module/system/base/target.scm ++++ b/module/system/base/target.scm +@@ -86,6 +86,8 @@ + (endianness big)) + ((string=? "aarch64" cpu) + (endianness little)) ++ ((string-match "riscv[1-9][0-9]*" cpu) ++ (endianness little)) + (else + (error "unknown CPU endianness" cpu))))) +