julia: add update script, and 1.5.3 -> 1.5.4 (#116466)

Changed files
+30 -9
pkgs
development
compilers
+8 -9
pkgs/development/compilers/julia/1.5.nix
···
-
{ lib, stdenv, fetchurl, fetchzip, fetchFromGitHub
+
{ lib, stdenv, fetchzip
# build tools
-
, gfortran, m4, makeWrapper, patchelf, perl, which, python2
-
, cmake
+
, gfortran, m4, makeWrapper, patchelf, perl, which, python2, cmake
# libjulia dependencies
, libunwind, readline, utf8proc, zlib
# standard library dependencies
···
let
majorVersion = "1";
minorVersion = "5";
-
maintenanceVersion = "3";
-
src_sha256 = "sha256:0jds8lrhk4hfdv7dg5p2ibzin9ivga7wrx7zwcmz6dqp3x792n1i";
+
maintenanceVersion = "4";
+
src_sha256 = "1ba1v7hakgj95xvhyff0zcp0574qv6vailjl48wl1f8w5k54lsw2";
version = "${majorVersion}.${minorVersion}.${maintenanceVersion}";
in
···
pname = "julia";
inherit version;
-
src = fetchzip {
-
url = "https://github.com/JuliaLang/julia/releases/download/v${version}/julia-${version}-full.tar.gz";
-
sha256 = src_sha256;
-
};
+
src = fetchzip {
+
url = "https://github.com/JuliaLang/julia/releases/download/v${version}/julia-${version}-full.tar.gz";
+
sha256 = src_sha256;
+
};
patches = [
./use-system-utf8proc-julia-1.3.patch
+22
pkgs/development/compilers/julia/update-1.5.py
···
+
#!/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)