From 1526faf075bdb52ece4fd5c259c54c66d1fcf003 Mon Sep 17 00:00:00 2001 From: Pontus Stenetorp Date: Wed, 1 Dec 2021 16:22:44 +0000 Subject: [PATCH] julia_17-bin: init at 1.7.0 https://github.com/JuliaLang/julia/blob/v1.7.0/NEWS.md --- pkgs/development/compilers/julia/1.7-bin.nix | 71 +++++++++++++++++++ ...able-parallel-unit-tests-for-sandbox.patch | 30 ++++++++ pkgs/top-level/all-packages.nix | 3 +- 3 files changed, 103 insertions(+), 1 deletion(-) create mode 100644 pkgs/development/compilers/julia/1.7-bin.nix create mode 100644 pkgs/development/compilers/julia/patches/1.7-bin/0005-nix-Enable-parallel-unit-tests-for-sandbox.patch diff --git a/pkgs/development/compilers/julia/1.7-bin.nix b/pkgs/development/compilers/julia/1.7-bin.nix new file mode 100644 index 000000000000..99677636b282 --- /dev/null +++ b/pkgs/development/compilers/julia/1.7-bin.nix @@ -0,0 +1,71 @@ +{ autoPatchelfHook, fetchurl, lib, stdenv }: + +stdenv.mkDerivation rec { + pname = "julia-bin"; + version = "1.7.0"; + + src = { + x86_64-linux = fetchurl { + url = "https://julialang-s3.julialang.org/bin/linux/x64/${lib.versions.majorMinor version}/julia-${version}-linux-x86_64.tar.gz"; + sha256 = "0h0d9kfg00vglg2qmcx0k8c2gzn445i0xbsfw6wy1idf72kg76bj"; + }; + }.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}"); + + # Julia’s source files are in different locations for source and binary + # releases. Thus we temporarily create a symlink to allow us to share patches + # with source releases. + prePatch = '' + ln -s share/julia/test + ''; + patches = [ + # Source release Nix patch(es) relevant for binary releases as well. + ./patches/1.7-bin/0005-nix-Enable-parallel-unit-tests-for-sandbox.patch + ]; + postPatch = '' + # Revert symlink hack. + rm test + + # Julia fails to pick up our Certification Authority root certificates, but + # it provides its own so we can simply disable the test. Patching in the + # dynamic path to ours require us to rebuild the Julia system image. + substituteInPlace share/julia/stdlib/v${lib.versions.majorMinor version}/NetworkOptions/test/runtests.jl \ + --replace '@test ca_roots_path() != bundled_ca_roots()' \ + '@test_skip ca_roots_path() != bundled_ca_roots()' + ''; + + nativeBuildInputs = [ autoPatchelfHook ]; + + installPhase = '' + runHook preInstall + cp -r . $out + runHook postInstall + ''; + + # Breaks backtraces, etc. + dontStrip = true; + + doInstallCheck = true; + preInstallCheck = '' + # Some tests require read/write access to $HOME. + export HOME="$TMPDIR" + ''; + installCheckPhase = '' + runHook preInstallCheck + # Command lifted from `test/Makefile`. + $out/bin/julia \ + --check-bounds=yes \ + --startup-file=no \ + --depwarn=error \ + $out/share/julia/test/runtests.jl + runHook postInstallCheck + ''; + + meta = { + description = "High-level, high-performance dynamic language for technical computing."; + homepage = "https://julialang.org"; + # Bundled and linked with various GPL code, although Julia itself is MIT. + license = lib.licenses.gpl2Plus; + maintainers = with lib.maintainers; [ ninjin raskin ]; + platforms = [ "x86_64-linux" ]; + }; +} diff --git a/pkgs/development/compilers/julia/patches/1.7-bin/0005-nix-Enable-parallel-unit-tests-for-sandbox.patch b/pkgs/development/compilers/julia/patches/1.7-bin/0005-nix-Enable-parallel-unit-tests-for-sandbox.patch new file mode 100644 index 000000000000..243a9cfd76ae --- /dev/null +++ b/pkgs/development/compilers/julia/patches/1.7-bin/0005-nix-Enable-parallel-unit-tests-for-sandbox.patch @@ -0,0 +1,30 @@ +From 44c2c979c4f2222567ce65f506cf47fb87482348 Mon Sep 17 00:00:00 2001 +From: Pontus Stenetorp +Date: Thu, 8 Apr 2021 04:37:44 +0000 +Subject: [PATCH 5/6] nix: Enable parallel unit tests for sandbox + +Disabled by default due to lack of networking in the Nix sandbox. This +greatly speeds up the build process on a multi-core system. +--- + test/runtests.jl | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/test/runtests.jl b/test/runtests.jl +index 2f9cd058bb..2f8c19fa32 100644 +--- a/test/runtests.jl ++++ b/test/runtests.jl +@@ -83,8 +83,9 @@ prepend!(tests, linalg_tests) + import LinearAlgebra + cd(@__DIR__) do + n = 1 +- if net_on +- n = min(Sys.CPU_THREADS, length(tests)) ++ if net_on || haskey(ENV, "NIX_BUILD_CORES") ++ x = haskey(ENV, "NIX_BUILD_CORES") ? parse(Int, ENV["NIX_BUILD_CORES"]) : Sys.CPU_THREADS ++ n = min(x, Sys.CPU_THREADS, length(tests)) + n > 1 && addprocs_with_testenv(n) + LinearAlgebra.BLAS.set_num_threads(1) + end +-- +2.29.3 + diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 031e293860f2..18d29b659ca1 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -12440,9 +12440,10 @@ with pkgs; julia_10-bin = callPackage ../development/compilers/julia/1.0-bin.nix { }; julia_16-bin = callPackage ../development/compilers/julia/1.6-bin.nix { }; + julia_17-bin = callPackage ../development/compilers/julia/1.7-bin.nix { }; julia-lts-bin = julia_10-bin; - julia-stable-bin = julia_16-bin; + julia-stable-bin = julia_17-bin; julia-bin = julia-stable-bin; jwasm = callPackage ../development/compilers/jwasm { };