about summary refs log tree commit diff
path: root/pkgs/development/compilers
diff options
context:
space:
mode:
authorWilliam A. Kennington III <william@wkennington.com>2015-06-12 13:47:46 -0700
committerWilliam A. Kennington III <william@wkennington.com>2015-06-12 13:47:46 -0700
commit954801a9a8251580ed9e867cae83e5b573784e40 (patch)
tree7b815bd194d369a90c672f5145ad79b54481f3e2 /pkgs/development/compilers
parent85ae0cb070628bcb98e63e6166fd6f52045f385a (diff)
parent5ee75e236c0cf758ed6b1188e10448acfcbc93b4 (diff)
Merge branch 'master.upstream' into staging.upstream
Diffstat (limited to 'pkgs/development/compilers')
-rw-r--r--pkgs/development/compilers/julia/0.2.nix14
-rw-r--r--pkgs/development/compilers/julia/0.3.nix216
-rw-r--r--pkgs/development/compilers/julia/0001-work-around-buggy-wcwidth.patch24
-rw-r--r--pkgs/development/compilers/llvm/3.4/llvm.nix1
-rw-r--r--pkgs/development/compilers/uhc/default.nix6
5 files changed, 142 insertions, 119 deletions
diff --git a/pkgs/development/compilers/julia/0.2.nix b/pkgs/development/compilers/julia/0.2.nix
index cc1be3db8a5b3..9d585e07fe1aa 100644
--- a/pkgs/development/compilers/julia/0.2.nix
+++ b/pkgs/development/compilers/julia/0.2.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchgit, gfortran, perl, m4, llvm, gmp, pcre, zlib
  , readline, fftwSinglePrec, fftw, libunwind, suitesparse, glpk, fetchurl
- , ncurses, libunistring, lighttpd, patchelf, openblas, liblapack
+ , ncurses, libunistring, lighttpd, patchelf, openblas
  , tcl, tk, xproto, libX11, git, mpfr
  } :
 let
