diff --git a/pkgs/development/compilers/julia/default.nix b/pkgs/development/compilers/julia/default.nix index c9a9f09f46d9..89edbf8cfdd3 100644 --- a/pkgs/development/compilers/julia/default.nix +++ b/pkgs/development/compilers/julia/default.nix @@ -51,6 +51,16 @@ in }; }) { } ); + julia_113-bin = wrapJulia ( + callPackage (import ./generic-bin.nix { + version = "1.13.1"; + sha256 = { + x86_64-linux = "0209grj6fn7yjs021rc99cwxza7p2abcv2fh263jq2m6vv41hbhg"; + aarch64-linux = "1q2wxknfsh681qfsm9dbk4xc49r6qn1m2yd85wffld27w9i1hd3q"; + aarch64-darwin = "0zqgkb294y2ih643z4fbil229hf6nvak98fbq9vbghkp8yfjbq53"; + }; + }) { } + ); julia_110 = wrapJulia ( callPackage (import ./generic.nix { @@ -103,4 +113,26 @@ in { } ) ); + julia_113 = wrapJulia ( + callPackage + (import ./generic.nix { + version = "1.13.1"; + hash = "sha256-HCAGvO16H4tsklmO9lt7JPx0rqrcU1NaReTGGXABBXw="; + patches = [ + # Upstream only sets CMAKE_BUILD_RPATH on Darwin (JuliaLang/julia#63103). + # On Linux in the Nix sandbox, intermediate build tools like llvm-min-tblgen + # need build_shlibdir in RPATH to find bundled libz/libzstd during LLVM compilation. + ./patches/1.13/0001-llvm-zlib-rpath.patch + ]; + }) + ( + if stdenv.cc.isGNU then + { + stdenv = gcc14Stdenv; + gfortran = gfortran14; + } + else + { } + ) + ); } diff --git a/pkgs/development/compilers/julia/generic-bin.nix b/pkgs/development/compilers/julia/generic-bin.nix index b14b8001866b..6186ef9a913d 100644 --- a/pkgs/development/compilers/julia/generic-bin.nix +++ b/pkgs/development/compilers/julia/generic-bin.nix @@ -66,6 +66,9 @@ stdenv.mkDerivation { inherit version patches; + strictDeps = true; + __structuredAttrs = true; + src = { x86_64-linux = fetchurl { diff --git a/pkgs/development/compilers/julia/generic.nix b/pkgs/development/compilers/julia/generic.nix index 85b22313cc24..af09a91b3210 100644 --- a/pkgs/development/compilers/julia/generic.nix +++ b/pkgs/development/compilers/julia/generic.nix @@ -68,6 +68,7 @@ stdenv.mkDerivation rec { }; strictDeps = true; + __structuredAttrs = true; nativeBuildInputs = [ which diff --git a/pkgs/development/compilers/julia/patches/1.13/0001-llvm-zlib-rpath.patch b/pkgs/development/compilers/julia/patches/1.13/0001-llvm-zlib-rpath.patch new file mode 100644 index 000000000000..bb7eb3a4c6d4 --- /dev/null +++ b/pkgs/development/compilers/julia/patches/1.13/0001-llvm-zlib-rpath.patch @@ -0,0 +1,19 @@ +From: Sergei Volkov +Subject: [PATCH] llvm: add zlib and zstd build rpath + +When building LLVM as part of Julia source build, intermediate build tools +like llvm-min-tblgen dynamically link against zlib/zstd located in build_shlibdir. +Upstream (JuliaLang/julia#63103) added CMAKE_BUILD_RPATH only for Darwin, +so on Linux in the Nix build sandbox these tools fail to load libz.so.1 unless +build_shlibdir is also added to CMAKE_BUILD_RPATH. + +--- a/deps/llvm.mk ++++ b/deps/llvm.mk +@@ -108,6 +108,7 @@ LLVM_CMAKE += -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD:STRING="$(LLVM_EXPERIMENTAL_T + LLVM_CMAKE += -DLLVM_ENABLE_LIBXML2=OFF -DLLVM_HOST_TRIPLE="$(or $(XC_HOST),$(BUILD_MACHINE))" + LLVM_CMAKE += -DLLVM_ENABLE_ZLIB=FORCE_ON -DZLIB_ROOT="$(build_prefix)" + LLVM_CMAKE += -DLLVM_ENABLE_ZSTD=FORCE_ON -DZSTD_ROOT="$(build_prefix)" ++LLVM_CMAKE += -DCMAKE_BUILD_RPATH="$(build_shlibdir)" + ifeq ($(USE_POLLY_ACC),1) + LLVM_CMAKE += -DPOLLY_ENABLE_GPGPU_CODEGEN=ON + endif diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 4cce505519d7..963543744b99 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3791,17 +3791,19 @@ with pkgs; julia_110-bin julia_111-bin julia_112-bin + julia_113-bin julia_110 julia_111 julia_112 + julia_113 ; julia-lts = julia_110-bin; - julia-stable = julia_112; + julia-stable = julia_113; julia = julia-stable; julia-lts-bin = julia_110-bin; - julia-stable-bin = julia_112-bin; + julia-stable-bin = julia_113-bin; julia-bin = julia-stable-bin; kotlin = callPackage ../development/compilers/kotlin { };