Change:
Right now we have three different versions of julia (0.6.4, 0.7.0, 1.0.1) in nixpkgs-unstable. However, the latest arpack update broke julia-0.6.4. Are all those versions of julia required or is it possible to remove old version? CC This is the build that broke julia-0.6
I don't know how to fix it, but I do need 0.6.4. I've just been pinning it for now.
Many Julia packages aren't updated for 1.0, or even 0.7 (as it's a slightly more compatible version of 1.0).
Is this still true? What packages, specifically? In my opinion 1.0.2 should be made the default version immediately on nixpkgs master I would be fine with earlier versions being dropped as well on nixpkgs master. Those that need them can install from older versions of nixpkgs julia 0.7 and 1.0 actually overspecify their dependencies, last I looked. Many pieces of the standard library were moved to packages, so FFTW, arpack, and a few others are not actually required on 0.7 and higher. EDIT: Also, it would be nice if aliases are set up such that --, so that multiple minor versions of julia can be installed in parallel in the future without the names breaking.
If 1.0 and 0.7 are so similar is it really necessary to keep julia 0.7? Looking ahead to release 18.09: what can we expect in terms of package support until February? Is it realistic to make 1.0 the main version until then?
Julia 0.7 is just a compatibility version of 1.0. They released simultaneously. I need 0.6 for a program I run, but AFAIK that program only needs , which is only broken on Windows and Mac. Though, does the Nix package support Mac? is pretty popular.
Most packages that are no longer in development only support 0.6. 0.7 took a while to release.
According to hydra builds on darwin.
Do I understand correctly that the current proposal is (for master): → → → (if the build can be fixed with reasonable effort; please ping me if a PR with a fix exists/ever appears) drop
Yes. Actually, I don't think it makes sense to have a since each 0.x version is incompatible with others. So just having is fine (for as long as julia 0.6 is kept in nixpkgs). Julia 0.7 is essentially equivalent to julia 1.0, except it contains warnings rather than errors for most syntax/methods that worked in julia 0.6. So the entire point of the release is to aid people in upgrading to julia 1.0. In this sense, it would be "nice" if were also available in the first release of nixpkgs that defaults to julia 1.0. But I have no personal stake in this.
OK, just changed the default to 1.0.1.
It'd be nice if a less hacky version of this gist was in Nixpkgs master.
Julia 0.6 is broken on master and release-19.03. This version is not supported by upstream anymore. Can it be removed? For everyone who still needs to run a legacy version can install it directly from the 18.09 channel. ()
Sure.

Discussion:
<del> From e2b0ed6664fe4adfd0f9ce8fa14732d47b30ab5c Mon Sep 17 00:00:00 2001 From: Thomas Tuegel <ttuegel@gmail.com> Date: Sat, 10 Oct 2015 16:18:53 -0500 Subject: [PATCH 2/3] use system suitesparse --- base/sparse/cholmod.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/sparse/cholmod.jl b/base/sparse/cholmod.jl index ec7e980..f834cc1 100644 --- a/base/sparse/cholmod.jl +++ b/base/sparse/cholmod.jl @@ -151,7 +151,7 @@ function __init__() # Register gc tracked allocator if CHOLMOD is new enough if current_version >= v"3.0.0" -            cnfg = cglobal((:SuiteSparse_config, :libsuitesparseconfig), Ptr{Void}) +            cnfg = cglobal((:SuiteSparse_config, :libsuitesparse), Ptr{Void}) unsafe_store!(cnfg, cglobal(:jl_malloc, Ptr{Void}), 1) unsafe_store!(cnfg, cglobal(:jl_calloc, Ptr{Void}), 2) unsafe_store!(cnfg, cglobal(:jl_realloc, Ptr{Void}), 3) -- 2.5.2 </del>

