Files
nixpkgs/pkgs/desktops/gnome/update.nix
NAHO c8d4dabc43 pkgs: remove optional builtins prefixes from prelude functions
Remove optional builtins prefixes from prelude functions by running:

    builtins=(
      abort
      baseNameOf
      break
      derivation
      derivationStrict
      dirOf
      false
      fetchGit
      fetchMercurial
      fetchTarball
      fetchTree
      fromTOML
      import
      isNull
      map
      null
      placeholder
      removeAttrs
      scopedImport
      throw
      toString
      true
    )

    fd \
      --type file \
      . \
      pkgs \
      --exec-batch sed --in-place --regexp-extended "
        s/\<builtins\.($(
          printf '%s\n' "${builtins[@]}" |
            paste --delimiter '|' --serial -
        ))\>/\1/g
      "

    nix fmt
2025-10-04 19:02:37 +02:00

114 lines
2.7 KiB
Nix
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
stdenv,
pkgs,
lib,
writeScript,
python3,
common-updater-scripts,
}:
{
packageName,
attrPath ? packageName,
versionPolicy ? "tagged",
freeze ? false,
}:
let
python = python3.withPackages (p: [
p.requests
p.libversion
]);
package =
lib.attrByPath (lib.splitString "." attrPath) (throw "Cannot find attribute ${attrPath}.")
pkgs;
packageVersion = lib.getVersion package;
upperBound =
let
versionComponents = lib.versions.splitVersion packageVersion;
minorVersion = lib.versions.minor packageVersion;
minorAvailable =
builtins.length versionComponents > 1 && builtins.match "[0-9]+" minorVersion != null;
nextMinor = builtins.fromJSON minorVersion + 1;
upperBound = "${lib.versions.major packageVersion}.${toString nextMinor}";
in
if builtins.isBool freeze then
lib.optionals (freeze && minorAvailable) [ upperBound ]
else if builtins.isString freeze then
[ freeze ]
else
throw "freeze argument needs to be either a boolean, or a version string.";
updateScript = writeScript "gnome-update-script" ''
#!${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";
command = [
updateScript
attrPath
packageName
packageVersion
versionPolicy
]
++ upperBound;
supportedFeatures = [
"commit"
];
inherit attrPath;
}