Merge pull request #197238 from NixOS/gnome

GNOME: 43.0 → 43.1
This commit is contained in:
Jan Tojnar 2022-10-25 17:40:25 +02:00 committed by GitHub
commit dd21d0b041
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 193 additions and 88 deletions

View File

@ -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 = [

View File

@ -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 = [

View File

@ -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 = [

View File

@ -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;

View File

@ -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 = [

View File

@ -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 = [

View File

@ -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,

View File

@ -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 = [

View File

@ -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 = [

View File

@ -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 = [

View File

@ -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 = [

View File

@ -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)

View File

@ -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"
#!${python}/bin/python
import json
import os
import subprocess
import sys
from libversion import Version
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",
)
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";

View File

@ -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 = [

View File

@ -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 = ''

View File

@ -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 = [

View File

@ -20,11 +20,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 = [