diff --git a/pkgs/development/compilers/julia/1.6-bin.nix b/pkgs/development/compilers/julia/1.6-bin.nix index 5743681ae7f0..abd2235189e7 100644 --- a/pkgs/development/compilers/julia/1.6-bin.nix +++ b/pkgs/development/compilers/julia/1.6-bin.nix @@ -61,7 +61,7 @@ stdenv.mkDerivation rec { ''; meta = { - description = "High-level, high-performance dynamic language for technical computing."; + 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; diff --git a/pkgs/development/compilers/julia/1.0-bin.nix b/pkgs/development/compilers/julia/1.7-bin.nix similarity index 54% rename from pkgs/development/compilers/julia/1.0-bin.nix rename to pkgs/development/compilers/julia/1.7-bin.nix index dfda8da9e4de..0743fe3fdd72 100644 --- a/pkgs/development/compilers/julia/1.0-bin.nix +++ b/pkgs/development/compilers/julia/1.7-bin.nix @@ -1,43 +1,43 @@ -{ autoPatchelfHook, fetchurl, lib, makeWrapper, openssl, stdenv }: +{ autoPatchelfHook, fetchurl, lib, stdenv }: stdenv.mkDerivation rec { pname = "julia-bin"; - version = "1.0.5"; + 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 = "00vbszpjmz47nqy19v83xa463ajhzwanjyg5mvcfp9kvfw9xdvcx"; + 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 symlinks to allow us to share patches + # releases. Thus we temporarily create a symlink to allow us to share patches # with source releases. prePatch = '' - ln -s share/julia/stdlib/v${lib.versions.majorMinor version} stdlib ln -s share/julia/test ''; patches = [ # Source release Nix patch(es) relevant for binary releases as well. - ./patches/1.0-bin/0002-nix-Skip-tests-that-require-network-access.patch + ./patches/1.7-bin/0005-nix-Enable-parallel-unit-tests-for-sandbox.patch ]; postPatch = '' # Revert symlink hack. - rm stdlib test + 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()' ''; - buildInputs = [ makeWrapper ]; nativeBuildInputs = [ autoPatchelfHook ]; installPhase = '' runHook preInstall cp -r . $out - # Setting `LD_LIBRARY_PATH` resolves `Libdl` failures. Not sure why this is - # only necessary on v1.0.x and a cleaner solution is welcome, but after - # staring at `strace` for a few hours this is as clean as I could make it. - wrapProgram $out/bin/julia \ - --suffix LD_LIBRARY_PATH : $out/lib runHook postInstall ''; @@ -45,7 +45,6 @@ stdenv.mkDerivation rec { dontStrip = true; doInstallCheck = true; - installCheckInputs = [ openssl ]; preInstallCheck = '' # Some tests require read/write access to $HOME. export HOME="$TMPDIR" @@ -62,19 +61,11 @@ stdenv.mkDerivation rec { ''; meta = { - description = "High-level, high-performance dynamic language for technical computing"; + 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" ]; - knownVulnerabilities = [ - # Built with libgit2 v0.27.2: - # https://github.com/JuliaLang/julia/blob/e0837d1e64a9e4d17534a9f981e9a2a3f221356f/deps/libgit2.version - # https://nvd.nist.gov/vuln/detail/CVE-2020-12278 - "CVE-2020-12278" - # https://nvd.nist.gov/vuln/detail/CVE-2020-12279 - "CVE-2020-12279" - ]; }; } diff --git a/pkgs/development/compilers/julia/patches/1.0-bin/0002-nix-Skip-tests-that-require-network-access.patch b/pkgs/development/compilers/julia/patches/1.0-bin/0002-nix-Skip-tests-that-require-network-access.patch deleted file mode 100644 index 0de1f7c010d3..000000000000 --- a/pkgs/development/compilers/julia/patches/1.0-bin/0002-nix-Skip-tests-that-require-network-access.patch +++ /dev/null @@ -1,87 +0,0 @@ -From 4954b99efae367da49412edd31a7bd832ec62c69 Mon Sep 17 00:00:00 2001 -From: Pontus Stenetorp -Date: Mon, 15 Mar 2021 05:55:18 +0000 -Subject: [PATCH 2/3] nix: Skip tests that require network access - -Necessary as the Nix build sandbox does not permit network access. ---- - stdlib/Sockets/test/runtests.jl | 40 ++++++++++++++++----------------- - test/file.jl | 4 ++-- - 2 files changed, 22 insertions(+), 22 deletions(-) - -diff --git a/stdlib/Sockets/test/runtests.jl b/stdlib/Sockets/test/runtests.jl -index 6145f87616..9cc7a001e5 100644 ---- a/stdlib/Sockets/test/runtests.jl -+++ b/stdlib/Sockets/test/runtests.jl -@@ -151,33 +151,33 @@ defaultport = rand(2000:4000) - end - - @testset "getnameinfo on some unroutable IP addresses (RFC 5737)" begin -- @test getnameinfo(ip"192.0.2.1") == "192.0.2.1" -- @test getnameinfo(ip"198.51.100.1") == "198.51.100.1" -- @test getnameinfo(ip"203.0.113.1") == "203.0.113.1" -- @test getnameinfo(ip"0.1.1.1") == "0.1.1.1" -- @test getnameinfo(ip"::ffff:0.1.1.1") == "::ffff:0.1.1.1" -- @test getnameinfo(ip"::ffff:192.0.2.1") == "::ffff:192.0.2.1" -- @test getnameinfo(ip"2001:db8::1") == "2001:db8::1" -+ @test_skip getnameinfo(ip"192.0.2.1") == "192.0.2.1" -+ @test_skip getnameinfo(ip"198.51.100.1") == "198.51.100.1" -+ @test_skip getnameinfo(ip"203.0.113.1") == "203.0.113.1" -+ @test_skip getnameinfo(ip"0.1.1.1") == "0.1.1.1" -+ @test_skip getnameinfo(ip"::ffff:0.1.1.1") == "::ffff:0.1.1.1" -+ @test_skip getnameinfo(ip"::ffff:192.0.2.1") == "::ffff:192.0.2.1" -+ @test_skip getnameinfo(ip"2001:db8::1") == "2001:db8::1" - end - - @testset "getnameinfo on some valid IP addresses" begin - @test !isempty(getnameinfo(ip"::")::String) -- @test !isempty(getnameinfo(ip"0.0.0.0")::String) -- @test !isempty(getnameinfo(ip"10.1.0.0")::String) -- @test !isempty(getnameinfo(ip"10.1.0.255")::String) -- @test !isempty(getnameinfo(ip"10.1.255.1")::String) -- @test !isempty(getnameinfo(ip"255.255.255.255")::String) -- @test !isempty(getnameinfo(ip"255.255.255.0")::String) -- @test !isempty(getnameinfo(ip"192.168.0.1")::String) -- @test !isempty(getnameinfo(ip"::1")::String) -+ @test_skip !isempty(getnameinfo(ip"0.0.0.0")::String) -+ @test_skip !isempty(getnameinfo(ip"10.1.0.0")::String) -+ @test_skip !isempty(getnameinfo(ip"10.1.0.255")::String) -+ @test_skip !isempty(getnameinfo(ip"10.1.255.1")::String) -+ @test_skip !isempty(getnameinfo(ip"255.255.255.255")::String) -+ @test_skip !isempty(getnameinfo(ip"255.255.255.0")::String) -+ @test_skip !isempty(getnameinfo(ip"192.168.0.1")::String) -+ @test_skip !isempty(getnameinfo(ip"::1")::String) - end - - @testset "getaddrinfo" begin -- let localhost = getnameinfo(ip"127.0.0.1")::String -- @test !isempty(localhost) && localhost != "127.0.0.1" -- @test !isempty(getalladdrinfo(localhost)::Vector{IPAddr}) -- @test getaddrinfo(localhost, IPv4)::IPv4 != ip"0.0.0.0" -- @test try -+ let localhost = getnameinfo(ip"::")::String -+ @test_skip !isempty(localhost) && localhost != "127.0.0.1" -+ @test_skip !isempty(getalladdrinfo(localhost)::Vector{IPAddr}) -+ @test_skip getaddrinfo(localhost, IPv4)::IPv4 != ip"0.0.0.0" -+ @test_skip try - getaddrinfo(localhost, IPv6)::IPv6 != ip"::" - catch ex - isa(ex, Sockets.DNSError) && ex.code == Base.UV_EAI_NONAME && ex.host == localhost -diff --git a/test/file.jl b/test/file.jl -index e86476f975..579276f82c 100644 ---- a/test/file.jl -+++ b/test/file.jl -@@ -874,8 +874,8 @@ if !Sys.iswindows() || (Sys.windows_version() >= Sys.WINDOWS_VISTA_VER) - else - @test_throws ErrorException symlink(file, "ba\0d") - end --@test_throws ArgumentError download("good", "ba\0d") --@test_throws ArgumentError download("ba\0d", "good") -+@test_skip @test_throws ArgumentError download("good", "ba\0d") -+@test_skip @test_throws ArgumentError download("ba\0d", "good") - - ################### - # walkdir # --- -2.29.3 - 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/aliases.nix b/pkgs/top-level/aliases.nix index 7e89081aef3c..a6518b062b8b 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -394,6 +394,7 @@ mapAliases ({ julia_1 = throw "julia_1 has been deprecated in favor of julia_10 as it was ambiguous"; # added 2021-03-13 julia_11 = throw "julia_11 has been deprecated in favor of the latest stable version"; # added 2020-09-15 julia_13 = throw "julia_13 has been deprecated in favor of the latest stable version"; # added 2021-03-13 + julia_10-bin = throw "julia_10-bin has been deprecated in favor of the latest LTS version"; # added 2021-12-02 kbdKeymaps = throw "kbdKeymaps is not needed anymore since dvp and neo are now part of kbd"; # added 2021-04-11 kdeconnect = plasma5Packages.kdeconnect-kde; # added 2020-10-28 kdiff3-qt5 = kdiff3; # added 2017-02-18 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 031e293860f2..2e64257eb62c 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -12438,11 +12438,11 @@ with pkgs; julia-stable = julia_15; julia = julia-stable; - 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-lts-bin = julia_16-bin; + julia-stable-bin = julia_17-bin; julia-bin = julia-stable-bin; jwasm = callPackage ../development/compilers/jwasm { };