diff options
author | Jan Tojnar <jtojnar@gmail.com> | 2022-10-25 17:40:25 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-25 17:40:25 +0200 |
commit | dd21d0b041f34b00aa1f4e1781af6a09d93a642e (patch) | |
tree | 41bbdb5657cb0046571083432fa91ebd9e9a281d /pkgs/desktops/gnome | |
parent | 0ad1d02c6938db498d7ba7ca23a6ca48176bb4e9 (diff) | |
parent | 938686871d6f12570fd64a93f0da025dc2a56c37 (diff) |
Merge pull request #197238 from NixOS/gnome
GNOME: 43.0 → 43.1
Diffstat (limited to 'pkgs/desktops/gnome')
11 files changed, 184 insertions, 71 deletions
diff --git a/pkgs/desktops/gnome/apps/gnome-calendar/default.nix b/pkgs/desktops/gnome/apps/gnome-calendar/default.nix index 1f178d964f6d1..f2c0a3aaee351 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 = [ diff --git a/pkgs/desktops/gnome/apps/gnome-maps/default.nix b/pkgs/desktops/gnome/apps/gnome-maps/default.nix index bca540feeb0a5..1e74521d3e9d4 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; diff --git a/pkgs/desktops/gnome/core/eog/default.nix b/pkgs/desktops/gnome/core/eog/default.nix index e0a943a8e1ca3..fb7ea8404a364 100644 --- a/pkgs/desktops/gnome/core/eog/default.nix +++ b/pkgs/desktops/gnome/core/eog/default.nix @@ -30,13 +30,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 = [ diff --git a/pkgs/desktops/gnome/core/evolution-data-server/default.nix b/pkgs/desktops/gnome/core/evolution-data-server/default.nix index 9f5721fcd54d8..0f643e1743260 100644 --- a/pkgs/desktops/gnome/core/evolution-data-server/default.nix +++ b/pkgs/desktops/gnome/core/evolution-data-server/default.nix @@ -52,13 +52,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 87d5ca56b7c50..0ad35d4742d21 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, diff --git a/pkgs/desktops/gnome/core/gnome-control-center/default.nix b/pkgs/desktops/gnome/core/gnome-control-center/default.nix index bd2777610fa3d..4161598634f9d 100644 --- a/pkgs/desktops/gnome/core/gnome-control-center/default.nix +++ b/pkgs/desktops/gnome/core/gnome-control-center/default.nix @@ -64,11 +64,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 = [ diff --git a/pkgs/desktops/gnome/core/gnome-initial-setup/default.nix b/pkgs/desktops/gnome/core/gnome-initial-setup/default.nix index 7bf3e42ff3ca5..f1d63a78df168 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 = [ diff --git a/pkgs/desktops/gnome/core/gnome-remote-desktop/default.nix b/pkgs/desktops/gnome/core/gnome-remote-desktop/default.nix index e1655b2b7c508..daf0e8f4fcdca 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 = [ diff --git a/pkgs/desktops/gnome/core/gnome-software/default.nix b/pkgs/desktops/gnome/core/gnome-software/default.nix index 2ab87cf2924a7..e971d5ce9293c 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 = [ diff --git a/pkgs/desktops/gnome/find-latest-version.py b/pkgs/desktops/gnome/find-latest-version.py index 3078999e3e5bf..1cc2b55fadb3a 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) diff --git a/pkgs/desktops/gnome/update.nix b/pkgs/desktops/gnome/update.nix index e945e005d48d0..ce8ed07a5ae3c 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,62 @@ 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" - - flvFlags=("$package_name" "$version_policy" "''${GNOME_UPDATE_STABILITY:-stable}") - - if (( $# >= 5 )); then - upper_bound="$5" - flvFlags+=("--upper-bound=$upper_bound") - fi - - 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'" } ]' + #!${python}/bin/python + import json + import os + import subprocess + import sys + from libversion import Version + + _, attr_path, package_name, package_version, version_policy, *remaining_args = sys.argv + + flv_args = [ + package_name, + version_policy, + os.environ.get("GNOME_UPDATE_STABILITY", "stable"), + ] + + 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", + ) + + if Version(latest_tag) <= Version(package_version): + # No newer updates found. + print(json.dumps([])) + sys.exit(0) + + latest_tag = latest_tag.strip() + subprocess.run( + [ + "${common-updater-scripts}/bin/update-source-version", + attr_path, + latest_tag, + ], + check=True, + ) + + report = [ + { + "attrPath": attr_path, + "commitBody": f"https://gitlab.gnome.org/GNOME/{package_name}/-/compare/{package_version}...{latest_tag}", + }, + ] + + print(json.dumps(report)) ''; in { name = "gnome-update-script"; |