Add wrapper for idris exe for gcc/gmp runtime deps

Fixes #10450

When compiling packages with -o the executable invokes gcc.
There is no compile time flag to control this invocation so for
now we create a wrapper which provides the dependency at runtime.
This commit is contained in:
Matthew Pickering 2017-11-02 21:51:35 +00:00
parent 8e91f4ea91
commit 40124cd0cf
3 changed files with 25 additions and 3 deletions

View File

@ -1,4 +1,4 @@
{ pkgs, idris, overrides ? (self: super: {}) }: let
{ pkgs, idris-no-deps, overrides ? (self: super: {}) }: let
inherit (pkgs.lib) callPackageWith fix' extends;
/* Taken from haskell-modules/default.nix, should probably abstract this away */
@ -33,7 +33,12 @@
value = callPackage (./. + "/${name}.nix") {};
}) files)) // {
inherit idris callPackage;
inherit idris-no-deps callPackage;
# See #10450 about why we have to wrap the executable
idris =
(pkgs.callPackage ./idris-wrapper.nix {})
idris-no-deps
{ path = [ pkgs.gcc ]; lib = [pkgs.gmp]; };
# A list of all of the libraries that come with idris
builtins = pkgs.lib.mapAttrsToList (name: value: value) builtins_;

View File

@ -0,0 +1,14 @@
{ symlinkJoin, makeWrapper, stdenv }: idris: { path, lib }:
symlinkJoin {
name = idris.name;
src = idris.src;
paths = [ idris ];
buildInputs = [ makeWrapper ];
postBuild = ''
wrapProgram $out/bin/idris \
--suffix PATH : ${ stdenv.lib.makeBinPath path } \
--suffix LIBRARY_PATH : ${stdenv.lib.makeLibraryPath lib}
'';
}

View File

@ -5876,7 +5876,8 @@ with pkgs;
icedtea_web = icedtea8_web;
idrisPackages = callPackage ../development/idris-modules {
idris =
idris-no-deps =
let
inherit (self.haskell) lib;
haskellPackages = self.haskellPackages.override {
@ -5893,6 +5894,8 @@ with pkgs;
haskellPackages.idris;
};
idris = idrisPackages.with-packages [ idrisPackages.base ] ;
intercal = callPackage ../development/compilers/intercal { };
irony-server = callPackage ../development/tools/irony-server/default.nix {