@@ -71,7 +71,7 @@ stdenv.mkDerivation rec {
 
   buildInputs = [ gfortran perl m4 gmp pcre llvm readline zlib
     fftw fftwSinglePrec libunwind suitesparse glpk ncurses libunistring patchelf
-    openblas liblapack tcl tk xproto libX11 git mpfr
+    openblas tcl tk xproto libX11 git mpfr
     ];
 
   configurePhase = ''
@@ -91,14 +91,13 @@ stdenv.mkDerivation rec {
     copy_kill_hash "${dsfmt_src}" deps/random
 
     ${if realGcc ==null then "" else 
-    ''export NIX_LDFLAGS="$NIX_LDFLAGS -L${realGcc}/lib -L${realGcc}/lib64 -lpcre -llapack -lm -lfftw3f -lfftw3 -lglpk -lunistring -lz -lgmp -lmpfr"''}
+    ''export NIX_LDFLAGS="$NIX_LDFLAGS -L${realGcc}/lib -L${realGcc}/lib64 -lpcre -lopenblas -lm -lfftw3f -lfftw3 -lglpk -lunistring -lz -lgmp -lmpfr"''}
     export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -fPIC "
 
     export LDFLAGS="-L${suitesparse}/lib -L$out/lib/julia -Wl,-rpath,$out/lib/julia"
 
     export GLPK_PREFIX="${glpk}/include"
 
-    mkdir -p "$out/lib"
     sed -e "s@/usr/local/lib@$out/lib@g" -i deps/Makefile
     sed -e "s@/usr/lib@$out/lib@g" -i deps/Makefile
 
@@ -111,9 +110,12 @@ stdenv.mkDerivation rec {
 
   preBuild = ''
     mkdir -p usr/lib
-    
-    echo "$out"
+
     mkdir -p "$out/lib"
+    ln -s "${openblas}/lib/libopenblas.so" "$out/lib/libblas.so"
+    ln -s "${openblas}/lib/libopenblas.so" "$out/lib/liblapack.so"
+
+    echo "$out"
     (
     cd "$(mktemp -d)"
     for i in "${suitesparse}"/lib/lib*.a; do
diff --git a/pkgs/development/compilers/julia/0.3.nix b/pkgs/development/compilers/julia/0.3.nix
index 9f216c7207fc6..42b296c7b859e 100644
--- a/pkgs/development/compilers/julia/0.3.nix
+++ b/pkgs/development/compilers/julia/0.3.nix
@@ -1,142 +1,138 @@
-{ stdenv, fetchgit, gfortran, perl, m4, llvm, gmp, pcre, zlib
- , readline, fftwSinglePrec, fftw, libunwind, suitesparse, glpk, fetchurl
- , ncurses, libunistring, patchelf, openblas, liblapack
- , tcl, tk, xproto, libX11, git, mpfr, which, wget
- } :
+{ stdenv, fetchgit, fetchurl
+# build tools
+, gfortran, git, m4, patchelf, perl, which
+# libjulia dependencies
+, libunwind, llvm, readline, utf8proc, zlib
+# standard library dependencies
+, double_conversion, fftwSinglePrec, fftw, glpk, gmp, mpfr, pcre
+, openblas, arpack, suitesparse
+}:
+
+with stdenv.lib;
 
-assert stdenv.isLinux; 
-
-let
-  realGcc = stdenv.cc.cc;
-in
 stdenv.mkDerivation rec {
   pname = "julia";
-  version = "0.3.6";
+  version = "0.3.9";
   name = "${pname}-${version}";
 
-  dsfmt_ver = "2.2";
-  grisu_ver = "1.1.1";
-  openblas_ver = "v0.2.13";
-  lapack_ver = "3.5.0";
-  arpack_ver = "3.1.5";
-  patchelf_ver = "0.8";
-  pcre_ver = "8.36";
-  utf8proc_ver = "1.1.6";
-
-  dsfmt_src = fetchurl {
-    url = "http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/dSFMT-src-${dsfmt_ver}.tar.gz";
-    name = "dsfmt-${dsfmt_ver}.tar.gz";
-    md5 = "cb61be3be7254eae39684612c524740d";
-  };
-  grisu_src = fetchurl {
-    url = "http://double-conversion.googlecode.com/files/double-conversion-${grisu_ver}.tar.gz";
-    md5 = "29b533ed4311161267bff1a9a97e2953";
-  };
-  openblas_src = fetchurl {
-    url = "https://github.com/xianyi/OpenBLAS/tarball/${openblas_ver}";
-    name = "openblas-${openblas_ver}.tar.gz";
-    md5 = "74adf4c0d0d82bff4774be5bf2134183";
-  };
-  arpack_src = fetchurl rec {
-    url = "https://github.com/opencollab/arpack-ng/archive/${arpack_ver}.tar.gz";
-    md5 = "d84e1b6108d9ee67c0d21aba7099e953";
-    name = "arpack-ng-${arpack_ver}.tar.gz";
-  };
-  lapack_src = fetchurl {
-    url = "http://www.netlib.org/lapack/lapack-${lapack_ver}.tgz";
-    name = "lapack-${lapack_ver}.tgz";
-    md5 = "b1d3e3e425b2e44a06760ff173104bdf";
-  };
-  patchelf_src = fetchurl {
-    url = "http://hydra.nixos.org/build/1524660/download/2/patchelf-${patchelf_ver}.tar.bz2";
-    md5 = "5087261514b4b5814a39c3d3a36eb6ef";
-  };
-  pcre_src = fetchurl {
-    url = "ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-${pcre_ver}.tar.bz2";
-    md5 = "b767bc9af0c20bc9c1fe403b0d41ad97";
-  };
-  utf8proc_src = fetchurl {
-    url = "http://www.public-software-group.org/pub/projects/utf8proc/v${utf8proc_ver}/utf8proc-v${utf8proc_ver}.tar.gz";
-    md5 = "2462346301fac2994c34f5574d6c3ca7";
-  };
-
   src = fetchgit {
     url = "git://github.com/JuliaLang/julia.git";
     rev = "refs/tags/v${version}";
-    md5 = "d28e8f428485219f756d80c011d5dd32";
+    sha256 = "ad0820affefd04eb6fba7deb2603756974711846a251900a9202b8d2665a37cf";
     name = "julia-git-v${version}";
   };
 
-  buildInputs = [ gfortran perl m4 gmp pcre llvm readline zlib
-    fftw fftwSinglePrec libunwind suitesparse glpk ncurses libunistring patchelf
-    openblas liblapack tcl tk xproto libX11 git mpfr which wget
-    ];
+  patches = [ ./0001-work-around-buggy-wcwidth.patch ];
 
-  configurePhase = ''
-    for i in GMP LLVM PCRE READLINE FFTW LIBUNWIND SUITESPARSE GLPK ZLIB MPFR;
-    do
-      makeFlags="$makeFlags USE_SYSTEM_$i=1 "
-    done
-	makeFlags="$makeFlags JULIA_CPU_TARGET=core2";
+  extraSrcs =
+    let
+      dsfmt_ver = "2.2";
 
+      dsfmt_src = fetchurl {
+        url = "http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/dSFMT-src-${dsfmt_ver}.tar.gz";
+        name = "dsfmt-${dsfmt_ver}.tar.gz";
+        md5 = "cb61be3be7254eae39684612c524740d";
+      };
+    in [ dsfmt_src ];
+
+  prePatch = ''
     copy_kill_hash(){
       cp "$1" "$2/$(basename "$1" | sed -e 's/^[a-z0-9]*-//')"
     }
 
-    for i in "${grisu_src}" "${dsfmt_src}" "${arpack_src}" "${patchelf_src}" \
-        "${pcre_src}" "${utf8proc_src}" "${lapack_src}" "${openblas_src}"; do
+    for i in $extraSrcs; do
       copy_kill_hash "$i" deps
     done
+  '';
 
-    ${if realGcc ==null then "" else 
-    ''export NIX_LDFLAGS="$NIX_LDFLAGS -L${realGcc}/lib -L${realGcc}/lib64 -lpcre -llapack -lm -lfftw3f -lfftw3 -lglpk -lunistring -lz -lgmp -lmpfr -lblas -lopenblas -L$out/lib"''}
-    export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -fPIC "
-
-    export LDFLAGS="-L${suitesparse}/lib -L$out/lib/julia -Wl,-rpath,$out/lib/julia"
-
-    export GLPK_PREFIX="${glpk}/include"
-
-    mkdir -p "$out/lib"
-    sed -e "s@/usr/local/lib@$out/lib@g" -i deps/Makefile
-    sed -e "s@/usr/lib@$out/lib@g" -i deps/Makefile
-
-    export makeFlags="$makeFlags PREFIX=$out SHELL=${stdenv.shell} prefix=$out"
-
-    export dontPatchELF=1
-
-    export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$PWD/usr/lib:$PWD/usr/lib/julia"
+  postPatch = ''
+    sed -i deps/Makefile \
+        -e "s@/usr/local/lib@$out/lib@g" \
+        -e "s@/usr/lib@$out/lib@g" \
+        -e "s@/usr/include/double-conversion@${double_conversion}/include/double-conversion@g"
 
     patchShebangs . contrib
 
-    export PATH="$PATH:${stdenv.cc.libc}/sbin"
-
     # ldconfig doesn't seem to ever work on NixOS; system-wide ldconfig cache
     # is probably not what we want anyway on non-NixOS
     sed -e "s@/sbin/ldconfig@true@" -i src/ccall.*
-
-    ln -s "${openblas}/lib/libopenblas.so" "$out/lib/libblas.so"
   '';
 
-  preBuild = ''
-    mkdir -p usr/lib
-    
-    echo "$out"
-    mkdir -p "$out/lib"
-    (
-    cd "$(mktemp -d)"
-    for i in "${suitesparse}"/lib/lib*.a; do
-      ar -x $i
-    done
-    gcc *.o --shared -o "$out/lib/libsuitesparse.so"
-    )
-    cp "$out/lib/libsuitesparse.so" usr/lib
-    for i in umfpack cholmod amd camd colamd spqr; do
-      ln -s libsuitesparse.so "$out"/lib/lib$i.so;
-      ln -s libsuitesparse.so "usr"/lib/lib$i.so;
-    done
+  buildInputs =
+    [ libunwind llvm readline utf8proc zlib
+      double_conversion fftw fftwSinglePrec glpk gmp mpfr pcre
+      openblas arpack suitesparse
+    ];
+
+  nativeBuildInputs = [ gfortran git m4 patchelf perl which ];
+
+  makeFlags =
+    let
+      arch = head (splitString "-" stdenv.system);
+      march =
+        { "x86_64-linux" = "x86-64";
+          "x86_64-darwin" = "x86-64";
+          "i686-linux" = "i686";
+        }."${stdenv.system}" or (throw "unsupported system: ${stdenv.system}");
+    in [
+      "ARCH=${arch}"
+      "MARCH=${march}"
+      "JULIA_CPU_TARGET=${march}"
+      "PREFIX=$(out)"
+      "prefix=$(out)"
+      "SHELL=${stdenv.shell}"
+
+      "USE_SYSTEM_BLAS=1"
+      "LIBBLAS=-lopenblas"
+      "LIBBLASNAME=libopenblas"
+
+      "USE_SYSTEM_LAPACK=1"
+      "LIBLAPACK=-lopenblas"
+      "LIBLAPACKNAME=libopenblas"
+
+      "USE_SYSTEM_ARPACK=1"
+      "USE_SYSTEM_FFTW=1"
+      "USE_SYSTEM_GLPK=1"
+      "USE_SYSTEM_GMP=1"
+      "USE_SYSTEM_GRISU=1"
+      "USE_SYSTEM_LIBUNWIND=1"
+      "USE_SYSTEM_LLVM=1"
+      "USE_SYSTEM_MPFR=1"
+      "USE_SYSTEM_PATCHELF=1"
+      "USE_SYSTEM_PCRE=1"
+      "USE_SYSTEM_READLINE=1"
+      "USE_SYSTEM_SUITESPARSE=1"
+      "USE_SYSTEM_UTF8PROC=1"
+      "USE_SYSTEM_ZLIB=1"
+    ];
+
+  GLPK_PREFIX = "${glpk}/include";
+
+  NIX_CFLAGS_COMPILE = [ "-fPIC" ];
+
+  # Julia tries to load these libraries dynamically at runtime, but they can't be found.
+  # Easier by far to link against them as usual.
+  # These go in LDFLAGS, where they affect only Julia itself, and not NIX_LDFLAGS,
+  # where they would also be used for all the private libraries Julia builds.
+  LDFLAGS = [
+    "-larpack"
+    "-lfftw3_threads"
+    "-lfftw3f_threads"
+    "-lglpk"
+    "-lgmp"
+    "-lmpfr"
+    "-lopenblas"
+    "-lpcre"
+    "-lsuitesparse"
+    "-lz"
+  ];
+
+  preConfigure = ''
+    export PATH="$PATH:${stdenv.cc.libc}/sbin"
   '';
 
   dontStrip = true;
+  dontPatchELF = true;
 
   enableParallelBuilding = true;
 
@@ -147,8 +143,8 @@ stdenv.mkDerivation rec {
     description = "High-level performance-oriented dynamical language for technical computing";
     homepage = "http://julialang.org/";
     license = stdenv.lib.licenses.mit;
-    maintainers = [ stdenv.lib.maintainers.raskin ];
-    platforms = with stdenv.lib.platforms; linux;
+    maintainers = with stdenv.lib.maintainers; [ raskin ttuegel ];
+    platforms = [ "i686-linux" "x86_64-linux" "x86_64-darwin" ];
     broken = false;
   };
 }
diff --git a/pkgs/development/compilers/julia/0001-work-around-buggy-wcwidth.patch b/pkgs/development/compilers/julia/0001-work-around-buggy-wcwidth.patch
new file mode 100644
index 0000000000000..7c4870fb2a892
--- /dev/null
+++ b/pkgs/development/compilers/julia/0001-work-around-buggy-wcwidth.patch
@@ -0,0 +1,24 @@
+From b9070aeab0ab672ffe321089631f9afe263b0caa Mon Sep 17 00:00:00 2001
+From: Thomas Tuegel <ttuegel@gmail.com>
+Date: Thu, 4 Jun 2015 12:03:32 -0500
+Subject: [PATCH] work around buggy wcwidth
+
+---
+ test/unicode.jl | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/test/unicode.jl b/test/unicode.jl
+index 52c3e6a..f1ef698 100644
+--- a/test/unicode.jl
++++ b/test/unicode.jl
+@@ -103,5 +103,6 @@ end
+ 
+ # handling of embedded NUL chars (#10958)
+ @test length("\0w") == length("\0α") == 2
+-@test strwidth("\0w") == strwidth("\0α") == 1
++@test strwidth("\0w") == charwidth('\0') + charwidth('w')
++@test strwidth("\0α") == charwidth('\0') + charwidth('α')
+ @test normalize_string("\0W", casefold=true) == "\0w"
+-- 
+2.4.1
+
diff --git a/pkgs/development/compilers/llvm/3.4/llvm.nix b/pkgs/development/compilers/llvm/3.4/llvm.nix
index d3beb2e7461cc..a44f157a13e5b 100644
--- a/pkgs/development/compilers/llvm/3.4/llvm.nix
+++ b/pkgs/development/compilers/llvm/3.4/llvm.nix
@@ -44,6 +44,7 @@ in stdenv.mkDerivation rec {
     "-DCMAKE_BUILD_TYPE=Release"
     "-DLLVM_BUILD_TESTS=ON"
     "-DLLVM_ENABLE_FFI=ON"
+    "-DLLVM_REQUIRES_RTTI=1"
     "-DLLVM_BINUTILS_INCDIR=${binutils}/include"
     "-DCMAKE_CXX_FLAGS=-std=c++11"
   ] ++ stdenv.lib.optional (!isDarwin) "-DBUILD_SHARED_LIBS=ON";
diff --git a/pkgs/development/compilers/uhc/default.nix b/pkgs/development/compilers/uhc/default.nix
index c788112fb91c6..64d51f971b9b0 100644
--- a/pkgs/development/compilers/uhc/default.nix
+++ b/pkgs/development/compilers/uhc/default.nix
@@ -2,13 +2,13 @@
 
 let wrappedGhc = ghcWithPackages (hpkgs: with hpkgs; [shuffle hashable mtl network uhc-util uulib] );
 in stdenv.mkDerivation rec {
-  version = "1.1.9.0";
+  version = "1.1.9.1";
   name = "uhc-${version}";
 
   src = fetchgit {
     url = "https://github.com/UU-ComputerScience/uhc.git";
-    rev = "0363bbcf4cf8c47d30c3a188e3e53b3f8454bbe4";
-    sha256 = "0sa9b341mm5ggmbydc33ja3h7k9w65qnki9gsaagb06gkvvqc7c2";
+    rev = "c4955d01089485cdcfec785fe2bbcdf2253bee4b";
+    sha256 = "1n2bfbzni2hwv90z3mgn0x3l3jwc7sy8ryk81p5mlvlis1wzxnq3";
   };
 
   postUnpack = "sourceRoot=\${sourceRoot}/EHC";