<del> { stdenv, fetchurl, fetchzip # build tools , gfortran, m4, makeWrapper, patchelf, perl, which, python2 # libjulia dependencies , libunwind, readline, utf8proc, zlib , llvm # standard library dependencies , curl, fftwSinglePrec, fftw, gmp, libgit2, mpfr, openlibm, openspecfun, pcre2 # linear algebra , openblas, arpack, suitesparse # Darwin frameworks , CoreServices, ApplicationServices }: with stdenv.lib; # All dependencies must use the same OpenBLAS. let arpack_ = arpack; suitesparse_ = suitesparse; in let arpack = arpack_.override { inherit openblas; }; suitesparse = suitesparse_.override { inherit openblas; }; in let dsfmtVersion = "2.2.3"; dsfmt = fetchurl { url = "http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/dSFMT-src-${dsfmtVersion}.tar.gz"; sha256 = "03kaqbjbi6viz0n33dk5jlf6ayxqlsq4804n7kwkndiga9s4hd42"; }; libuvVersion = "d8ab1c6a33e77bf155facb54215dd8798e13825d"; libuv = fetchurl { url = "https://api.github.com/repos/JuliaLang/libuv/tarball/${libuvVersion}"; sha256 = "0q5ahc9dzca2yc6cjbhpfi9nwc4yhhjbgxgsychksn13d24gv7ba"; }; rmathVersion = "0.1"; rmath-julia = fetchurl { url = "https://api.github.com/repos/JuliaLang/Rmath-julia/tarball/v${rmathVersion}"; sha256 = "1qyps217175qhid46l8f5i1v8i82slgp23ia63x2hzxwfmx8617p"; }; virtualenvVersion = "15.0.0"; virtualenv = fetchurl { url = "mirror://pypi/v/virtualenv/virtualenv-${virtualenvVersion}.tar.gz"; sha256 = "06fw4liazpx5vf3am45q2pdiwrv0id7ckv7n6zmpml29x6vkzmkh"; }; majorVersion = "0"; minorVersion = "6"; maintenanceVersion = "4"; version = "${majorVersion}.${minorVersion}.${maintenanceVersion}"; in stdenv.mkDerivation rec { pname = "julia"; inherit version; name = "${pname}-${version}"; src = fetchzip { url = "https://github.com/JuliaLang/${pname}/releases/download/v${version}/${name}.tar.gz"; sha256 = "09axkkj914al7lzvcvhb33hz5wp083lk18llsvrn622fqhmyqabl"; }; prePatch = '' mkdir deps/srccache cp "${dsfmt}" "./deps/srccache/dsfmt-${dsfmtVersion}.tar.gz" cp "${rmath-julia}" "./deps/srccache/Rmath-julia-${rmathVersion}.tar.gz" cp "${libuv}" "./deps/srccache/libuv-${libuvVersion}.tar.gz" cp "${virtualenv}" "./deps/srccache/virtualenv-${virtualenvVersion}.tar.gz" ''; patches = [ ./0001.1-use-system-utf8proc.patch ./0002-use-system-suitesparse.patch ]; postPatch = '' patchShebangs . contrib for i in backtrace replutil cmdlineargs compile; do mv test/$i.jl{,.off} touch test/$i.jl done sed -e 's/Invalid Content-Type:/invalid Content-Type:/g' -i test/libgit2.jl sed -e 's/Failed to resolve /failed to resolve /g' -i test/libgit2.jl ''; buildInputs = [ arpack fftw fftwSinglePrec gmp libgit2 libunwind mpfr pcre2.dev openblas openlibm openspecfun readline suitesparse utf8proc zlib llvm ] ++ stdenv.lib.optionals stdenv.isDarwin [CoreServices ApplicationServices] ; nativeBuildInputs = [ curl gfortran m4 makeWrapper patchelf perl python2 which ]; makeFlags = let arch = head (splitString "-" stdenv.hostPlatform.system); march = { "x86_64" = "x86-64"; "i686" = "pentium4"; }."${arch}" or (throw "unsupported architecture: ${arch}"); # Julia requires Pentium 4 (SSE2) or better cpuTarget = { "x86_64" = "x86-64"; "i686" = "pentium4"; }."${arch}" or (throw "unsupported architecture: ${arch}"); in [ "ARCH=${arch}" "MARCH=${march}" "JULIA_CPU_TARGET=${cpuTarget}" "PREFIX=$(out)" "prefix=$(out)" "SHELL=${stdenv.shell}" "USE_SYSTEM_BLAS=1" "USE_BLAS64=${if openblas.blas64 then "1" else "0"}" "LIBBLAS=-lopenblas" "LIBBLASNAME=libopenblas" "USE_SYSTEM_LAPACK=1" "LIBLAPACK=-lopenblas" "LIBLAPACKNAME=libopenblas" "USE_SYSTEM_SUITESPARSE=1" "SUITESPARSE_LIB=-lsuitesparse" "SUITESPARSE_INC=-I${suitesparse}/include" "USE_SYSTEM_ARPACK=1" "USE_SYSTEM_FFTW=1" "USE_SYSTEM_GMP=1" "USE_SYSTEM_LIBGIT2=1" "USE_SYSTEM_LIBUNWIND=1" "USE_SYSTEM_LLVM=1" "LLVM_VER=3.9.1" "USE_SYSTEM_MPFR=1" "USE_SYSTEM_OPENLIBM=1" "USE_SYSTEM_OPENSPECFUN=1" "USE_SYSTEM_PATCHELF=1" "USE_SYSTEM_PCRE=1" "PCRE_CONFIG=${pcre2.dev}/bin/pcre2-config" "PCRE_INCL_PATH=${pcre2.dev}/include/pcre2.h" "USE_SYSTEM_READLINE=1" "USE_SYSTEM_UTF8PROC=1" "USE_SYSTEM_ZLIB=1" ]; NIX_CFLAGS_COMPILE = [ "-fPIC" ]; LD_LIBRARY_PATH = makeLibraryPath [ arpack fftw fftwSinglePrec gmp libgit2 mpfr openblas openlibm openspecfun pcre2 suitesparse llvm ]; dontStrip = true; dontPatchELF = true; enableParallelBuilding = true; doCheck = !stdenv.isDarwin; checkTarget = "testall"; # Julia's tests require read/write access to $HOME preCheck = '' export HOME="$NIX_BUILD_TOP" ''; preBuild = '' sed -e '/^install:/s@[^ ]*/doc/[^ ]*@@' -i Makefile sed -e '/[$](DESTDIR)[$](docdir)/d' -i Makefile export LD_LIBRARY_PATH=${LD_LIBRARY_PATH} ''; postInstall = '' # Symlink shared libraries from LD_LIBRARY_PATH into lib/julia, # as using a wrapper with LD_LIBRARY_PATH causes segmentation # faults when program returns an error: #   $ julia -e 'throw(Error())' find $(echo $LD_LIBRARY_PATH | sed 's|:| |g') -maxdepth 1 -name '*.${if stdenv.isDarwin then "dylib" else "so"}*' | while read lib; do if [[ ! -e $out/lib/julia/$(basename $lib) ]]; then ln -sv $lib $out/lib/julia/$(basename $lib) fi done ''; passthru = { inherit majorVersion minorVersion maintenanceVersion; site = "share/julia/site/v${majorVersion}.${minorVersion}"; }; meta = { description = "High-level performance-oriented dynamical language for technical computing"; homepage = https://julialang.org/; license = stdenv.lib.licenses.mit; maintainers = with stdenv.lib.maintainers; [ raskin ]; platforms = [ "i686-linux" "x86_64-linux" "x86_64-darwin" ]; broken = stdenv.isi686; }; } </del>

jikes = callPackage ../development/compilers/jikes { }; <del> julia_06 = callPackage ../development/compilers/julia { gmp = gmp6; openblas = openblasCompat; inherit (darwin.apple_sdk.frameworks) CoreServices ApplicationServices; llvm = llvm_39; }; </del> julia_07 = callPackage ../development/compilers/julia/0.7.nix { gmp = gmp6; openblas = openblasCompat;