diff options
-rwxr-xr-x | maintainers/scripts/update.nix | 2 | ||||
-rw-r--r-- | maintainers/scripts/update.py | 4 | ||||
-rw-r--r-- | pkgs/desktops/gnome/update.nix | 38 |
3 files changed, 32 insertions, 12 deletions
diff --git a/maintainers/scripts/update.nix b/maintainers/scripts/update.nix index d881d68301bad..1a2f06c73a2c5 100755 --- a/maintainers/scripts/update.nix +++ b/maintainers/scripts/update.nix @@ -147,7 +147,7 @@ let to run update script for specific package, or - % nix-shell maintainers/scripts/update.nix --arg predicate '(path: pkg: builtins.isList pkg.updateScript && builtins.length pkg.updateScript >= 1 && (let script = builtins.head pkg.updateScript; in builtins.isAttrs script && script.name == "gnome-update-script"))' + % nix-shell maintainers/scripts/update.nix --arg predicate '(path: pkg: pkg.updateScript.name or null == "gnome-update-script")' to run update script for all packages matching given predicate, or diff --git a/maintainers/scripts/update.py b/maintainers/scripts/update.py index 06b12a0ee04ec..07e0b5c68305c 100644 --- a/maintainers/scripts/update.py +++ b/maintainers/scripts/update.py @@ -88,6 +88,10 @@ async def commit_changes(name: str, merge_lock: asyncio.Lock, worktree: str, bra async with merge_lock: await check_subprocess('git', 'add', *change['files'], cwd=worktree) commit_message = '{attrPath}: {oldVersion} → {newVersion}'.format(**change) + if 'commitMessage' in change: + commit_message = change['commitMessage'] + elif 'commitBody' in change: + commit_message = commit_message + '\n\n' + change['commitBody'] await check_subprocess('git', 'commit', '--quiet', '-m', commit_message, cwd=worktree) await check_subprocess('git', 'cherry-pick', branch) diff --git a/pkgs/desktops/gnome/update.nix b/pkgs/desktops/gnome/update.nix index 928eac45160ab..f5db71174ad87 100644 --- a/pkgs/desktops/gnome/update.nix +++ b/pkgs/desktops/gnome/update.nix @@ -1,26 +1,42 @@ -{ stdenv, pkgs, lib, writeScript, python3, common-updater-scripts }: +{ stdenv, bash, pkgs, lib, writeScript, python3, common-updater-scripts }: { packageName, attrPath ? packageName, versionPolicy ? "tagged", freeze ? false }: let python = python3.withPackages (p: [ p.requests p.libversion ]); - upperBoundFlag = + package = lib.attrByPath (lib.splitString "." attrPath) (throw "Cannot find attribute ‘${attrPath}’.") pkgs; + packageVersion = lib.getVersion package; + upperBound = let - package = lib.attrByPath (lib.splitString "." attrPath) (throw "Cannot find attribute ‘${attrPath}’.") pkgs; - packageVersion = lib.getVersion package; 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}.${builtins.toString nextMinor}"; - in lib.optionalString (freeze && minorAvailable) ''--upper-bound="${upperBound}"''; + in lib.optionals (freeze && minorAvailable) [ upperBound ]; updateScript = writeScript "gnome-update-script" '' - #!${stdenv.shell} + #!${bash}/bin/bash set -o errexit - package_name="$1" - attr_path="$2" - version_policy="$3" + 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}" "$package_name" "$version_policy" "stable" ${upperBoundFlag}) + 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'" } ]' ''; -in [ updateScript packageName attrPath versionPolicy ] +in { + name = "gnome-update-script"; + command = [ updateScript attrPath packageName packageVersion versionPolicy ] ++ upperBound; + supportedFeatures = [ + "commit" + ]; +} |