From b6cfa372f09b908866878df006e2a65c5a865280 Mon Sep 17 00:00:00 2001 From: Silvan Mosberger Date: Mon, 2 Jul 2018 01:51:03 +0200 Subject: [PATCH 1/2] idris: Wrap with IDRIS_CC Previously idris used the C compiler from PATH for the C backend, which means that the results and whether it even succeeds can vary between systems (e.g. if a Nix-built Idris was used on a super old Linux system, the cc installed there might not even work for Idris' C). To make this more predictable, this commit sets the IDRIS_CC env var, which Idris will prefer over searching in PATH, to a Nix-provided gcc executable, given that it is not already set, so it's still possible to override. --- pkgs/development/idris-modules/idris-wrapper.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkgs/development/idris-modules/idris-wrapper.nix b/pkgs/development/idris-modules/idris-wrapper.nix index fcd02c4da24..5699f8b61b6 100644 --- a/pkgs/development/idris-modules/idris-wrapper.nix +++ b/pkgs/development/idris-modules/idris-wrapper.nix @@ -1,4 +1,4 @@ -{ symlinkJoin, makeWrapper, stdenv }: idris: { path, lib }: +{ symlinkJoin, makeWrapper, stdenv, gcc }: idris: { path, lib }: symlinkJoin { name = idris.name; @@ -8,6 +8,7 @@ symlinkJoin { meta.platforms = idris.meta.platforms; postBuild = '' wrapProgram $out/bin/idris \ + --run 'export IDRIS_CC=''${IDRIS_CC:-${stdenv.lib.getBin gcc}/bin/gcc}' \ --suffix PATH : ${ stdenv.lib.makeBinPath path } \ --suffix LIBRARY_PATH : ${stdenv.lib.makeLibraryPath lib} ''; From 636cd3cba96d422cd91340ec19377769261f8e64 Mon Sep 17 00:00:00 2001 From: Silvan Mosberger Date: Mon, 2 Jul 2018 02:32:47 +0200 Subject: [PATCH 2/2] idris: Clean up wrapper --- pkgs/development/idris-modules/default.nix | 7 +++---- .../development/idris-modules/idris-wrapper.nix | 17 +++++++---------- 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/pkgs/development/idris-modules/default.nix b/pkgs/development/idris-modules/default.nix index 1dfa4e48899..25f8dba00b0 100644 --- a/pkgs/development/idris-modules/default.nix +++ b/pkgs/development/idris-modules/default.nix @@ -31,10 +31,9 @@ # Idris wrapper with specified compiler and library paths, used to build packages - idris = - (pkgs.callPackage ./idris-wrapper.nix {}) - idris-no-deps - { path = [ pkgs.gcc ]; lib = [pkgs.gmp]; }; + idris = pkgs.callPackage ./idris-wrapper.nix { + inherit idris-no-deps; + }; # Utilities for building packages diff --git a/pkgs/development/idris-modules/idris-wrapper.nix b/pkgs/development/idris-modules/idris-wrapper.nix index 5699f8b61b6..f395bcd95d7 100644 --- a/pkgs/development/idris-modules/idris-wrapper.nix +++ b/pkgs/development/idris-modules/idris-wrapper.nix @@ -1,15 +1,12 @@ -{ symlinkJoin, makeWrapper, stdenv, gcc }: idris: { path, lib }: +{ lib, symlinkJoin, makeWrapper, idris-no-deps, gcc, gmp }: symlinkJoin { - name = idris.name; - src = idris.src; - paths = [ idris ]; + inherit (idris-no-deps) name src meta; + paths = [ idris-no-deps ]; buildInputs = [ makeWrapper ]; - meta.platforms = idris.meta.platforms; postBuild = '' wrapProgram $out/bin/idris \ - --run 'export IDRIS_CC=''${IDRIS_CC:-${stdenv.lib.getBin gcc}/bin/gcc}' \ - --suffix PATH : ${ stdenv.lib.makeBinPath path } \ - --suffix LIBRARY_PATH : ${stdenv.lib.makeLibraryPath lib} - ''; - } + --run 'export IDRIS_CC=''${IDRIS_CC:-${lib.getBin gcc}/bin/gcc}' \ + --suffix LIBRARY_PATH : ${lib.makeLibraryPath [ gmp ]} + ''; +}