julia_05: init at 0.5.0; right now backtrace-related tests are disabled because they fail in this configuration, but the rest works

+192
+185
pkgs/development/compilers/julia/0.5.nix
··· 1 + { stdenv, fetchgit, fetchurl 2 + # build tools 3 + , gfortran, m4, makeWrapper, patchelf, perl, which, python2 4 + , runCommand 5 + # libjulia dependencies 6 + , libunwind, readline, utf8proc, zlib 7 + , llvm, libffi, ncurses 8 + # standard library dependencies 9 + , curl, fftwSinglePrec, fftw, gmp, libgit2, mpfr, openlibm, openspecfun, pcre2 10 + # linear algebra 11 + , openblas, arpack, suitesparse 12 + # Darwin frameworks 13 + , CoreServices, ApplicationServices 14 + }: 15 + 16 + with stdenv.lib; 17 + 18 + # All dependencies must use the same OpenBLAS. 19 + let 20 + arpack_ = arpack; 21 + suitesparse_ = suitesparse; 22 + in 23 + let 24 + arpack = arpack_.override { inherit openblas; }; 25 + suitesparse = suitesparse_.override { inherit openblas; }; 26 + in 27 + 28 + let 29 + dsfmtVersion = "2.2.3"; 30 + dsfmt = fetchurl { 31 + url = "http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/dSFMT-src-${dsfmtVersion}.tar.gz"; 32 + sha256 = "03kaqbjbi6viz0n33dk5jlf6ayxqlsq4804n7kwkndiga9s4hd42"; 33 + }; 34 + 35 + libuvVersion = "8d5131b6c1595920dd30644cd1435b4f344b46c8"; 36 + libuv = fetchurl { 37 + url = "https://api.github.com/repos/JuliaLang/libuv/tarball/${libuvVersion}"; 38 + sha256 = "1886r04igcs0k24sbb61wn10f8ki35c39jsnc5djv3rg4hvn9l49"; 39 + }; 40 + 41 + rmathVersion = "0.1"; 42 + rmath-julia = fetchurl { 43 + url = "https://api.github.com/repos/JuliaLang/Rmath-julia/tarball/v${rmathVersion}"; 44 + sha256 = "0ai5dhjc43zcvangz123ryxmlbm51s21rg13bllwyn98w67arhb4"; 45 + }; 46 + 47 + virtualenvVersion = "15.0.0"; 48 + virtualenv = fetchurl { 49 + url = "mirror://pypi/v/virtualenv/virtualenv-${virtualenvVersion}.tar.gz"; 50 + sha256 = "06fw4liazpx5vf3am45q2pdiwrv0id7ckv7n6zmpml29x6vkzmkh"; 51 + }; 52 + in 53 + 54 + stdenv.mkDerivation rec { 55 + pname = "julia"; 56 + version = "0.5.0"; 57 + name = "${pname}-${version}"; 58 + 59 + src = fetchurl { 60 + url = "https://github.com/JuliaLang/${pname}/releases/download/v${version}/${name}.tar.gz"; 61 + sha256 = "0bhickil88lalp9jdj1kmf4is70zinhx8ha9rng0g3z50r4a2qmv"; 62 + }; 63 + prePatch = '' 64 + mkdir deps/srccache 65 + cp "${dsfmt}" "./deps/srccache/dsfmt-${dsfmtVersion}.tar.gz" 66 + cp "${rmath-julia}" "./deps/srccache/Rmath-julia-${rmathVersion}.tar.gz" 67 + cp "${libuv}" "./deps/srccache/libuv-${libuvVersion}.tar.gz" 68 + cp "${virtualenv}" "./deps/srccache/virtualenv-${virtualenvVersion}.tar.gz" 69 + ''; 70 + 71 + patches = [ 72 + ./0001.1-use-system-utf8proc.patch 73 + ./0002-use-system-suitesparse.patch 74 + ]; 75 + 76 + postPatch = '' 77 + patchShebangs . contrib 78 + for i in backtrace replutil cmdlineargs compile; do 79 + mv test/$i.jl{,.off} 80 + touch test/$i.jl 81 + done 82 + ''; 83 + 84 + buildInputs = [ 85 + arpack fftw fftwSinglePrec gmp libgit2 libunwind mpfr 86 + pcre2.dev openblas openlibm openspecfun readline suitesparse utf8proc 87 + zlib llvm 88 + ] 89 + ++ stdenv.lib.optionals stdenv.isDarwin [CoreServices ApplicationServices] 90 + ; 91 + 92 + nativeBuildInputs = [ curl gfortran m4 makeWrapper patchelf perl python2 which ]; 93 + 94 + makeFlags = 95 + let 96 + arch = head (splitString "-" stdenv.system); 97 + march = { "x86_64" = "x86-64"; "i686" = "pentium4"; }."${arch}" 98 + or (throw "unsupported architecture: ${arch}"); 99 + # Julia requires Pentium 4 (SSE2) or better 100 + cpuTarget = { "x86_64" = "x86-64"; "i686" = "pentium4"; }."${arch}" 101 + or (throw "unsupported architecture: ${arch}"); 102 + in [ 103 + "ARCH=${arch}" 104 + "MARCH=${march}" 105 + "JULIA_CPU_TARGET=${cpuTarget}" 106 + "PREFIX=$(out)" 107 + "prefix=$(out)" 108 + "SHELL=${stdenv.shell}" 109 + 110 + "USE_SYSTEM_BLAS=1" 111 + "USE_BLAS64=${if openblas.blas64 then "1" else "0"}" 112 + "LIBBLAS=-lopenblas" 113 + "LIBBLASNAME=libopenblas" 114 + 115 + "USE_SYSTEM_LAPACK=1" 116 + "LIBLAPACK=-lopenblas" 117 + "LIBLAPACKNAME=libopenblas" 118 + 119 + "USE_SYSTEM_SUITESPARSE=1" 120 + "SUITESPARSE_LIB=-lsuitesparse" 121 + "SUITESPARSE_INC=-I${suitesparse}/include" 122 + 123 + "USE_SYSTEM_ARPACK=1" 124 + "USE_SYSTEM_FFTW=1" 125 + "USE_SYSTEM_GMP=1" 126 + "USE_SYSTEM_LIBGIT2=1" 127 + "USE_SYSTEM_LIBUNWIND=1" 128 + 129 + "USE_SYSTEM_LLVM=1" 130 + "LLVM_VER=3.8.1" 131 + 132 + "USE_SYSTEM_MPFR=1" 133 + "USE_SYSTEM_OPENLIBM=1" 134 + "USE_SYSTEM_OPENSPECFUN=1" 135 + "USE_SYSTEM_PATCHELF=1" 136 + "USE_SYSTEM_PCRE=1" 137 + "PCRE_CONFIG=${pcre2.dev}/bin/pcre2-config" 138 + "PCRE_INCL_PATH=${pcre2.dev}/include/pcre2.h" 139 + "USE_SYSTEM_READLINE=1" 140 + "USE_SYSTEM_UTF8PROC=1" 141 + "USE_SYSTEM_ZLIB=1" 142 + ]; 143 + 144 + NIX_CFLAGS_COMPILE = [ "-fPIC" ]; 145 + 146 + LD_LIBRARY_PATH = makeLibraryPath [ 147 + arpack fftw fftwSinglePrec gmp libgit2 mpfr openblas openlibm 148 + openspecfun pcre2 suitesparse llvm 149 + ]; 150 + 151 + dontStrip = true; 152 + dontPatchELF = true; 153 + 154 + enableParallelBuilding = true; 155 + 156 + doCheck = true; 157 + checkTarget = "testall"; 158 + # Julia's tests require read/write access to $HOME 159 + preCheck = '' 160 + export HOME="$NIX_BUILD_TOP" 161 + set 162 + ''; 163 + 164 + preBuild = '' 165 + sed -e '/^install:/s@[^ ]*/doc/[^ ]*@@' -i Makefile 166 + sed -e '/[$](DESTDIR)[$](docdir)/d' -i Makefile 167 + ''; 168 + 169 + postInstall = '' 170 + for prog in "$out/bin/julia" "$out/bin/julia-debug"; do 171 + wrapProgram "$prog" \ 172 + --prefix LD_LIBRARY_PATH : "$LD_LIBRARY_PATH:$out/lib/julia" \ 173 + --prefix PATH : "${stdenv.lib.makeBinPath [ curl ]}" 174 + done 175 + ''; 176 + 177 + meta = { 178 + description = "High-level performance-oriented dynamical language for technical computing"; 179 + homepage = "http://julialang.org/"; 180 + license = stdenv.lib.licenses.mit; 181 + maintainers = with stdenv.lib.maintainers; [ raskin ]; 182 + platforms = [ "i686-linux" "x86_64-linux" "x86_64-darwin" ]; 183 + broken = stdenv.isi686; 184 + }; 185 + }
+7
pkgs/top-level/all-packages.nix
··· 5051 5051 llvm = llvm_37; 5052 5052 }; 5053 5053 5054 + julia_05 = callPackage ../development/compilers/julia/0.5.nix { 5055 + gmp = gmp6; 5056 + openblas = openblasCompat; 5057 + inherit (darwin.apple_sdk.frameworks) CoreServices ApplicationServices; 5058 + llvm = llvm_38; 5059 + }; 5060 + 5054 5061 julia-git = lowPrio (callPackage ../development/compilers/julia/git.nix { 5055 5062 gmp = gmp6; 5056 5063 openblas = openblasCompat;