Subject: Re: [bug#75375] [PATCH v1 1/2] teams: gnome: Add gnome-manifest.

From: Liliana Marie Prikler <[email-masked]>
Date: Sun, 19 Jan 2025 07:45:52 +0100

Hi Maxim,

Am Sonntag, dem 19.01.2025 um 11:20 +0900 schrieb Maxim Cournoyer:
> Good idea!  I have an unfinished branch locally where I was devising
> the same; it looked like this:
> 
> --8<---------------cut here---------------start------------->8---
> +(use-modules (guix git-download)
> +             (guix packages)
> +             (guix profiles)
> +             (guix utils)
> +             (gnu packages))
> +
> +;;; Commentary:
> +;;;
> +;;; This manifest can be used to update the GNOME packages
> collection, via
> +;;; e.g.:
> +;;;
> +;;; ./pre-inst-env guix refresh -u -m etc/teams/gnome/gnome-
> manifest.scm \
> +;;;   --target-version=48
> +;;;
> +;;; Code:
> +
> +(define (gnome-package? p)
> +  "Predicate to check if P is a GNOME package."
> +  (let ((uri (and=> (package-source p)
> +                    (lambda (x)
> +                      (and (origin? x)
> +                           (origin-uri x)))))
> +        (loc (package-location p)))
> +    (or (and uri
> +             (cond
> +              ((string? uri)
> +               (string-prefix? "mirror://gnome/" uri))
> +              ((git-reference? uri)
> +               (string-contains "gitlab.gnome.org"
> +                                (git-reference-url uri)))
> +              (else #f)))
> +        (and loc
> +             (string-contains "gnu/packages/gnome"
> +                              (location-file loc))))))
> +
> +(define* (gnome-packages-manifest)
> +  "Return a manifest of all GNOME packages."
> +  (manifest
> +   (map package->manifest-entry
> +        (fold-packages
> +         (lambda (package lst)
> +           (if (gnome-package? package)
> +               (cons package lst)
> +               lst))
> +         '()))))
> --8<---------------cut here---------------end--------------->8---
This is a slightly different manifest that updates everything under the
GNOME umbrella, i.e. including "World" packages that follow a different
versioning scheme, some of which are more experimental than gnome
itself.  

> The comment with --target-version=48 (partial version) depends on a
> complete but unreleased feature (I'll publish it soon), that enables
> to do so.
I'm not sure how useful this feature will be, given that the gnome-
metapackage refers to packages with different versioning schemes
already.  I do think we need a way to distinguish unstable versions for
those packages that still follow the old versioning scheme as well.

> I'm also not sure of the merit of separating extensions from other
> GNOME packages?
The idea is that with a recent enough gnome-shell updating the
extensions can be done with a single command, without affecting other
packages.  Since extensions don't have common versions, it only ever
makes sense to pull the latest when gnome-shell is the latest as well
(or at least close to it).

Cheers