summary refs log tree commit diff
diff options
context:
space:
mode:
authorMatthew Pickering <matthewtpickering@gmail.com>2017-11-02 21:51:35 +0000
committerMatthew Pickering <matthewtpickering@gmail.com>2017-11-02 23:14:12 +0000
commit40124cd0cf474dd17959b5ae36c8a98112c173c0 (patch)
tree3f6ad27d72c763a48588cf0023fd1391899bd43e
parent8e91f4ea91216d68186585d8ab863d4f6133688e (diff)
downloadnixlib-40124cd0cf474dd17959b5ae36c8a98112c173c0.tar
nixlib-40124cd0cf474dd17959b5ae36c8a98112c173c0.tar.gz
nixlib-40124cd0cf474dd17959b5ae36c8a98112c173c0.tar.bz2
nixlib-40124cd0cf474dd17959b5ae36c8a98112c173c0.tar.lz
nixlib-40124cd0cf474dd17959b5ae36c8a98112c173c0.tar.xz
nixlib-40124cd0cf474dd17959b5ae36c8a98112c173c0.tar.zst
nixlib-40124cd0cf474dd17959b5ae36c8a98112c173c0.zip
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.
-rw-r--r--pkgs/development/idris-modules/default.nix9
-rw-r--r--pkgs/development/idris-modules/idris-wrapper.nix14
-rw-r--r--pkgs/top-level/all-packages.nix5
3 files changed, 25 insertions, 3 deletions
diff --git a/pkgs/development/idris-modules/default.nix b/pkgs/development/idris-modules/default.nix
index 4d7c4928283a..16f6c65b094a 100644
--- a/pkgs/development/idris-modules/default.nix
+++ b/pkgs/development/idris-modules/default.nix
@@ -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_;
diff --git a/pkgs/development/idris-modules/idris-wrapper.nix b/pkgs/development/idris-modules/idris-wrapper.nix
new file mode 100644
index 000000000000..32424ba1f862
--- /dev/null
+++ b/pkgs/development/idris-modules/idris-wrapper.nix
@@ -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}
+      '';
+  }
+
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index a76c4eac651f..294a79b101ef 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -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 {