From 591fd945b2f20a98696c16409a3c6103dfa6f948 Mon Sep 17 00:00:00 2001 From: Jan Tojnar Date: Sat, 22 Oct 2022 14:38:38 +0000 Subject: [PATCH 01/18] =?UTF-8?q?evolution-data-server:=203.46.0=20?= =?UTF-8?q?=E2=86=92=203.46.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://gitlab.gnome.org/GNOME/evolution-data-server/-/compare/3.46.0...3.46.1 Changelog-Reviewed-By: Jan Tojnar --- pkgs/desktops/gnome/core/evolution-data-server/default.nix | 4 ++-- .../gnome/core/evolution-data-server/hardcode-gsettings.patch | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/desktops/gnome/core/evolution-data-server/default.nix b/pkgs/desktops/gnome/core/evolution-data-server/default.nix index 73890d27a002..87bfb9d1e1bd 100644 --- a/pkgs/desktops/gnome/core/evolution-data-server/default.nix +++ b/pkgs/desktops/gnome/core/evolution-data-server/default.nix @@ -50,13 +50,13 @@ stdenv.mkDerivation rec { pname = "evolution-data-server"; - version = "3.46.0"; + version = "3.46.1"; outputs = [ "out" "dev" ]; src = fetchurl { url = "mirror://gnome/sources/evolution-data-server/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; - sha256 = "5fooCVoYP3q1qSjjWoKDebSB3e+D7Ux7UaLjxK71zas="; + sha256 = "xV5yz/QZC0LmPdbqvG3OSKGh95BAUx8a9tUcHvpKpus="; }; patches = [ diff --git a/pkgs/desktops/gnome/core/evolution-data-server/hardcode-gsettings.patch b/pkgs/desktops/gnome/core/evolution-data-server/hardcode-gsettings.patch index 87d5ca56b7c5..0ad35d4742d2 100644 --- a/pkgs/desktops/gnome/core/evolution-data-server/hardcode-gsettings.patch +++ b/pkgs/desktops/gnome/core/evolution-data-server/hardcode-gsettings.patch @@ -298,7 +298,7 @@ index e61160c..d17871a 100644 G_CALLBACK (mi_user_headers_settings_changed_cb), NULL); G_UNLOCK (mi_user_headers); diff --git a/src/camel/providers/imapx/camel-imapx-server.c b/src/camel/providers/imapx/camel-imapx-server.c -index 2ed68cf..5dad98f 100644 +index e5645e2..170a0be 100644 --- a/src/camel/providers/imapx/camel-imapx-server.c +++ b/src/camel/providers/imapx/camel-imapx-server.c @@ -5573,7 +5573,18 @@ camel_imapx_server_skip_old_flags_update (CamelStore *store) @@ -442,7 +442,7 @@ index 8e4ee81..bb8f8f7 100644 g_object_unref (settings); diff --git a/src/libedataserver/e-oauth2-service.c b/src/libedataserver/e-oauth2-service.c -index 5a21872..a56d589 100644 +index 7783781..6fb22cb 100644 --- a/src/libedataserver/e-oauth2-service.c +++ b/src/libedataserver/e-oauth2-service.c @@ -90,7 +90,18 @@ eos_default_guess_can_process (EOAuth2Service *service, From c9249676868451f30f59bc0d0dbd650f5e08f5d2 Mon Sep 17 00:00:00 2001 From: Jan Tojnar Date: Sat, 22 Oct 2022 14:11:53 +0000 Subject: [PATCH 02/18] =?UTF-8?q?evolution:=203.46.0=20=E2=86=92=203.46.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://gitlab.gnome.org/GNOME/evolution/-/compare/3.46.0...3.46.1 Changelog-Reviewed-By: Jan Tojnar --- .../networking/mailreaders/evolution/evolution/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/networking/mailreaders/evolution/evolution/default.nix b/pkgs/applications/networking/mailreaders/evolution/evolution/default.nix index 6cac048cfd27..1e61c5ffc884 100644 --- a/pkgs/applications/networking/mailreaders/evolution/evolution/default.nix +++ b/pkgs/applications/networking/mailreaders/evolution/evolution/default.nix @@ -44,11 +44,11 @@ stdenv.mkDerivation rec { pname = "evolution"; - version = "3.46.0"; + version = "3.46.1"; src = fetchurl { url = "mirror://gnome/sources/evolution/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; - sha256 = "4J6Sdrxrmr8NrTpOgT7qHQJfT2qvH6w7ew+IiVdCkT8="; + sha256 = "GshFg+0sr4l7B06Z+TVCrRRG//Cs+rhtXmeeAzrgLIY="; }; nativeBuildInputs = [ From beb72269160030d0290cf0f5a1bb3c8fe1e159f3 Mon Sep 17 00:00:00 2001 From: Jan Tojnar Date: Sat, 22 Oct 2022 14:11:51 +0000 Subject: [PATCH 03/18] =?UTF-8?q?evolution-ews:=203.46.0=20=E2=86=92=203.4?= =?UTF-8?q?6.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://gitlab.gnome.org/GNOME/evolution-ews/-/compare/3.46.0...3.46.1 Changelog-Reviewed-By: Jan Tojnar --- .../mailreaders/evolution/evolution-ews/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/networking/mailreaders/evolution/evolution-ews/default.nix b/pkgs/applications/networking/mailreaders/evolution/evolution-ews/default.nix index f97bbea0023c..af1781f3af74 100644 --- a/pkgs/applications/networking/mailreaders/evolution/evolution-ews/default.nix +++ b/pkgs/applications/networking/mailreaders/evolution/evolution-ews/default.nix @@ -18,11 +18,11 @@ stdenv.mkDerivation rec { pname = "evolution-ews"; - version = "3.46.0"; + version = "3.46.1"; src = fetchurl { url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; - sha256 = "vZe6IFzEW60SmXvuE0ii+R2LAtcUWD159PrheU2sG4A="; + sha256 = "p5Jp7wnoqAuo8My8ZDMl0rsFc0158G8x8lAehWfLjb0="; }; nativeBuildInputs = [ From 04c8342237e77835968bb8cf1b94796a1eee9ade Mon Sep 17 00:00:00 2001 From: Jan Tojnar Date: Sat, 22 Oct 2022 14:12:32 +0000 Subject: [PATCH 04/18] =?UTF-8?q?gnome.gnome-calendar:=2043.0=20=E2=86=92?= =?UTF-8?q?=2043.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://gitlab.gnome.org/GNOME/gnome-calendar/-/compare/43.0...43.1 Changelog-Reviewed-By: Jan Tojnar --- pkgs/desktops/gnome/apps/gnome-calendar/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/desktops/gnome/apps/gnome-calendar/default.nix b/pkgs/desktops/gnome/apps/gnome-calendar/default.nix index 1f178d964f6d..f2c0a3aaee35 100644 --- a/pkgs/desktops/gnome/apps/gnome-calendar/default.nix +++ b/pkgs/desktops/gnome/apps/gnome-calendar/default.nix @@ -22,11 +22,11 @@ stdenv.mkDerivation rec { pname = "gnome-calendar"; - version = "43.0"; + version = "43.1"; src = fetchurl { url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz"; - sha256 = "CeXA+TYPP4Vt6qfA2zD12rAVEYDfQYOAfGzzYCmS9cw="; + sha256 = "r6X8ZuL2kVU8x9UX2yNjz/LWLNG130VeX09xMxOdIfI="; }; nativeBuildInputs = [ From f3faf1a6ba4ccf861230b560102628e2579f92e3 Mon Sep 17 00:00:00 2001 From: Jan Tojnar Date: Sat, 22 Oct 2022 14:12:35 +0000 Subject: [PATCH 05/18] =?UTF-8?q?gnome.gnome-control-center:=2043.0=20?= =?UTF-8?q?=E2=86=92=2043.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://gitlab.gnome.org/GNOME/gnome-control-center/-/compare/43.0...43.1 Changelog-Reviewed-By: Jan Tojnar --- pkgs/desktops/gnome/core/gnome-control-center/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/desktops/gnome/core/gnome-control-center/default.nix b/pkgs/desktops/gnome/core/gnome-control-center/default.nix index 2c6db7f854ac..5a522447a43a 100644 --- a/pkgs/desktops/gnome/core/gnome-control-center/default.nix +++ b/pkgs/desktops/gnome/core/gnome-control-center/default.nix @@ -63,11 +63,11 @@ stdenv.mkDerivation rec { pname = "gnome-control-center"; - version = "43.0"; + version = "43.1"; src = fetchurl { url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz"; - sha256 = "sha256-mIyTNZLL3E5/DbqakyYuYXtzniWSeqFuF3lgx1TjHEg="; + sha256 = "sha256-6YvGt4Sv0E8pfbXo5sWZEOLNCQMycQd08m3I3omvT8c="; }; patches = [ From c3491bec6acee71ed593f5990a558a3d03c01266 Mon Sep 17 00:00:00 2001 From: Jan Tojnar Date: Sat, 22 Oct 2022 14:12:41 +0000 Subject: [PATCH 06/18] =?UTF-8?q?gnome.gnome-initial-setup:=2043.0=20?= =?UTF-8?q?=E2=86=92=2043.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://gitlab.gnome.org/GNOME/gnome-initial-setup/-/compare/43.0...43.1 Changelog-Reviewed-By: Jan Tojnar --- pkgs/desktops/gnome/core/gnome-initial-setup/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/desktops/gnome/core/gnome-initial-setup/default.nix b/pkgs/desktops/gnome/core/gnome-initial-setup/default.nix index 7bf3e42ff3ca..f1d63a78df16 100644 --- a/pkgs/desktops/gnome/core/gnome-initial-setup/default.nix +++ b/pkgs/desktops/gnome/core/gnome-initial-setup/default.nix @@ -38,11 +38,11 @@ stdenv.mkDerivation rec { pname = "gnome-initial-setup"; - version = "43.0"; + version = "43.1"; src = fetchurl { url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz"; - sha256 = "Ap7LgZM/QE+k9spVvuR7A++JDoRGK/FF9u4JR34aOVU="; + sha256 = "gQTnBD75uY4rULKrOP2gX9BDf4xVVp+haDC3vle+DfY="; }; patches = [ From 90649d153cc203acd48ac6eac8c0478fe495f941 Mon Sep 17 00:00:00 2001 From: Jan Tojnar Date: Sat, 22 Oct 2022 14:12:47 +0000 Subject: [PATCH 07/18] =?UTF-8?q?gnome.gnome-maps:=2043.0=20=E2=86=92=2043?= =?UTF-8?q?.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://gitlab.gnome.org/GNOME/gnome-maps/-/compare/v43.0...v43.1 Changelog-Reviewed-By: Jan Tojnar --- pkgs/desktops/gnome/apps/gnome-maps/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/desktops/gnome/apps/gnome-maps/default.nix b/pkgs/desktops/gnome/apps/gnome-maps/default.nix index bca540feeb0a..1e74521d3e9d 100644 --- a/pkgs/desktops/gnome/apps/gnome-maps/default.nix +++ b/pkgs/desktops/gnome/apps/gnome-maps/default.nix @@ -27,11 +27,11 @@ stdenv.mkDerivation rec { pname = "gnome-maps"; - version = "43.0"; + version = "43.1"; src = fetchurl { url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz"; - sha256 = "sha256-CGjPz7eMOiesW+YM2E0wuz08KMiFqY+qCeN/o6UyNOQ="; + sha256 = "sha256-H3UaNb1YmteT9bFBNfKT5OxtSywwcz/sdgxofY8UMSY="; }; doCheck = true; From dad58286f9d1bb4dadcf7808e292d816573099cb Mon Sep 17 00:00:00 2001 From: Jan Tojnar Date: Sat, 22 Oct 2022 14:13:00 +0000 Subject: [PATCH 08/18] =?UTF-8?q?gnome.gnome-software:=2043.0=20=E2=86=92?= =?UTF-8?q?=2043.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://gitlab.gnome.org/GNOME/gnome-software/-/compare/43.0...43.1 Changelog-Reviewed-By: Jan Tojnar --- pkgs/desktops/gnome/core/gnome-software/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/desktops/gnome/core/gnome-software/default.nix b/pkgs/desktops/gnome/core/gnome-software/default.nix index 2ab87cf2924a..e971d5ce9293 100644 --- a/pkgs/desktops/gnome/core/gnome-software/default.nix +++ b/pkgs/desktops/gnome/core/gnome-software/default.nix @@ -45,11 +45,11 @@ in stdenv.mkDerivation rec { pname = "gnome-software"; - version = "43.0"; + version = "43.1"; src = fetchurl { url = "mirror://gnome/sources/gnome-software/${lib.versions.major version}/${pname}-${version}.tar.xz"; - sha256 = "8WUuquJ0pqhwlQAENRZGUgDMdVlNzM2bShWZsKxJ5o8="; + sha256 = "wmdWie53vhHY/waq+kFsTK/EjTgRVTpz7PdkvWr/RHA="; }; patches = [ From eee72ead3ac1abb0cbf5f2435c008f19ff10d881 Mon Sep 17 00:00:00 2001 From: Jan Tojnar Date: Sat, 22 Oct 2022 14:14:38 +0000 Subject: [PATCH 09/18] =?UTF-8?q?libshumate:=201.0.1=20=E2=86=92=201.0.2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://gitlab.gnome.org/GNOME/libshumate/-/compare/1.0.1...1.0.2 Changelog-Reviewed-By: Jan Tojnar --- pkgs/development/libraries/libshumate/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/libshumate/default.nix b/pkgs/development/libraries/libshumate/default.nix index 2c1f4365b5a6..ef56f936dccf 100644 --- a/pkgs/development/libraries/libshumate/default.nix +++ b/pkgs/development/libraries/libshumate/default.nix @@ -18,7 +18,7 @@ stdenv.mkDerivation rec { pname = "libshumate"; - version = "1.0.1"; + version = "1.0.2"; outputs = [ "out" "dev" "devdoc" ]; outputBin = "devdoc"; # demo app @@ -28,7 +28,7 @@ stdenv.mkDerivation rec { owner = "GNOME"; repo = "libshumate"; rev = version; - sha256 = "fpHMfxnPnGJSfJe4kJ28+704QjjRwYddOZAB17QxXno="; + sha256 = "zmPsWdTbM+T50X0BsVTn1Aw/5N6sL5hIQiRG5WSG1eg="; }; nativeBuildInputs = [ From 511468c36cf68f3848fa732056a46cdc2acf8d28 Mon Sep 17 00:00:00 2001 From: Jan Tojnar Date: Sat, 22 Oct 2022 14:15:11 +0000 Subject: [PATCH 10/18] =?UTF-8?q?xdg-desktop-portal-gnome:=2043.0=20?= =?UTF-8?q?=E2=86=92=2043.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://gitlab.gnome.org/GNOME/xdg-desktop-portal-gnome/-/compare/43.0...43.1 Changelog-Reviewed-By: Jan Tojnar --- .../libraries/xdg-desktop-portal-gnome/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/xdg-desktop-portal-gnome/default.nix b/pkgs/development/libraries/xdg-desktop-portal-gnome/default.nix index 5339a0c54cbb..2b13d973ade3 100644 --- a/pkgs/development/libraries/xdg-desktop-portal-gnome/default.nix +++ b/pkgs/development/libraries/xdg-desktop-portal-gnome/default.nix @@ -18,11 +18,11 @@ stdenv.mkDerivation rec { pname = "xdg-desktop-portal-gnome"; - version = "43.0"; + version = "43.1"; src = fetchurl { url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz"; - sha256 = "DhhnpFvKpd2yQKTP2yLdBVz4fwchC547twlJ88e+FqY="; + sha256 = "Ca22bG2RU+bwXfZtqirWKl3g42Zl6dIpUXO7DdxTtM0="; }; nativeBuildInputs = [ From 68505781e333e1a5df0a7c32f86df5b53df7a712 Mon Sep 17 00:00:00 2001 From: Jan Tojnar Date: Tue, 25 Oct 2022 14:17:44 +0200 Subject: [PATCH 11/18] gnome.updateScript: More Python This was prompted by the need to capture exit status of `find-latest-version.py` in the next commit. I had to drop `errexit` (if I did not want to result to even worse hacks) but that concealed errors like the following, when I accidentally used an incorrect equals operator in numeric comparison: line 24: ((: 1 = 1 : attempted assignment to non-variable (error token is "= 1 ") Converting the plumbing in `gnome/update.nix` to Python also makes it slightly easier to read. For now, `find-latest-version.py` is still invoked as a separate process (rather than being imported as a Python module), as `update.nix` might be replaced by `genericUpdater` in the future. --- pkgs/desktops/gnome/update.nix | 62 +++++++++++++++++++++++++--------- 1 file changed, 46 insertions(+), 16 deletions(-) diff --git a/pkgs/desktops/gnome/update.nix b/pkgs/desktops/gnome/update.nix index e945e005d48d..2f6384c5aa76 100644 --- a/pkgs/desktops/gnome/update.nix +++ b/pkgs/desktops/gnome/update.nix @@ -1,4 +1,4 @@ -{ stdenv, bash, pkgs, lib, writeScript, python3, common-updater-scripts }: +{ stdenv, pkgs, lib, writeScript, python3, common-updater-scripts }: { packageName, attrPath ? packageName, versionPolicy ? "tagged", freeze ? false }: let @@ -20,24 +20,54 @@ let else throw "“freeze” argument needs to be either a boolean, or a version string."; updateScript = writeScript "gnome-update-script" '' - #!${bash}/bin/bash - set -o errexit - attr_path="$1" - package_name="$2" - package_version="$3" - version_policy="$4" + #!${python}/bin/python + import json + import os + import subprocess + import sys - flvFlags=("$package_name" "$version_policy" "''${GNOME_UPDATE_STABILITY:-stable}") + _, attr_path, package_name, package_version, version_policy, *remaining_args = sys.argv - if (( $# >= 5 )); then - upper_bound="$5" - flvFlags+=("--upper-bound=$upper_bound") - fi + flv_args = [ + package_name, + version_policy, + os.environ.get("GNOME_UPDATE_STABILITY", "stable"), + ] - PATH=${lib.makeBinPath [ common-updater-scripts python ]} - latest_tag=$(python "${./find-latest-version.py}" "''${flvFlags[@]}") - update-source-version "$attr_path" "$latest_tag" - echo '[ { "commitBody": "https://gitlab.gnome.org/GNOME/'$package_name'/-/compare/'$package_version'...'$latest_tag'" } ]' + match remaining_args: + case []: + pass + case [upper_bound]: + flv_args.append(f"--upper-bound={upper_bound}") + case other: + print("gnome-update-script: Received too many arguments.", file=sys.stderr) + sys.exit(1) + + latest_tag = subprocess.check_output( + [ + "${python}/bin/python", + "${./find-latest-version.py}", + *flv_args, + ], + encoding="utf-8", + ) + latest_tag = latest_tag.strip() + subprocess.run( + [ + "${common-updater-scripts}/bin/update-source-version", + attr_path, + latest_tag, + ], + check=True, + ) + + report = [ + { + "commitBody": f"https://gitlab.gnome.org/GNOME/{package_name}/-/compare/{package_version}...{latest_tag}", + }, + ] + + print(json.dumps(report)) ''; in { name = "gnome-update-script"; From a9b97f18d003ebca2e0b8a0c04fe14f02e4505be Mon Sep 17 00:00:00 2001 From: Jan Tojnar Date: Tue, 25 Oct 2022 15:10:21 +0200 Subject: [PATCH 12/18] gnome.updateScript: Return explicitly set attr path MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The update script currently requires attribute to be passed. Let’s return it using the commit feature. Otherwise, `update.nix` would use the attribute it first found for the commit message, which can be something like `emscriptenPackages.libxml2`. --- pkgs/desktops/gnome/update.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/desktops/gnome/update.nix b/pkgs/desktops/gnome/update.nix index 2f6384c5aa76..9f03be660ae5 100644 --- a/pkgs/desktops/gnome/update.nix +++ b/pkgs/desktops/gnome/update.nix @@ -63,6 +63,7 @@ let report = [ { + "attrPath": attr_path, "commitBody": f"https://gitlab.gnome.org/GNOME/{package_name}/-/compare/{package_version}...{latest_tag}", }, ] From 812dd30e629dbc6cf7be240de004ca70799cce87 Mon Sep 17 00:00:00 2001 From: Jan Tojnar Date: Tue, 25 Oct 2022 11:38:59 +0200 Subject: [PATCH 13/18] gnome.updateScript: Prevent downgrading packages --- pkgs/desktops/gnome/update.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pkgs/desktops/gnome/update.nix b/pkgs/desktops/gnome/update.nix index 9f03be660ae5..ce8ed07a5ae3 100644 --- a/pkgs/desktops/gnome/update.nix +++ b/pkgs/desktops/gnome/update.nix @@ -25,6 +25,7 @@ let import os import subprocess import sys + from libversion import Version _, attr_path, package_name, package_version, version_policy, *remaining_args = sys.argv @@ -51,6 +52,12 @@ let ], encoding="utf-8", ) + + if Version(latest_tag) <= Version(package_version): + # No newer updates found. + print(json.dumps([])) + sys.exit(0) + latest_tag = latest_tag.strip() subprocess.run( [ From a1de6d54679d966533a4482e7d06955406619747 Mon Sep 17 00:00:00 2001 From: Jan Tojnar Date: Tue, 25 Oct 2022 15:44:20 +0200 Subject: [PATCH 14/18] gnome.updateScript: Add more type annotations Also switch to enums instead of string values and extract the main function. Validated with: nix-shell -I "nixpkgs=channel:nixos-unstable" -p python3 -p python3Packages.mypy -p python3.pkgs.libversion -p python3.pkgs.requests -p python3.pkgs.types-requests --run 'python -m mypy pkgs/desktops/gnome/find-latest-version.py' --- pkgs/desktops/gnome/find-latest-version.py | 143 ++++++++++++++++----- 1 file changed, 109 insertions(+), 34 deletions(-) diff --git a/pkgs/desktops/gnome/find-latest-version.py b/pkgs/desktops/gnome/find-latest-version.py index 3078999e3e5b..1cc2b55fadb3 100644 --- a/pkgs/desktops/gnome/find-latest-version.py +++ b/pkgs/desktops/gnome/find-latest-version.py @@ -3,85 +3,160 @@ import math import json import requests import sys +from enum import Enum from libversion import Version -from typing import Optional +from typing import ( + Callable, + Iterable, + List, + NamedTuple, + Optional, + Tuple, + TypeVar, + Type, + cast, +) -def version_to_list(version): +EnumValue = TypeVar("EnumValue", bound=Enum) + + +def enum_to_arg(enum: Enum) -> str: + return enum.name.lower().replace("_", "-") + + +def arg_to_enum(enum_meta: Type[EnumValue], name: str) -> EnumValue: + return enum_meta[name.upper().replace("-", "_")] + + +def enum_to_arg_choices(enum_meta: Type[EnumValue]) -> Tuple[str, ...]: + return tuple(enum_to_arg(v) for v in cast(Iterable[EnumValue], enum_meta)) + + +class Stability(Enum): + STABLE = "stable" + UNSTABLE = "unstable" + + +VersionPolicy = Callable[[Version], bool] +VersionPredicate = Callable[[Version, Stability], bool] + + +class VersionPredicateHolder(NamedTuple): + function: VersionPredicate + + +def version_to_list(version: str) -> List[int]: return list(map(int, version.split("."))) -def odd_unstable(version: Version, selected): +def odd_unstable(version: Version, selected: Stability) -> bool: try: - version = version_to_list(version.value) + version_parts = version_to_list(version.value) except: # Failing to parse as a list of numbers likely means the version contains a string tag like “beta”, therefore it is not a stable release. - return selected != "stable" + return selected != Stability.STABLE - if len(version) < 2: + if len(version_parts) < 2: return True - even = version[1] % 2 == 0 - prerelease = (version[1] >= 90 and version[1] < 100) or (version[1] >= 900 and version[1] < 1000) + even = version_parts[1] % 2 == 0 + prerelease = (version_parts[1] >= 90 and version_parts[1] < 100) or (version_parts[1] >= 900 and version_parts[1] < 1000) stable = even and not prerelease - if selected == "stable": + if selected == Stability.STABLE: return stable else: return True -def tagged(version: Version, selected): - if selected == "stable": +def tagged(version: Version, selected: Stability) -> bool: + if selected == Stability.STABLE: return not ("alpha" in version.value or "beta" in version.value or "rc" in version.value) else: return True -def no_policy(version: Version, selected): +def no_policy(version: Version, selected: Stability) -> bool: return True -version_policies = { - "odd-unstable": odd_unstable, - "tagged": tagged, - "none": no_policy, -} +class VersionPolicyKind(Enum): + # HACK: Using function as values directly would make Enum + # think they are methods and skip them. + ODD_UNSTABLE = VersionPredicateHolder(odd_unstable) + TAGGED = VersionPredicateHolder(tagged) + NONE = VersionPredicateHolder(no_policy) -def make_version_policy(version_predicate, selected, upper_bound: Optional[Version]): +def make_version_policy( + version_policy_kind: VersionPolicyKind, + selected: Stability, + upper_bound: Optional[Version], +) -> VersionPolicy: + version_predicate = version_policy_kind.value.function if not upper_bound: return lambda version: version_predicate(version, selected) else: return lambda version: version_predicate(version, selected) and version < upper_bound -parser = argparse.ArgumentParser(description="Find latest version for a GNOME package by crawling their release server.") -parser.add_argument("package-name", help="Name of the directory in https://ftp.gnome.org/pub/GNOME/sources/ containing the package.") -parser.add_argument("version-policy", help="Policy determining which versions are considered stable. GNOME packages usually denote stability by alpha/beta/rc tag in the version. For older packages, odd minor versions are unstable but there are exceptions.", choices=version_policies.keys(), nargs="?", default="tagged") -parser.add_argument("requested-release", help="Most of the time, we will want to update to stable version but sometimes it is useful to test.", choices=["stable", "unstable"], nargs="?", default="stable") -parser.add_argument("--upper-bound", dest="upper-bound", help="Only look for versions older than this one (useful for pinning dependencies).") +def find_versions(package_name: str, version_policy: VersionPolicy) -> List[Version]: + # The structure of cache.json: https://gitlab.gnome.org/Infrastructure/sysadmin-bin/blob/master/ftpadmin#L762 + cache = json.loads(requests.get(f"https://ftp.gnome.org/pub/GNOME/sources/{package_name}/cache.json").text) + if type(cache) != list or cache[0] != 4: + raise Exception("Unknown format of cache.json file.") + + versions: Iterable[Version] = map(Version, cache[2][package_name]) + versions = sorted(filter(version_policy, versions)) + + return versions + + +parser = argparse.ArgumentParser( + description="Find latest version for a GNOME package by crawling their release server.", +) +parser.add_argument( + "package-name", + help="Name of the directory in https://ftp.gnome.org/pub/GNOME/sources/ containing the package.", +) +parser.add_argument( + "version-policy", + help="Policy determining which versions are considered stable. GNOME packages usually denote stability by alpha/beta/rc tag in the version. For older packages, odd minor versions are unstable but there are exceptions.", + choices=enum_to_arg_choices(VersionPolicyKind), + nargs="?", + default=enum_to_arg(VersionPolicyKind.TAGGED), +) +parser.add_argument( + "requested-release", + help="Most of the time, we will want to update to stable version but sometimes it is useful to test.", + choices=enum_to_arg_choices(Stability), + nargs="?", + default=enum_to_arg(Stability.STABLE), +) +parser.add_argument( + "--upper-bound", + dest="upper-bound", + help="Only look for versions older than this one (useful for pinning dependencies).", +) if __name__ == "__main__": args = parser.parse_args() package_name = getattr(args, "package-name") - requested_release = getattr(args, "requested-release") + requested_release = arg_to_enum(Stability, getattr(args, "requested-release")) upper_bound = getattr(args, "upper-bound") - if upper_bound: + if upper_bound is not None: upper_bound = Version(upper_bound) - version_predicate = version_policies[getattr(args, "version-policy")] - version_policy = make_version_policy(version_predicate, requested_release, upper_bound) + version_policy_kind = arg_to_enum(VersionPolicyKind, getattr(args, "version-policy")) + version_policy = make_version_policy(version_policy_kind, requested_release, upper_bound) - # The structure of cache.json: https://gitlab.gnome.org/Infrastructure/sysadmin-bin/blob/master/ftpadmin#L762 - cache = json.loads(requests.get(f"https://ftp.gnome.org/pub/GNOME/sources/{package_name}/cache.json").text) - if type(cache) != list or cache[0] != 4: - print("Unknown format of cache.json file.", file=sys.stderr) + try: + versions = find_versions(package_name, version_policy) + except Exception as error: + print(error, file=sys.stderr) sys.exit(1) - versions = map(Version, cache[2][package_name]) - versions = sorted(filter(version_policy, versions)) - if len(versions) == 0: print("No versions matched.", file=sys.stderr) sys.exit(1) From 1f04ae9e63de3dbbf611bb8fac684c994bf085dc Mon Sep 17 00:00:00 2001 From: Jan Tojnar Date: Tue, 25 Oct 2022 14:24:30 +0000 Subject: [PATCH 15/18] =?UTF-8?q?amtk:=205.5.1=20=E2=86=92=205.5.2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://gitlab.gnome.org/World/amtk/-/compare/5.5.1...5.5.2 Changelog-Reviewed-By: Jan Tojnar --- pkgs/development/libraries/amtk/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/amtk/default.nix b/pkgs/development/libraries/amtk/default.nix index ab8cbf617412..26f9e7574408 100644 --- a/pkgs/development/libraries/amtk/default.nix +++ b/pkgs/development/libraries/amtk/default.nix @@ -15,13 +15,13 @@ stdenv.mkDerivation rec { pname = "amtk"; - version = "5.5.1"; + version = "5.5.2"; outputs = [ "out" "dev" "devdoc" ]; src = fetchurl { url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; - sha256 = "7Ilt0BfiwUNoUuXmCXD80IML0SFI1XzBvcDZOCa925w="; + sha256 = "x33S2PVex2tQItmW5RJ82S7GqhePo+jzP1fbukXfiIY="; }; nativeBuildInputs = [ From d4a8bdecc7d6e0d5c2e399a23f6624fd0d746327 Mon Sep 17 00:00:00 2001 From: Jan Tojnar Date: Tue, 25 Oct 2022 14:24:58 +0000 Subject: [PATCH 16/18] =?UTF-8?q?gnome.eog:=2043.0=20=E2=86=92=2043.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://gitlab.gnome.org/GNOME/eog/-/compare/43.0...43.1 Changelog-Reviewed-By: Jan Tojnar --- pkgs/desktops/gnome/core/eog/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/desktops/gnome/core/eog/default.nix b/pkgs/desktops/gnome/core/eog/default.nix index ccb4d439240f..66098eaded28 100644 --- a/pkgs/desktops/gnome/core/eog/default.nix +++ b/pkgs/desktops/gnome/core/eog/default.nix @@ -29,13 +29,13 @@ stdenv.mkDerivation rec { pname = "eog"; - version = "43.0"; + version = "43.1"; outputs = [ "out" "dev" "devdoc" ]; src = fetchurl { url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz"; - sha256 = "sha256-pSovPrGju1ADijNikCvHlRY+GphnY+6C0gQk566EVG8="; + sha256 = "sha256-/tef88oZusYvJxVcm91p7vh1hwuXHm3LCqOMCT0TGXE="; }; patches = [ From 91135c92cc7f6c72c021ad88160b3c9452c403db Mon Sep 17 00:00:00 2001 From: Jan Tojnar Date: Tue, 25 Oct 2022 14:25:18 +0000 Subject: [PATCH 17/18] =?UTF-8?q?gnome.gnome-remote-desktop:=2043.0=20?= =?UTF-8?q?=E2=86=92=2043.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://gitlab.gnome.org/GNOME/gnome-remote-desktop/-/compare/43.0...43.1 Changelog-Reviewed-By: Jan Tojnar --- pkgs/desktops/gnome/core/gnome-remote-desktop/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/desktops/gnome/core/gnome-remote-desktop/default.nix b/pkgs/desktops/gnome/core/gnome-remote-desktop/default.nix index e1655b2b7c50..daf0e8f4fcdc 100644 --- a/pkgs/desktops/gnome/core/gnome-remote-desktop/default.nix +++ b/pkgs/desktops/gnome/core/gnome-remote-desktop/default.nix @@ -30,11 +30,11 @@ stdenv.mkDerivation rec { pname = "gnome-remote-desktop"; - version = "43.0"; + version = "43.1"; src = fetchurl { url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz"; - hash = "sha256-NrWdIeyuRLllzZHmynwMAJ1gcOwxyEt3wERZXddSeAs="; + hash = "sha256-vYR8PKdzYJlTNEYs1GnkWhJHnxHAxI6WUCjtXLgHpbI="; }; nativeBuildInputs = [ From 938686871d6f12570fd64a93f0da025dc2a56c37 Mon Sep 17 00:00:00 2001 From: Jan Tojnar Date: Tue, 25 Oct 2022 14:26:14 +0000 Subject: [PATCH 18/18] =?UTF-8?q?gtk4:=204.8.1=20=E2=86=92=204.8.2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://gitlab.gnome.org/GNOME/gtk/-/compare/4.8.1...4.8.2 Changelog-Reviewed-By: Jan Tojnar --- pkgs/development/libraries/gtk/4.x.nix | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/pkgs/development/libraries/gtk/4.x.nix b/pkgs/development/libraries/gtk/4.x.nix index 7a6c7813224b..ac4b0b34794e 100644 --- a/pkgs/development/libraries/gtk/4.x.nix +++ b/pkgs/development/libraries/gtk/4.x.nix @@ -63,7 +63,7 @@ in stdenv.mkDerivation rec { pname = "gtk4"; - version = "4.8.1"; + version = "4.8.2"; outputs = [ "out" "dev" ] ++ lib.optionals x11Support [ "devdoc" ]; outputBin = "dev"; @@ -75,7 +75,7 @@ stdenv.mkDerivation rec { src = fetchurl { url = "mirror://gnome/sources/gtk/${lib.versions.majorMinor version}/gtk-${version}.tar.xz"; - sha256 = "XOjY3piiO9DI7KGmEJThwAm18AncvWC0XpkKjbG3Qv0="; + sha256 = "hbehYLbgLq+k59OPBG+HIPq1N9P+c8AchkMzqYOmkqk="; }; depsBuildBuild = [ @@ -179,7 +179,6 @@ stdenv.mkDerivation rec { postPatch = '' files=( - build-aux/meson/post-install.py build-aux/meson/gen-demo-header.py demos/gtk-demo/geninclude.py gdk/broadway/gen-c-array.py @@ -191,13 +190,6 @@ stdenv.mkDerivation rec { chmod +x ''${files[@]} patchShebangs ''${files[@]} - '' + - # Run-time dependency gi-docgen found: NO (tried pkgconfig and cmake) - # it should be a build-time dep for build - # TODO: send upstream - '' - substituteInPlace meson.build \ - --replace "'gi-docgen', ver" "'gi-docgen', native:true, ver" ''; preInstall = ''