summary refs log tree commit diff
diff options
context:
space:
mode:
authorAnthony Cowley <acowley@gmail.com>2016-03-13 04:18:16 -0400
committerAnthony Cowley <acowley@gmail.com>2016-03-13 04:18:16 -0400
commit889d6d11a3d93b920ea9ed63844d45f44f9f43e5 (patch)
treefe1d81c534d31898493c74dd4f8931d7cf06d8d2
parent2d01e94f2e772c7ed587b188cf98369526b409fa (diff)
downloadnixpkgs-889d6d11a3d93b920ea9ed63844d45f44f9f43e5.tar
nixpkgs-889d6d11a3d93b920ea9ed63844d45f44f9f43e5.tar.gz
nixpkgs-889d6d11a3d93b920ea9ed63844d45f44f9f43e5.tar.bz2
nixpkgs-889d6d11a3d93b920ea9ed63844d45f44f9f43e5.tar.lz
nixpkgs-889d6d11a3d93b920ea9ed63844d45f44f9f43e5.tar.xz
nixpkgs-889d6d11a3d93b920ea9ed63844d45f44f9f43e5.tar.zst
nixpkgs-889d6d11a3d93b920ea9ed63844d45f44f9f43e5.zip
julia: darwin compatibility
Along with PR #13879, these patches let julia build and run on
darwin. Using an llvm with shared library support is an idea adopted from
a @pikajude comment here https://github.com/NixOS/nixpkgs/issues/10864

The libgit2 change is mechanical to pull in iconv on darwin.

The frameworks are referenced by julia's build system.
-rw-r--r--pkgs/development/compilers/julia/default.nix12
-rw-r--r--pkgs/development/libraries/git2/default.nix9
-rw-r--r--pkgs/top-level/all-packages.nix7
3 files changed, 22 insertions, 6 deletions
diff --git a/pkgs/development/compilers/julia/default.nix b/pkgs/development/compilers/julia/default.nix
index 0eddde15a58..0c0520533bc 100644
--- a/pkgs/development/compilers/julia/default.nix
+++ b/pkgs/development/compilers/julia/default.nix
@@ -7,6 +7,8 @@
 , curl, fftwSinglePrec, fftw, gmp, libgit2, mpfr, openlibm, openspecfun, pcre2
 # linear algebra
 , openblas, arpack, suitesparse
+# Darwin frameworks
+, CoreServices, ApplicationServices
 }:
 
 with stdenv.lib;
@@ -19,6 +21,9 @@ in
 let
   arpack = arpack_.override { inherit openblas; };
   suitesparse = suitesparse_.override { inherit openblas; };
+  llvmShared = if stdenv.isDarwin
+               then llvm.override { enableSharedLibraries = true; }
+               else llvm;
 in
 
 let
@@ -68,10 +73,11 @@ stdenv.mkDerivation rec {
   '';
 
   buildInputs = [
-    arpack fftw fftwSinglePrec gmp libgit2 libunwind llvm mpfr
+    arpack fftw fftwSinglePrec gmp libgit2 libunwind llvmShared mpfr
     pcre2 openblas openlibm openspecfun readline suitesparse utf8proc
     zlib
-  ];
+  ] ++
+    stdenv.lib.optionals stdenv.isDarwin [CoreServices ApplicationServices] ;
 
   nativeBuildInputs = [ curl gfortran m4 makeWrapper patchelf perl python2 which ];
 
@@ -127,6 +133,8 @@ stdenv.mkDerivation rec {
     openspecfun pcre2 suitesparse
   ];
 
+  NIX_LDFLAGS = optionalString stdenv.isDarwin "-rpath ${llvmShared}/lib";
+
   dontStrip = true;
   dontPatchELF = true;
 
diff --git a/pkgs/development/libraries/git2/default.nix b/pkgs/development/libraries/git2/default.nix
index 3c433511fc1..fb380d60cf9 100644
--- a/pkgs/development/libraries/git2/default.nix
+++ b/pkgs/development/libraries/git2/default.nix
@@ -1,6 +1,6 @@
-{stdenv, fetchurl, pkgconfig, cmake, zlib, python, libssh2, openssl, http-parser}:
+{stdenv, fetchurl, pkgconfig, cmake, zlib, python, libssh2, openssl, http-parser, libiconv}:
 
-stdenv.mkDerivation rec {
+stdenv.mkDerivation (rec {
   version = "0.23.2";
   name = "libgit2-${version}";
 
@@ -21,4 +21,7 @@ stdenv.mkDerivation rec {
     license = stdenv.lib.licenses.gpl2;
     platforms = with stdenv.lib.platforms; all;
   };
-}
+} // stdenv.lib.optionalAttrs (!stdenv.isLinux) {
+  NIX_LDFLAGS = "-liconv";
+  propagatedBuildInputs = [ libiconv ];
+})
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 2e86b3b5894..7efa8d25850 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -4546,6 +4546,7 @@ let
   julia = callPackage ../development/compilers/julia {
     gmp = gmp6;
     openblas = openblasCompat;
+    inherit (darwin.apple_sdk.frameworks) CoreServices ApplicationServices;
   };
 
   julia-git = lowPrio (callPackage ../development/compilers/julia/git.nix {
@@ -6850,7 +6851,11 @@ let
 
   gio-sharp = callPackage ../development/libraries/gio-sharp { };
 
-  libgit2 = callPackage ../development/libraries/git2 { };
+  libgit2 = callPackage ../development/libraries/git2 (
+    stdenv.lib.optionalAttrs stdenv.isDarwin {
+      inherit (darwin) libiconv;
+    }
+  );
 
   libgit2_0_21 = callPackage ../development/libraries/git2/0.21.nix { };