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; inherit (pkgs.lib) callPackageWith fix' extends;
/* Taken from haskell-modules/default.nix, should probably abstract this away */ /* Taken from haskell-modules/default.nix, should probably abstract this away */
@ -33,7 +33,12 @@
value = callPackage (./. + "/${name}.nix") {}; value = callPackage (./. + "/${name}.nix") {};
}) files)) // { }) 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 # A list of all of the libraries that come with idris
builtins = pkgs.lib.mapAttrsToList (name: value: value) builtins_; 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; icedtea_web = icedtea8_web;
idrisPackages = callPackage ../development/idris-modules { idrisPackages = callPackage ../development/idris-modules {
idris =
idris-no-deps =
let let
inherit (self.haskell) lib; inherit (self.haskell) lib;
haskellPackages = self.haskellPackages.override { haskellPackages = self.haskellPackages.override {
@ -5893,6 +5894,8 @@ with pkgs;
haskellPackages.idris; haskellPackages.idris;
}; };
idris = idrisPackages.with-packages [ idrisPackages.base ] ;
intercal = callPackage ../development/compilers/intercal { }; intercal = callPackage ../development/compilers/intercal { };
irony-server = callPackage ../development/tools/irony-server/default.nix { irony-server = callPackage ../development/tools/irony-server/default.nix {