diff mbox series

[bug#68716,gnome-team,v4,1/7] gnu: Split gnome into more meta-packages.

Message ID 5e0b95c296a3abfe2da6c1828dfbbc1a47886083.1708087345.git.liliana.prikler@gmail.com
State New
Headers show
Series [bug#68716,gnome-team,v4,1/7] gnu: Split gnome into more meta-packages. | expand

Commit Message

Liliana Marie Prikler Feb. 16, 2024, 10:53 a.m. UTC
* gnu/packages/gnome.scm (gnome-meta-package): New syntax rule.
(gnome-meta-core-services, gnome-meta-core-shell, gnome-meta-core-utilities)
(gnome-essential-extras): New variables.
(gnome): Implement in terms of the former.
---
 gnu/packages/gnome.scm | 179 ++++++++++++++++++++++++-----------------
 1 file changed, 105 insertions(+), 74 deletions(-)


base-commit: 622df12ef389c9e91f68ae10c54c043f34828c83

Comments

Maxim Cournoyer Feb. 16, 2024, 7:44 p.m. UTC | #1
Hi,

Liliana Marie Prikler <liliana.prikler@gmail.com> writes:

> * gnu/packages/gnome.scm (gnome-meta-package): New syntax rule.
> (gnome-meta-core-services, gnome-meta-core-shell, gnome-meta-core-utilities)
> (gnome-essential-extras): New variables.
> (gnome): Implement in terms of the former.
> ---
>  gnu/packages/gnome.scm | 179 ++++++++++++++++++++++++-----------------
>  1 file changed, 105 insertions(+), 74 deletions(-)
>
> diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
> index 7397148c2b..4fde75f612 100644
> --- a/gnu/packages/gnome.scm
> +++ b/gnu/packages/gnome.scm
> @@ -10154,52 +10154,76 @@ (define-public gnome-weather
>      (home-page "https://wiki.gnome.org/Apps/Weather")
>      (license license:gpl2+)))
>  
> -(define-public gnome
> +(define-syntax-rule (gnome-meta-package %name propagate)

It'd be nice to allow any kind of extra fields to be appended to the
package definition, as done e.g. for the make-openjdk syntax.

>    (package
> -    (name "gnome")
> +    (name %name)

Nitpick: I'd use name*, as %name is often associated with globals in Guix.

>      (version (package-version gnome-shell))
>      (source #f)
>      (build-system trivial-build-system)
> -    (arguments '(#:builder (begin (mkdir %output) #t)))
> -    (propagated-inputs
> -     `(,@(if (string-prefix? "x86_64" (%current-system))
> -             ;; XXX: EoG requires librsvg-next, which depends on Rust, which currently
> -             ;; only works on x86_64, so exclude it on other architectures.
> -             (list eog)
> -             '())
> -       ,@(list
> -          ;; GNOME-Core-OS-Services.
> -          accountsservice
> -          network-manager
> -          packagekit
> -          upower
> -          ;; GNOME-Core-Shell.
> -          adwaita-icon-theme
> -          gdm
> -          glib-networking
> -          gnome-backgrounds
> -          gnome-bluetooth
> -          gnome-color-manager
> -          gnome-control-center
> -          gnome-desktop
> -          gnome-initial-setup
> -          gnome-keyring
> -          gnome-menus
> -          gnome-session
> -          gnome-settings-daemon
> -          gnome-shell
> -          gnome-shell-extensions
> -          gnome-themes-extra
> -          gnome-user-docs
> -          gnome-user-share
> -          gsettings-desktop-schemas
> -          gvfs
> -          mutter
> -          orca
> -          rygel
> -          sushi
> -          ;; GNOME-Core-Utilities.
> -          baobab
> +    (arguments
> +     (list #:builder
> +           #~(begin
> +               (format (current-warning-port)
> +                       "Building ~a is useless.  \
> +Refer to its propagated inputs instead.\n"
> +                       #$name)
> +               (mkdir #$output))))
> +    (propagated-inputs propagate)
> +    (home-page "https://www.gnome.org")
> +    (synopsis "The GNU desktop environment")
> +    (description
> +     "GNOME is the graphical desktop for GNU.  It includes a wide variety of

I think it's misleading to associate GNOME with GNU at this point in
time.  They aren't even a GNU project anymore.

> +applications for browsing the web, editing text and images, creating
> +documents and diagrams, playing media, scanning, and much more.")
> +    (license license:gpl2+)
> +    (properties `((hidden? . #t)))))
> +
> +(define-public gnome-meta-core-services
> +  (gnome-meta-package
> +   "gnome-meta-core-services"
> +   (list accountsservice
> +         network-manager
> +         packagekit
> +         upower)))
> +
> +(define-public gnome-meta-core-shell
> +  (gnome-meta-package
> +   "gnome-meta-core-shell"
> +   (list adwaita-icon-theme
> +         gdm
> +         glib-networking
> +         gnome-backgrounds
> +         gnome-bluetooth
> +         gnome-color-manager
> +         gnome-control-center
> +         gnome-desktop
> +         gnome-initial-setup
> +         gnome-keyring
> +         gnome-menus
> +         gnome-session
> +         gnome-settings-daemon
> +         gnome-shell
> +         gnome-shell-extensions
> +         gnome-themes-extra
> +         gnome-user-docs
> +         gnome-user-share
> +         gsettings-desktop-schemas
> +         gvfs
> +         mutter
> +         orca
> +         rygel
> +         sushi)))
> +
> +(define-public gnome-meta-core-utilities
> +  (gnome-meta-package
> +   "gnome-meta-core-utilities"
> +   (append
> +    ;; XXX: EoG requires librsvg-next, which depends on Rust, which currently
> +    ;; only works on x86_64, so exclude it on other architectures.
> +    (if (string-prefix? "x86_64" (%current-system))
> +        (list eog)
> +        '())
> +    (list baobab
>            cheese
>            epiphany
>            evince
> @@ -10224,38 +10248,45 @@ (define-public gnome
>            totem
>            tracker-miners
>            xdg-desktop-portal-gnome
> -          yelp
> -          ;; Others.
> -          gnome-online-accounts
> -          hicolor-icon-theme
> -
> -          ;; Packages not part of GNOME proper but that are needed for a good
> -          ;; experience.  See <https://bugs.gnu.org/39646>.
> -          ;; XXX: Find out exactly which ones are needed and why.
> -          at-spi2-core
> -          dbus
> -          dconf
> -          desktop-file-utils
> -          font-abattis-cantarell
> -          font-dejavu
> -          gnome-default-applications
> -          gst-plugins-base
> -          gst-plugins-good
> -          gucharmap
> -          pinentry-gnome3
> -          pulseaudio
> -          shared-mime-info
> -          system-config-printer
> -          xdg-user-dirs
> -          yelp
> -          zenity)))
> -    (synopsis "The GNU desktop environment")
> -    (home-page "https://www.gnome.org/")
> -    (description
> -     "GNOME is the graphical desktop for GNU.  It includes a wide variety of
> -applications for browsing the web, editing text and images, creating
> -documents and diagrams, playing media, scanning, and much more.")
> -    (license license:gpl2+)))
> +          yelp))))
> +
> +(define-public gnome-essential-extras
> +  (package
> +    (inherit
> +     (gnome-meta-package
> +      "gnome-essential-extras"
> +      (list at-spi2-core
> +            dbus
> +            dconf
> +            desktop-file-utils
> +            font-abattis-cantarell
> +            font-dejavu
> +            gnome-default-applications
> +            gnome-online-accounts
> +            gst-plugins-base
> +            gst-plugins-good
> +            gucharmap
> +            hicolor-icon-theme
> +            pinentry-gnome3
> +            pulseaudio
> +            shared-mime-info
> +            system-config-printer
> +            xdg-user-dirs
> +            yelp
> +            zenity)))
> +    (description "This package provides a list of packages required for
> +a good GNOME experience, mixed from core dependencies and other implicitly
> +relied-on packages.")))
> +
> +(define-public gnome
> +  (package
> +    (inherit (gnome-meta-package "gnome"
> +                                 (append-map package-propagated-inputs
> +                                             (list gnome-meta-core-services
> +                                                   gnome-meta-core-shell
> +                                                   gnome-meta-core-utilities
> +                                                   gnome-essential-extras))))
> +    (properties (list))))

With the make-openjdk like change I suggested above, this could be
expressed without using inherit as:

--8<---------------cut here---------------start------------->8---
(define-public gnome
  (gnome-meta-package
   "gnome"
   (append-map package-propagated-inputs
               (list gnome-meta-core-services
               gnome-meta-core-shell
               gnome-meta-core-utilities
               gnome-essential-extras))
   (properties '())))
--8<---------------cut here---------------end--------------->8---

which I find more pleasing to read.

Otherwise,

Reviewed-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Liliana Marie Prikler Feb. 16, 2024, 8:08 p.m. UTC | #2
Am Freitag, dem 16.02.2024 um 14:44 -0500 schrieb Maxim Cournoyer:
> Hi,
> 
> Liliana Marie Prikler <liliana.prikler@gmail.com> writes:
> 
> > * gnu/packages/gnome.scm (gnome-meta-package): New syntax rule.
> > (gnome-meta-core-services, gnome-meta-core-shell, gnome-meta-core-
> > utilities)
> > (gnome-essential-extras): New variables.
> > (gnome): Implement in terms of the former.
> > ---
> >  gnu/packages/gnome.scm | 179 ++++++++++++++++++++++++-------------
> > ----
> >  1 file changed, 105 insertions(+), 74 deletions(-)
> > 
> > diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
> > index 7397148c2b..4fde75f612 100644
> > --- a/gnu/packages/gnome.scm
> > +++ b/gnu/packages/gnome.scm
> > @@ -10154,52 +10154,76 @@ (define-public gnome-weather
> >      (home-page "https://wiki.gnome.org/Apps/Weather")
> >      (license license:gpl2+)))
> >  
> > -(define-public gnome
> > +(define-syntax-rule (gnome-meta-package %name propagate)
> 
> It'd be nice to allow any kind of extra fields to be appended to the
> package definition, as done e.g. for the make-openjdk syntax.
Thanks for the hint.

> >    (package
> > -    (name "gnome")
> > +    (name %name)
> 
> Nitpick: I'd use name*, as %name is often associated with globals in
> Guix.
I think I'll be using a dummy name instead so that we can use regular
field syntax.

> >      (version (package-version gnome-shell))
> >      (source #f)
> >      (build-system trivial-build-system)
> > -    (arguments '(#:builder (begin (mkdir %output) #t)))
> > -    (propagated-inputs
> > -     `(,@(if (string-prefix? "x86_64" (%current-system))
> > -             ;; XXX: EoG requires librsvg-next, which depends on
> > Rust, which currently
> > -             ;; only works on x86_64, so exclude it on other
> > architectures.
> > -             (list eog)
> > -             '())
> > -       ,@(list
> > -          ;; GNOME-Core-OS-Services.
> > -          accountsservice
> > -          network-manager
> > -          packagekit
> > -          upower
> > -          ;; GNOME-Core-Shell.
> > -          adwaita-icon-theme
> > -          gdm
> > -          glib-networking
> > -          gnome-backgrounds
> > -          gnome-bluetooth
> > -          gnome-color-manager
> > -          gnome-control-center
> > -          gnome-desktop
> > -          gnome-initial-setup
> > -          gnome-keyring
> > -          gnome-menus
> > -          gnome-session
> > -          gnome-settings-daemon
> > -          gnome-shell
> > -          gnome-shell-extensions
> > -          gnome-themes-extra
> > -          gnome-user-docs
> > -          gnome-user-share
> > -          gsettings-desktop-schemas
> > -          gvfs
> > -          mutter
> > -          orca
> > -          rygel
> > -          sushi
> > -          ;; GNOME-Core-Utilities.
> > -          baobab
> > +    (arguments
> > +     (list #:builder
> > +           #~(begin
> > +               (format (current-warning-port)
> > +                       "Building ~a is useless.  \
> > +Refer to its propagated inputs instead.\n"
> > +                       #$name)
> > +               (mkdir #$output))))
> > +    (propagated-inputs propagate)
> > +    (home-page "https://www.gnome.org")
> > +    (synopsis "The GNU desktop environment")
> > +    (description
> > +     "GNOME is the graphical desktop for GNU.  It includes a wide
> > variety of
> 
> I think it's misleading to associate GNOME with GNU at this point in
> time.  They aren't even a GNU project anymore.
I took the synopsis and description of the existing GNOME package. 
Feel free to suggest an alternative.

Cheers
>
Vivien Kraus Feb. 17, 2024, 7:50 a.m. UTC | #3
Hello,

Le vendredi 16 février 2024 à 21:08 +0100, Liliana Marie Prikler a
écrit :
> > > +     "GNOME is the graphical desktop for GNU.  It includes a
> > > wide
> > > variety of
> > 
> > I think it's misleading to associate GNOME with GNU at this point
> > in
> > time.  They aren't even a GNU project anymore.
> I took the synopsis and description of the existing GNOME package. 
> Feel free to suggest an alternative.
Here is my suggestion:

GNOME is a graphical desktop environment.  It includes a wide variety
of applications with a common interface for browsing the web, editing
text and images, creating documents and diagrams, playing media,
scanning, and much more.  It also provides libraries and tools to help
write such applications.

What do you think?

Best regards,

Vivien
diff mbox series

Patch

diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 7397148c2b..4fde75f612 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -10154,52 +10154,76 @@  (define-public gnome-weather
     (home-page "https://wiki.gnome.org/Apps/Weather")
     (license license:gpl2+)))
 
-(define-public gnome
+(define-syntax-rule (gnome-meta-package %name propagate)
   (package
-    (name "gnome")
+    (name %name)
     (version (package-version gnome-shell))
     (source #f)
     (build-system trivial-build-system)
-    (arguments '(#:builder (begin (mkdir %output) #t)))
-    (propagated-inputs
-     `(,@(if (string-prefix? "x86_64" (%current-system))
-             ;; XXX: EoG requires librsvg-next, which depends on Rust, which currently
-             ;; only works on x86_64, so exclude it on other architectures.
-             (list eog)
-             '())
-       ,@(list
-          ;; GNOME-Core-OS-Services.
-          accountsservice
-          network-manager
-          packagekit
-          upower
-          ;; GNOME-Core-Shell.
-          adwaita-icon-theme
-          gdm
-          glib-networking
-          gnome-backgrounds
-          gnome-bluetooth
-          gnome-color-manager
-          gnome-control-center
-          gnome-desktop
-          gnome-initial-setup
-          gnome-keyring
-          gnome-menus
-          gnome-session
-          gnome-settings-daemon
-          gnome-shell
-          gnome-shell-extensions
-          gnome-themes-extra
-          gnome-user-docs
-          gnome-user-share
-          gsettings-desktop-schemas
-          gvfs
-          mutter
-          orca
-          rygel
-          sushi
-          ;; GNOME-Core-Utilities.
-          baobab
+    (arguments
+     (list #:builder
+           #~(begin
+               (format (current-warning-port)
+                       "Building ~a is useless.  \
+Refer to its propagated inputs instead.\n"
+                       #$name)
+               (mkdir #$output))))
+    (propagated-inputs propagate)
+    (home-page "https://www.gnome.org")
+    (synopsis "The GNU desktop environment")
+    (description
+     "GNOME is the graphical desktop for GNU.  It includes a wide variety of
+applications for browsing the web, editing text and images, creating
+documents and diagrams, playing media, scanning, and much more.")
+    (license license:gpl2+)
+    (properties `((hidden? . #t)))))
+
+(define-public gnome-meta-core-services
+  (gnome-meta-package
+   "gnome-meta-core-services"
+   (list accountsservice
+         network-manager
+         packagekit
+         upower)))
+
+(define-public gnome-meta-core-shell
+  (gnome-meta-package
+   "gnome-meta-core-shell"
+   (list adwaita-icon-theme
+         gdm
+         glib-networking
+         gnome-backgrounds
+         gnome-bluetooth
+         gnome-color-manager
+         gnome-control-center
+         gnome-desktop
+         gnome-initial-setup
+         gnome-keyring
+         gnome-menus
+         gnome-session
+         gnome-settings-daemon
+         gnome-shell
+         gnome-shell-extensions
+         gnome-themes-extra
+         gnome-user-docs
+         gnome-user-share
+         gsettings-desktop-schemas
+         gvfs
+         mutter
+         orca
+         rygel
+         sushi)))
+
+(define-public gnome-meta-core-utilities
+  (gnome-meta-package
+   "gnome-meta-core-utilities"
+   (append
+    ;; XXX: EoG requires librsvg-next, which depends on Rust, which currently
+    ;; only works on x86_64, so exclude it on other architectures.
+    (if (string-prefix? "x86_64" (%current-system))
+        (list eog)
+        '())
+    (list baobab
           cheese
           epiphany
           evince
@@ -10224,38 +10248,45 @@  (define-public gnome
           totem
           tracker-miners
           xdg-desktop-portal-gnome
-          yelp
-          ;; Others.
-          gnome-online-accounts
-          hicolor-icon-theme
-
-          ;; Packages not part of GNOME proper but that are needed for a good
-          ;; experience.  See <https://bugs.gnu.org/39646>.
-          ;; XXX: Find out exactly which ones are needed and why.
-          at-spi2-core
-          dbus
-          dconf
-          desktop-file-utils
-          font-abattis-cantarell
-          font-dejavu
-          gnome-default-applications
-          gst-plugins-base
-          gst-plugins-good
-          gucharmap
-          pinentry-gnome3
-          pulseaudio
-          shared-mime-info
-          system-config-printer
-          xdg-user-dirs
-          yelp
-          zenity)))
-    (synopsis "The GNU desktop environment")
-    (home-page "https://www.gnome.org/")
-    (description
-     "GNOME is the graphical desktop for GNU.  It includes a wide variety of
-applications for browsing the web, editing text and images, creating
-documents and diagrams, playing media, scanning, and much more.")
-    (license license:gpl2+)))
+          yelp))))
+
+(define-public gnome-essential-extras
+  (package
+    (inherit
+     (gnome-meta-package
+      "gnome-essential-extras"
+      (list at-spi2-core
+            dbus
+            dconf
+            desktop-file-utils
+            font-abattis-cantarell
+            font-dejavu
+            gnome-default-applications
+            gnome-online-accounts
+            gst-plugins-base
+            gst-plugins-good
+            gucharmap
+            hicolor-icon-theme
+            pinentry-gnome3
+            pulseaudio
+            shared-mime-info
+            system-config-printer
+            xdg-user-dirs
+            yelp
+            zenity)))
+    (description "This package provides a list of packages required for
+a good GNOME experience, mixed from core dependencies and other implicitly
+relied-on packages.")))
+
+(define-public gnome
+  (package
+    (inherit (gnome-meta-package "gnome"
+                                 (append-map package-propagated-inputs
+                                             (list gnome-meta-core-services
+                                                   gnome-meta-core-shell
+                                                   gnome-meta-core-utilities
+                                                   gnome-essential-extras))))
+    (properties (list))))
 
 (define-public byzanz
   ;; The last stable release of Byzanz was in 2011, but there have been many