From a0b0f9945806b6a0d1840b193f4eb2a5a633540a Mon Sep 17 00:00:00 2001 From: Pontus Stenetorp Date: Sun, 28 Mar 2021 12:34:29 +0000 Subject: [PATCH 01/12] julia: drop julia_13 as it lacks support upstream Closes #82008. --- pkgs/development/compilers/julia/1.3.nix | 161 ----------------------- pkgs/top-level/aliases.nix | 1 + pkgs/top-level/all-packages.nix | 5 - 3 files changed, 1 insertion(+), 166 deletions(-) delete mode 100644 pkgs/development/compilers/julia/1.3.nix diff --git a/pkgs/development/compilers/julia/1.3.nix b/pkgs/development/compilers/julia/1.3.nix deleted file mode 100644 index 5e431a55233..00000000000 --- a/pkgs/development/compilers/julia/1.3.nix +++ /dev/null @@ -1,161 +0,0 @@ -{ lib, stdenv, fetchurl, fetchzip, fetchFromGitHub -# build tools -, gfortran, m4, makeWrapper, patchelf, perl, which, python2 -, cmake -# libjulia dependencies -, libunwind, readline, utf8proc, zlib -# standard library dependencies -, curl, fftwSinglePrec, fftw, gmp, libgit2, mpfr, openlibm, openspecfun, pcre2 -# linear algebra -, blas, lapack, arpack -# Darwin frameworks -, CoreServices, ApplicationServices -}: - -assert (!blas.isILP64) && (!lapack.isILP64); - -with lib; - -let - majorVersion = "1"; - minorVersion = "3"; - maintenanceVersion = "1"; - src_sha256 = "0q9a7yc3b235psrwl5ghyxgwly25lf8n818l8h6bkf2ymdbsv5p6"; - version = "${majorVersion}.${minorVersion}.${maintenanceVersion}"; -in - -stdenv.mkDerivation rec { - pname = "julia"; - inherit version; - - src = fetchzip { - url = "https://github.com/JuliaLang/julia/releases/download/v${majorVersion}.${minorVersion}.${maintenanceVersion}/julia-${majorVersion}.${minorVersion}.${maintenanceVersion}-full.tar.gz"; - sha256 = src_sha256; - }; - - prePatch = '' - export PATH=$PATH:${cmake}/bin - ''; - - patches = [ - ./use-system-utf8proc-julia-1.3.patch - - # Julia recompiles a precompiled file if the mtime stored *in* the - # .ji file differs from the mtime of the .ji file. This - # doesn't work in Nix because Nix changes the mtime of files in - # the Nix store to 1. So patch Julia to accept mtimes of 1. - ./allow_nix_mtime.patch - ]; - - postPatch = '' - patchShebangs . contrib - for i in backtrace cmdlineargs; do - mv test/$i.jl{,.off} - touch test/$i.jl - done - rm stdlib/Sockets/test/runtests.jl && touch stdlib/Sockets/test/runtests.jl - rm stdlib/Distributed/test/runtests.jl && touch stdlib/Distributed/test/runtests.jl - sed -e 's/Invalid Content-Type:/invalid Content-Type:/g' -i ./stdlib/LibGit2/test/libgit2.jl - sed -e 's/Failed to resolve /failed to resolve /g' -i ./stdlib/LibGit2/test/libgit2.jl - ''; - - buildInputs = [ - arpack fftw fftwSinglePrec gmp libgit2 libunwind mpfr - pcre2.dev blas lapack openlibm openspecfun readline utf8proc - zlib - ] - ++ lib.optionals stdenv.isDarwin [CoreServices ApplicationServices] - ; - - nativeBuildInputs = [ curl gfortran m4 makeWrapper patchelf perl python2 which ]; - - makeFlags = - let - arch = head (splitString "-" stdenv.system); - march = { - x86_64 = stdenv.hostPlatform.gcc.arch or "x86-64"; - i686 = "pentium4"; - aarch64 = "armv8-a"; - }.${arch} - or (throw "unsupported architecture: ${arch}"); - # Julia requires Pentium 4 (SSE2) or better - cpuTarget = { x86_64 = "x86-64"; i686 = "pentium4"; aarch64 = "generic"; }.${arch} - or (throw "unsupported architecture: ${arch}"); - in [ - "ARCH=${arch}" - "MARCH=${march}" - "JULIA_CPU_TARGET=${cpuTarget}" - "PREFIX=$(out)" - "prefix=$(out)" - "SHELL=${stdenv.shell}" - - (lib.optionalString (!stdenv.isDarwin) "USE_SYSTEM_BLAS=1") - "USE_BLAS64=${if blas.isILP64 then "1" else "0"}" - - "USE_SYSTEM_LAPACK=1" - - "USE_SYSTEM_ARPACK=1" - "USE_SYSTEM_FFTW=1" - "USE_SYSTEM_GMP=1" - "USE_SYSTEM_LIBGIT2=1" - "USE_SYSTEM_LIBUNWIND=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" - - "USE_BINARYBUILDER=0" - ]; - - LD_LIBRARY_PATH = makeLibraryPath [ - arpack fftw fftwSinglePrec gmp libgit2 mpfr blas openlibm - openspecfun pcre2 lapack - ]; - - # Other versions of Julia pass the tests, but we are not sure why these fail. - doCheck = false; - 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 = lib.licenses.mit; - maintainers = with lib.maintainers; [ raskin rob garrison ]; - platforms = [ "i686-linux" "x86_64-linux" "x86_64-darwin" ]; - broken = stdenv.isi686; - }; -} diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index 8f2ff5cc4f7..ccce9a3efc8 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -339,6 +339,7 @@ mapAliases ({ jellyfin_10_5 = throw "Jellyfin 10.5 is no longer supported and contains a security vulnerability. Please upgrade to a newer version."; # added 2021-04-26 julia_07 = throw "julia_07 is deprecated in favor of julia_10 LTS"; # added 2020-09-15 julia_11 = throw "julia_11 is deprecated in favor of latest Julia version"; # added 2020-09-15 + julia_13 = throw "julia_13 is deprecated in favor of the latest stable version"; # added 2021-03-13 kdeconnect = plasma5Packages.kdeconnect-kde; # added 2020-10-28 kdiff3-qt5 = kdiff3; # added 2017-02-18 keepass-keefox = keepass-keepassrpc; # backwards compatibility alias, added 2018-02 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index bb8e38fb489..37200d26f12 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -10985,11 +10985,6 @@ in libgit2 = libgit2_0_27; }; - julia_13 = callPackage ../development/compilers/julia/1.3.nix { - gmp = gmp6; - inherit (darwin.apple_sdk.frameworks) CoreServices ApplicationServices; - }; - julia_15 = callPackage ../development/compilers/julia/1.5.nix { inherit (darwin.apple_sdk.frameworks) CoreServices ApplicationServices; }; From 2632a33605976c3da6d849a5a14d98f286433e2c Mon Sep 17 00:00:00 2001 From: Pontus Stenetorp Date: Fri, 12 Mar 2021 16:02:53 +0000 Subject: [PATCH 02/12] julia: clean up grammar for deprecated aliases --- pkgs/top-level/aliases.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index ccce9a3efc8..d171f0d5e05 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -338,8 +338,8 @@ mapAliases ({ kodiPlainWayland = kodi-wayland; jellyfin_10_5 = throw "Jellyfin 10.5 is no longer supported and contains a security vulnerability. Please upgrade to a newer version."; # added 2021-04-26 julia_07 = throw "julia_07 is deprecated in favor of julia_10 LTS"; # added 2020-09-15 - julia_11 = throw "julia_11 is deprecated in favor of latest Julia version"; # added 2020-09-15 - julia_13 = throw "julia_13 is deprecated in favor of the latest stable version"; # 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 kdeconnect = plasma5Packages.kdeconnect-kde; # added 2020-10-28 kdiff3-qt5 = kdiff3; # added 2017-02-18 keepass-keefox = keepass-keepassrpc; # backwards compatibility alias, added 2018-02 From fc3c17c5acc1e29825c7a8e918747033db6b60f4 Mon Sep 17 00:00:00 2001 From: Pontus Stenetorp Date: Fri, 12 Mar 2021 16:07:29 +0000 Subject: [PATCH 03/12] julia: introduce LTS and stable aliases MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit According to the Julia release process [1] there will only ever be two supported release branches at any given time: stable and LTS. Once a new version of either is released, support for the previous release will be dropped upstream. Introducing aliases for these branches allows our users to easily track either depending on their need for stability. [1]: https://julialang.org/blog/2019/08/release-process/#long_term_support --- pkgs/top-level/all-packages.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 37200d26f12..c6e0b67e587 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -10989,8 +10989,10 @@ in inherit (darwin.apple_sdk.frameworks) CoreServices ApplicationServices; }; - julia_1 = julia_10; julia = julia_15; + julia-lts = julia_10; + julia-stable = julia_15; + julia_1 = julia_10; jwasm = callPackage ../development/compilers/jwasm { }; From 0f3096d03925f3e17d9f30ccebd78bef71e40b0a Mon Sep 17 00:00:00 2001 From: Pontus Stenetorp Date: Fri, 12 Mar 2021 16:14:11 +0000 Subject: [PATCH 04/12] julia: deprecate julia_1 alias MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is potentially controversial, but it is unclear to me whether julia_1 should refer to either the latest stable or LTS release of 1.x. We may want to revisit this when/if we get 2.x, but as it stands the Julia release process [1] makes it clear that there will only ever be a single supported stable and LTS release at any given time which should speak in favour of using the julia-stable and julia-lts aliases instead. [1]: https://julialang.org/blog/2019/08/release-process/#long_term_support --- pkgs/top-level/aliases.nix | 3 ++- pkgs/top-level/all-packages.nix | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index d171f0d5e05..e48652ab555 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -337,7 +337,8 @@ mapAliases ({ kodiPlain = kodi; kodiPlainWayland = kodi-wayland; jellyfin_10_5 = throw "Jellyfin 10.5 is no longer supported and contains a security vulnerability. Please upgrade to a newer version."; # added 2021-04-26 - julia_07 = throw "julia_07 is deprecated in favor of julia_10 LTS"; # added 2020-09-15 + julia_07 = throw "julia_07 has been deprecated in favor of the latest LTS version"; # added 2020-09-15 + 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 kdeconnect = plasma5Packages.kdeconnect-kde; # added 2020-10-28 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index c6e0b67e587..69b917d05ad 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -10992,7 +10992,6 @@ in julia = julia_15; julia-lts = julia_10; julia-stable = julia_15; - julia_1 = julia_10; jwasm = callPackage ../development/compilers/jwasm { }; From a4f2b97a24d5788778eb73d80ca8256cd0d6ff0b Mon Sep 17 00:00:00 2001 From: Pontus Stenetorp Date: Sat, 13 Mar 2021 05:55:49 +0000 Subject: [PATCH 05/12] julia: enable parallel building Erroneously disabled by 3ae5e6ce03f9dbf3f0a0a3e3161c83e28c1b45af as it mistook Julia for using CMake (it is used by some of the vendored dependencies). --- pkgs/development/compilers/julia/1.0.nix | 2 ++ pkgs/development/compilers/julia/1.5.nix | 2 ++ 2 files changed, 4 insertions(+) diff --git a/pkgs/development/compilers/julia/1.0.nix b/pkgs/development/compilers/julia/1.0.nix index 5b1a4674a88..d68f56faf2e 100644 --- a/pkgs/development/compilers/julia/1.0.nix +++ b/pkgs/development/compilers/julia/1.0.nix @@ -184,6 +184,8 @@ stdenv.mkDerivation rec { export LD_LIBRARY_PATH=${LD_LIBRARY_PATH} ''; + enableParallelBuilding = true; + postInstall = '' # Symlink shared libraries from LD_LIBRARY_PATH into lib/julia, # as using a wrapper with LD_LIBRARY_PATH causes segmentation diff --git a/pkgs/development/compilers/julia/1.5.nix b/pkgs/development/compilers/julia/1.5.nix index b4c33faa44c..f32c55bf1e2 100644 --- a/pkgs/development/compilers/julia/1.5.nix +++ b/pkgs/development/compilers/julia/1.5.nix @@ -129,6 +129,8 @@ stdenv.mkDerivation rec { export LD_LIBRARY_PATH=${LD_LIBRARY_PATH} ''; + enableParallelBuilding = true; + postInstall = '' # Symlink shared libraries from LD_LIBRARY_PATH into lib/julia, # as using a wrapper with LD_LIBRARY_PATH causes segmentation From d51713378b62d32bd63466023308e6615cb5bedc Mon Sep 17 00:00:00 2001 From: Pontus Stenetorp Date: Sun, 28 Mar 2021 09:37:02 +0000 Subject: [PATCH 06/12] julia: make the LTS release the default version Reverts the non-syntax part of 1e4c335a94b2df4e74a1e447d2f7074a09ada478. --- pkgs/top-level/all-packages.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 69b917d05ad..34146884862 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -10989,9 +10989,9 @@ in inherit (darwin.apple_sdk.frameworks) CoreServices ApplicationServices; }; - julia = julia_15; julia-lts = julia_10; julia-stable = julia_15; + julia = julia-lts; jwasm = callPackage ../development/compilers/jwasm { }; From 4c97cf823f025cfee3f8c2fc028ca0c0ab3369f2 Mon Sep 17 00:00:00 2001 From: Pontus Stenetorp Date: Sun, 28 Mar 2021 09:43:31 +0000 Subject: [PATCH 07/12] julia: remove redundant Nix-specific mtime patch As far as I can tell this patch is redundant as all pre-compiled code generated at build time is baked into the Julia system image and will thus never get invalidated: Note that for both julia_10 and julia_15 there are no `.ji` files produced in the derivations. --- pkgs/development/compilers/julia/1.0.nix | 5 ---- pkgs/development/compilers/julia/1.5.nix | 6 ----- .../compilers/julia/allow_nix_mtime.patch | 25 ------------------- 3 files changed, 36 deletions(-) delete mode 100644 pkgs/development/compilers/julia/allow_nix_mtime.patch diff --git a/pkgs/development/compilers/julia/1.0.nix b/pkgs/development/compilers/julia/1.0.nix index d68f56faf2e..445e079502e 100644 --- a/pkgs/development/compilers/julia/1.0.nix +++ b/pkgs/development/compilers/julia/1.0.nix @@ -88,11 +88,6 @@ stdenv.mkDerivation rec { ; patches = [ - # Julia recompiles a precompiled file if the mtime stored *in* the - # .ji file differs from the mtime of the .ji file. This - # doesn't work in Nix because Nix changes the mtime of files in - # the Nix store to 1. So patch Julia to accept mtimes of 1. - ./allow_nix_mtime.patch ./diagonal-test.patch ./use-system-utf8proc-julia-1.0.patch ]; diff --git a/pkgs/development/compilers/julia/1.5.nix b/pkgs/development/compilers/julia/1.5.nix index f32c55bf1e2..be8200a0ded 100644 --- a/pkgs/development/compilers/julia/1.5.nix +++ b/pkgs/development/compilers/julia/1.5.nix @@ -34,12 +34,6 @@ stdenv.mkDerivation rec { patches = [ ./use-system-utf8proc-julia-1.3.patch - - # Julia recompiles a precompiled file if the mtime stored *in* the - # .ji file differs from the mtime of the .ji file. This - # doesn't work in Nix because Nix changes the mtime of files in - # the Nix store to 1. So patch Julia to accept mtimes of 1. - ./allow_nix_mtime.patch ]; postPatch = '' diff --git a/pkgs/development/compilers/julia/allow_nix_mtime.patch b/pkgs/development/compilers/julia/allow_nix_mtime.patch deleted file mode 100644 index e4a164cfa1a..00000000000 --- a/pkgs/development/compilers/julia/allow_nix_mtime.patch +++ /dev/null @@ -1,25 +0,0 @@ -From f79775378a9eeec5b99f18cc95735b12d172aba3 Mon Sep 17 00:00:00 2001 -From: Tom McLaughlin -Date: Wed, 12 Dec 2018 13:01:32 -0800 -Subject: [PATCH] Patch to make work better with nix - ---- - base/loading.jl | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/base/loading.jl b/base/loading.jl -index 51201b98b6..b40c0690f6 100644 ---- a/base/loading.jl -+++ b/base/loading.jl -@@ -1384,7 +1384,7 @@ function stale_cachefile(modpath::String, cachefile::String) - # Issue #13606: compensate for Docker images rounding mtimes - # Issue #20837: compensate for GlusterFS truncating mtimes to microseconds - ftime = mtime(f) -- if ftime != ftime_req && ftime != floor(ftime_req) && ftime != trunc(ftime_req, digits=6) -+ if ftime != ftime_req && ftime != floor(ftime_req) && ftime != trunc(ftime_req, digits=6) && ftime != 1.0 - @debug "Rejecting stale cache file $cachefile (mtime $ftime_req) because file $f (mtime $ftime) has changed" - return true - end --- -2.17.1 - From 5926635765ccab3c2710ab4df117fce1c1b3d2a1 Mon Sep 17 00:00:00 2001 From: Pontus Stenetorp Date: Sun, 28 Mar 2021 09:54:37 +0000 Subject: [PATCH 08/12] julia: remove redundant diagonal test patch Fix merged upstream and backported to Julia 1.0.5: https://github.com/JuliaLang/julia/pull/31443 --- pkgs/development/compilers/julia/1.0.nix | 1 - .../compilers/julia/diagonal-test.patch | 27 ------------------- 2 files changed, 28 deletions(-) delete mode 100644 pkgs/development/compilers/julia/diagonal-test.patch diff --git a/pkgs/development/compilers/julia/1.0.nix b/pkgs/development/compilers/julia/1.0.nix index 445e079502e..a7f6be6a167 100644 --- a/pkgs/development/compilers/julia/1.0.nix +++ b/pkgs/development/compilers/julia/1.0.nix @@ -88,7 +88,6 @@ stdenv.mkDerivation rec { ; patches = [ - ./diagonal-test.patch ./use-system-utf8proc-julia-1.0.patch ]; diff --git a/pkgs/development/compilers/julia/diagonal-test.patch b/pkgs/development/compilers/julia/diagonal-test.patch deleted file mode 100644 index dd31e67e9d3..00000000000 --- a/pkgs/development/compilers/julia/diagonal-test.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 9eb180c523b877a53b9e1cf53a4d5e6dad3d7bfe Mon Sep 17 00:00:00 2001 -From: Lars Jellema -Date: Sat, 19 Sep 2020 13:52:20 +0200 -Subject: [PATCH] Use approximate comparisons for diagonal tests - ---- - stdlib/LinearAlgebra/test/diagonal.jl | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/stdlib/LinearAlgebra/test/diagonal.jl b/stdlib/LinearAlgebra/test/diagonal.jl -index e420d5bc6d..7f1b5d0aec 100644 ---- a/stdlib/LinearAlgebra/test/diagonal.jl -+++ b/stdlib/LinearAlgebra/test/diagonal.jl -@@ -450,8 +450,8 @@ end - M = randn(T, 5, 5) - MM = [randn(T, 2, 2) for _ in 1:2, _ in 1:2] - for transform in (identity, adjoint, transpose, Adjoint, Transpose) -- @test lmul!(transform(D), copy(M)) == *(transform(Matrix(D)), M) -- @test rmul!(copy(M), transform(D)) == *(M, transform(Matrix(D))) -+ @test lmul!(transform(D), copy(M)) ≈ *(transform(Matrix(D)), M) -+ @test rmul!(copy(M), transform(D)) ≈ *(M, transform(Matrix(D))) - @test lmul!(transform(DD), copy(MM)) == *(transform(fullDD), MM) - @test rmul!(copy(MM), transform(DD)) == *(MM, transform(fullDD)) - end --- -2.28.0 - From 75a93dfecc6c77ed7c35cc7f906175aca93facb4 Mon Sep 17 00:00:00 2001 From: Pontus Stenetorp Date: Tue, 13 Apr 2021 14:42:31 +0000 Subject: [PATCH 09/12] julia: move patches into separate directories Makes the top-level directory organisation easier with an increasing number of patches. --- pkgs/development/compilers/julia/1.0.nix | 2 +- pkgs/development/compilers/julia/1.5.nix | 2 +- .../julia/{ => patches/1.0}/use-system-utf8proc-julia-1.0.patch | 0 .../julia/{ => patches/1.5}/use-system-utf8proc-julia-1.3.patch | 0 4 files changed, 2 insertions(+), 2 deletions(-) rename pkgs/development/compilers/julia/{ => patches/1.0}/use-system-utf8proc-julia-1.0.patch (100%) rename pkgs/development/compilers/julia/{ => patches/1.5}/use-system-utf8proc-julia-1.3.patch (100%) diff --git a/pkgs/development/compilers/julia/1.0.nix b/pkgs/development/compilers/julia/1.0.nix index a7f6be6a167..4f05329f595 100644 --- a/pkgs/development/compilers/julia/1.0.nix +++ b/pkgs/development/compilers/julia/1.0.nix @@ -88,7 +88,7 @@ stdenv.mkDerivation rec { ; patches = [ - ./use-system-utf8proc-julia-1.0.patch + ./patches/1.0/use-system-utf8proc-julia-1.0.patch ]; postPatch = '' diff --git a/pkgs/development/compilers/julia/1.5.nix b/pkgs/development/compilers/julia/1.5.nix index be8200a0ded..271ea64a094 100644 --- a/pkgs/development/compilers/julia/1.5.nix +++ b/pkgs/development/compilers/julia/1.5.nix @@ -33,7 +33,7 @@ stdenv.mkDerivation rec { }; patches = [ - ./use-system-utf8proc-julia-1.3.patch + ./patches/1.5/use-system-utf8proc-julia-1.3.patch ]; postPatch = '' diff --git a/pkgs/development/compilers/julia/use-system-utf8proc-julia-1.0.patch b/pkgs/development/compilers/julia/patches/1.0/use-system-utf8proc-julia-1.0.patch similarity index 100% rename from pkgs/development/compilers/julia/use-system-utf8proc-julia-1.0.patch rename to pkgs/development/compilers/julia/patches/1.0/use-system-utf8proc-julia-1.0.patch diff --git a/pkgs/development/compilers/julia/use-system-utf8proc-julia-1.3.patch b/pkgs/development/compilers/julia/patches/1.5/use-system-utf8proc-julia-1.3.patch similarity index 100% rename from pkgs/development/compilers/julia/use-system-utf8proc-julia-1.3.patch rename to pkgs/development/compilers/julia/patches/1.5/use-system-utf8proc-julia-1.3.patch From e633d97cb382f237e33e98f2a9efd3b86cfabd8a Mon Sep 17 00:00:00 2001 From: Pontus Stenetorp Date: Sun, 11 Apr 2021 13:59:38 +0000 Subject: [PATCH 10/12] julia: remove julia_15 update script MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Provides very little comfort compared what is outlined in the manual [1], only supports a single version, and would probably be better to implement as a general Nixpkg tool. [1]: https://nixos.org/manual/nixpkgs/stable/#sec-source-hashes --- .../development/compilers/julia/update-1.5.py | 22 ------------------- 1 file changed, 22 deletions(-) delete mode 100755 pkgs/development/compilers/julia/update-1.5.py diff --git a/pkgs/development/compilers/julia/update-1.5.py b/pkgs/development/compilers/julia/update-1.5.py deleted file mode 100755 index e37f37d456b..00000000000 --- a/pkgs/development/compilers/julia/update-1.5.py +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env nix-shell -#!nix-shell -i python3 -p python3 python3Packages.requests - -import os -import re -import requests -import subprocess - -latest = requests.get("https://api.github.com/repos/JuliaLang/julia/releases/latest").json()["tag_name"] -assert latest[0] == "v" -major, minor, patch = latest[1:].split(".") -assert major == "1" -# When a new minor version comes out we'll have to refactor/copy this update script. -assert minor == "5" - -sha256 = subprocess.check_output(["nix-prefetch-url", "--unpack", f"https://github.com/JuliaLang/julia/releases/download/v{major}.{minor}.{patch}/julia-{major}.{minor}.{patch}-full.tar.gz"], text=True).strip() - -nix_path = os.path.join(os.path.dirname(__file__), "1.5.nix") -nix0 = open(nix_path, "r").read() -nix1 = re.sub("maintenanceVersion = \".*\";", f"maintenanceVersion = \"{patch}\";", nix0) -nix2 = re.sub("src_sha256 = \".*\";", f"src_sha256 = \"{sha256}\";", nix1) -open(nix_path, "w").write(nix2) From 5167e0347c5a79f1c0073a90087d68b5a148fa7c Mon Sep 17 00:00:00 2001 From: Pontus Stenetorp Date: Sun, 11 Apr 2021 14:04:03 +0000 Subject: [PATCH 11/12] julia: sort arguments in top-level package collection No change in semantics, but makes it consistent with the expressions. This is a fairly pedantic thing to do to be honest. --- pkgs/top-level/all-packages.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 34146884862..739090b7696 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -10981,12 +10981,12 @@ in julia_10 = callPackage ../development/compilers/julia/1.0.nix { gmp = gmp6; - inherit (darwin.apple_sdk.frameworks) CoreServices ApplicationServices; + inherit (darwin.apple_sdk.frameworks) ApplicationServices CoreServices; libgit2 = libgit2_0_27; }; julia_15 = callPackage ../development/compilers/julia/1.5.nix { - inherit (darwin.apple_sdk.frameworks) CoreServices ApplicationServices; + inherit (darwin.apple_sdk.frameworks) ApplicationServices CoreServices; }; julia-lts = julia_10; From dd88dcee620ebefe9afe9c4326defe92976891f2 Mon Sep 17 00:00:00 2001 From: Pontus Stenetorp Date: Mon, 19 Apr 2021 06:22:51 +0000 Subject: [PATCH 12/12] julia: add README Provides a few hopefully helpful pointers that would not work well as inline comments in the expressions themselves. Most likely the README will need to be expanded upon over time to cover how we handle the Julia release process, but I hope this is a good starting point. --- pkgs/development/compilers/julia/README.md | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 pkgs/development/compilers/julia/README.md diff --git a/pkgs/development/compilers/julia/README.md b/pkgs/development/compilers/julia/README.md new file mode 100644 index 00000000000..d37c01bc8ce --- /dev/null +++ b/pkgs/development/compilers/julia/README.md @@ -0,0 +1,24 @@ +Julia +===== + +[Julia][julia], as a full-fledged programming language with an extensive +standard library that covers numerical computing, can be somewhat challenging to +package. This file aims to provide pointers which could not easily be included +as comments in the expressions themselves. + +[julia]: https://julialang.org + +For Nixpkgs, the manual is as always your primary reference, and for the Julia +side of things you probably want to familiarise yourself with the [README +][readme], [build instructions][build], and [release process][release_process]. +Remember that these can change between Julia releases, especially if the LTS and +release branches have deviated greatly. A lot of the build process is +underdocumented and thus there is no substitute for digging into the code that +controls the build process. You are very likely to need to use the test suite to +locate and address issues and in the end passing it, while only disabling a +minimal set of broken or incompatible tests you think you have a good reason to +disable, is your best bet at arriving at a solid derivation. + +[readme]: https://github.com/JuliaLang/julia/blob/master/README.md +[build]: https://github.com/JuliaLang/julia/blob/master/doc/build/build.md +[release_process]: https://julialang.org/blog/2019/08/release-process