From 597f94bd8a1a9e469eeb8458bb815a350f5df4cc Mon Sep 17 00:00:00 2001 From: Claudio Bley Date: Fri, 30 Jul 2021 09:52:21 +0200 Subject: [PATCH] jetbrains: Fix update.pl script for MPS Jetbrains seems to have deviated from the usual URL pattern of `///-.` by only using the major.minor part of the version number in the first URL segment for MPS. --- pkgs/applications/editors/jetbrains/default.nix | 5 +++-- pkgs/applications/editors/jetbrains/update.pl | 12 ++++++++---- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/pkgs/applications/editors/jetbrains/default.nix b/pkgs/applications/editors/jetbrains/default.nix index 4370e9af3eba..84039275b6b4 100644 --- a/pkgs/applications/editors/jetbrains/default.nix +++ b/pkgs/applications/editors/jetbrains/default.nix @@ -307,11 +307,12 @@ in mps = buildMps rec { name = "mps-${version}"; - version = "2021.1"; /* updated by script */ + version = "2021.1"; + versionMajorMinor = "2021.1"; description = "Create your own domain-specific language"; license = lib.licenses.asl20; src = fetchurl { - url = "https://download.jetbrains.com/mps/${version}/MPS-${version}.tar.gz"; + url = "https://download.jetbrains.com/mps/${versionMajorMinor}/MPS-${version}.tar.gz"; sha256 = "0fdh8lzsi2zryi0xs961vrf3l8kqk5imlj56dhifywi7xkhs3vwn"; /* updated by script */ }; wmClass = "jetbrains-mps"; diff --git a/pkgs/applications/editors/jetbrains/update.pl b/pkgs/applications/editors/jetbrains/update.pl index 7656581a8b4f..201c51094dc3 100755 --- a/pkgs/applications/editors/jetbrains/update.pl +++ b/pkgs/applications/editors/jetbrains/update.pl @@ -60,17 +60,20 @@ sub update_nix_block { } elsif ($only_free && $block =~ /licenses\.unfree/) { print("$channel is unfree, skipping\n"); } else { - print("updating $channel: $version -> $latest_versions{$channel}\n"); + my $version_string = $latest_versions{$channel}; + my $versionMajorMinor = $version_string =~ s/^([0-9]+[.][0-9]+).*/$1/r; + + print("updating $channel: $version -> $version_string\n"); my ($url) = $block =~ /url\s*=\s*"([^"]+)"/; # try to interpret some nix my ($name) = $block =~ /name\s*=\s*"([^"]+)"/; - $name =~ s/\$\{version\}/$latest_versions{$channel}/; + $name =~ s/\$\{version\}/$version_string/; # Some url pattern contain variables more than once $url =~ s/\$\{name\}/$name/g; - $url =~ s/\$\{version\}/$latest_versions{$channel}/g; + $url =~ s/\$\{version\}/$version_string/g; + $url =~ s/\$\{versionMajorMinor\}/$versionMajorMinor/g; die "$url still has some interpolation" if $url =~ /\$/; my ($sha256) = get("$url.sha256") =~ /^([0-9a-f]{64})/; - my $version_string = $latest_versions{$channel}; unless ( $sha256 ) { my $full_version = $latest_versions{"full1_" . $channel}; $url =~ s/$version_string/$full_version/; @@ -83,6 +86,7 @@ sub update_nix_block { print "Jetbrains published SHA256: $sha256\n"; print "Conversion into base32 yields: $sha256Base32\n"; $block =~ s#version\s*=\s*"([^"]+)".+$#version = "$version_string"; /* updated by script */#m; + $block =~ s#versionMajorMinor\s*=\s*"([^"]+)".+$#versionMajorMinor = "$versionMajorMinor"; /* updated by script */#m; $block =~ s#sha256\s*=\s*"([^"]+)".+$#sha256 = "$sha256Base32"; /* updated by script */#m; } } else {