diff --git a/pkgs/development/compilers/julia/default.nix b/pkgs/development/compilers/julia/default.nix index 7fa12d495aa6..3e45fc6d5e35 100644 --- a/pkgs/development/compilers/julia/default.nix +++ b/pkgs/development/compilers/julia/default.nix @@ -1,21 +1,21 @@ { stdenv, fetchgit, gfortran, perl, m4, llvm, gmp, pcre, zlib , readline, fftwSinglePrec, fftw, libunwind, suitesparse, glpk, fetchurl , ncurses, libunistring, lighttpd, patchelf, openblas, liblapack - , tcl, tk, xproto, libX11, git + , tcl, tk, xproto, libX11, git, mpfr } : let realGcc = stdenv.gcc.gcc; in stdenv.mkDerivation rec { pname = "julia"; - date = "20130205"; + date = "20130611"; name = "${pname}-git-${date}"; grisu_ver = "1.1.1"; dsfmt_ver = "2.2"; openblas_ver = "v0.2.2"; lapack_ver = "3.4.1"; - arpack_ver = "3.1.2"; + arpack_ver = "3.1.3"; clp_ver = "1.14.5"; lighttpd_ver = "1.4.29"; patchelf_ver = "0.6"; @@ -36,9 +36,9 @@ stdenv.mkDerivation rec { sha256 = "19ffec70f9678f5c159feadc036ca47720681b782910fbaa95aa3867e7e86d8e"; }; arpack_src = fetchurl { - url = "http://forge.scilab.org/index.php/p/arpack-ng/downloads/497/get/"; - name = "arpack-ng_${arpack_ver}.tar.gz"; - sha256 = "1wk06bdjgap4hshx0lswzi7vxy2lrdx353y1k7yvm97mpsjvsf4k"; + url = "http://forge.scilab.org/index.php/p/arpack-ng/downloads/607/get/"; + name = "arpack-ng-${arpack_ver}.tar.gz"; + sha256 = "039w7j3dr1xy35a3hp92zg2g92gmjq6xsv0g4awlb4cffy09nr2d"; }; lapack_src = fetchurl { url = "http://www.netlib.org/lapack/lapack-${lapack_ver}.tgz"; @@ -65,17 +65,17 @@ stdenv.mkDerivation rec { src = fetchgit { url = "git://github.com/JuliaLang/julia.git"; - rev = "efc696bf74eec7605b4da19f6f1605ba99959ed3"; - sha256 = "19if7aj3mrp84dg9g2d3zbhasrq0nz28djl9a01m0y4y9bfymp7s"; + rev = "60cc4e44bf415dcda90f2bbe22300f842fe44098"; + sha256 = "018s0zyvdkxjldbvcdv40q3v2gcjznyyql5pv3zhhy1iq11jddfz"; }; buildInputs = [ gfortran perl m4 gmp pcre llvm readline zlib fftw fftwSinglePrec libunwind suitesparse glpk ncurses libunistring patchelf - openblas liblapack tcl tk xproto libX11 git + openblas liblapack tcl tk xproto libX11 git mpfr ]; configurePhase = '' - for i in GMP LLVM PCRE LAPACK OPENBLAS BLAS READLINE FFTW LIBUNWIND SUITESPARSE GLPK LIGHTTPD ZLIB; + for i in GMP LLVM PCRE LAPACK OPENBLAS BLAS READLINE FFTW LIBUNWIND SUITESPARSE GLPK LIGHTTPD ZLIB MPFR; do makeFlags="$makeFlags USE_SYSTEM_$i=1 " done @@ -90,7 +90,7 @@ 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 "''} + ''export NIX_LDFLAGS="$NIX_LDFLAGS -L${realGcc}/lib -L${realGcc}/lib64 -lpcre -llapack -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" @@ -110,6 +110,21 @@ stdenv.mkDerivation rec { 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 ''; preInstall = '' diff --git a/pkgs/development/libraries/mpfr/3.1.2.nix b/pkgs/development/libraries/mpfr/3.1.2.nix new file mode 100644 index 000000000000..fd164cf91052 --- /dev/null +++ b/pkgs/development/libraries/mpfr/3.1.2.nix @@ -0,0 +1,51 @@ + +{stdenv, fetchurl, gmp}: + +stdenv.mkDerivation (rec { + name = "mpfr-3.1.2"; + + src = fetchurl { + url = "mirror://gnu/mpfr/${name}.tar.bz2"; + sha256 = "0sqvpfkzamxdr87anzakf9dhkfh15lfmm5bsqajk02h1mxh3zivr"; + }; + + buildInputs = [ gmp ]; + + doCheck = true; + + enableParallelBuilding = true; + + meta = { + homepage = http://www.mpfr.org/; + description = "GNU MPFR, a library for multiple-precision floating-point arithmetic"; + + longDescription = '' + The GNU MPFR library is a C library for multiple-precision + floating-point computations with correct rounding. MPFR is + based on the GMP multiple-precision library. + + The main goal of MPFR is to provide a library for + multiple-precision floating-point computation which is both + efficient and has a well-defined semantics. It copies the good + ideas from the ANSI/IEEE-754 standard for double-precision + floating-point arithmetic (53-bit mantissa). + ''; + + license = "LGPLv2+"; + + maintainers = [ stdenv.lib.maintainers.ludo ]; + platforms = stdenv.lib.platforms.all; + }; +} + +// + +(stdenv.lib.optionalAttrs stdenv.isFreeBSD { + /* Work around a FreeBSD bug that otherwise leads to segfaults in + the test suite: + http://hydra.bordeaux.inria.fr/build/34862 + http://websympa.loria.fr/wwsympa/arc/mpfr/2011-10/msg00015.html + http://www.freebsd.org/cgi/query-pr.cgi?pr=161344 + */ + configureFlags = [ "--disable-thread-safe" ]; + })) diff --git a/pkgs/development/libraries/suitesparse/default.nix b/pkgs/development/libraries/suitesparse/default.nix index e3a7fbb5a086..017620839346 100644 --- a/pkgs/development/libraries/suitesparse/default.nix +++ b/pkgs/development/libraries/suitesparse/default.nix @@ -1,10 +1,10 @@ { stdenv, fetchurl, blas, liblapack, gfortran } : stdenv.mkDerivation rec { - version = "4.0.0"; + version = "4.2.0"; name = "suitesparse-${version}"; src = fetchurl { url = "http://www.cise.ufl.edu/research/sparse/SuiteSparse/SuiteSparse-${version}.tar.gz" ; - sha256 = "1nvbdw10wa6654k8sa2vhr607q6fflcywyji5xd767cqpwag4v5j"; + sha256 = "0i0ivsc5sr3jdz6nqq4wz5lwxc8rpnkqgddyhqqgfhwzgrcqh9v6"; }; buildInputs = [blas liblapack gfortran] ; patches = [./disable-metis.patch]; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index c0f95e08e62a..833417518993 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2625,6 +2625,7 @@ let julia = callPackage ../development/compilers/julia { liblapack = liblapack.override {shared = true;}; + mpfr = mpfr_3_1_2; fftw = fftw.override {pthreads = true;}; fftwSinglePrec = fftwSinglePrec.override {pthreads = true;}; }; @@ -3998,6 +3999,7 @@ let #GMP ex-satellite, so better keep it near gmp mpfr = callPackage ../development/libraries/mpfr { }; + mpfr_3_1_2 = callPackage ../development/libraries/mpfr/3.1.2.nix { }; gst_all = { inherit (pkgs) gstreamer gnonlin gst_python qt_gstreamer;