diff mbox series

[bug#60294] gnu: Add libxapp.

Message ID BY5PR07MB70293260AAFFF2041C5EB0E499EE9@BY5PR07MB7029.namprd07.prod.outlook.com
State New
Headers show
Series [bug#60294] gnu: Add libxapp. | expand

Commit Message

Wamm K. D Dec. 24, 2022, 7:30 a.m. UTC
* gnu/packages/cinnamon.scm (libxapp): New variable.
---
I wasn't sure where to put this as, while definitely used by Cinnamon,
I think this is used by Mate, as well (and possibly XFCE?). I don't
know if a mint.scm file might make any sense as it's quite literally
under the Linux Mint repo. account? If it would be better to place
this elsewhere, just let me know and I'll adjust.

 gnu/packages/cinnamon.scm | 72 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 72 insertions(+)

Comments

Liliana Marie Prikler Dec. 24, 2022, 10:35 a.m. UTC | #1
Am Samstag, dem 24.12.2022 um 01:30 -0600 schrieb Wamm K. D:
> * gnu/packages/cinnamon.scm (libxapp): New variable.
> ---
> I wasn't sure where to put this as, while definitely used by
> Cinnamon,
> I think this is used by Mate, as well (and possibly XFCE?). I don't
> know if a mint.scm file might make any sense as it's quite literally
> under the Linux Mint repo. account? If it would be better to place
> this elsewhere, just let me know and I'll adjust.
I think it's in the right location.
> 
>  gnu/packages/cinnamon.scm | 72
> +++++++++++++++++++++++++++++++++++++++
>  1 file changed, 72 insertions(+)
> 
> diff --git a/gnu/packages/cinnamon.scm b/gnu/packages/cinnamon.scm
> index fe33e797e4..c1f258c18d 100644
> --- a/gnu/packages/cinnamon.scm
> +++ b/gnu/packages/cinnamon.scm
> @@ -26,6 +26,7 @@ (define-module (gnu packages cinnamon)
>    #:use-module (guix utils)
>    #:use-module (guix build-system gnu)
>    #:use-module (gnu packages)
> +  #:use-module (gnu packages admin)
>    #:use-module (gnu packages autotools)
>    #:use-module (gnu packages freedesktop)
>    #:use-module (gnu packages gettext)
> @@ -37,6 +38,77 @@ (define-module (gnu packages cinnamon)
>    #:use-module (gnu packages python)
>    #:use-module (gnu packages xorg))
>  
> +(define-public libxapp
> +  (package
> +    (name "libxapp")
> +    (version "2.4.2")
> +    (source (origin
> +              (method git-fetch)
> +              (uri (git-reference
> +                    (url "https://github.com/linuxmint/xapp/")
> +                    (commit version)))
> +              (sha256
> +               (base32
> +               
> "0cy9g0zqcbx9zscc9qavqmghfyfb8244cg299llv1ha8n6mpxl3s"))))
> +    (build-system meson-build-system)
> +    (arguments
> +     (list
> +      #:phases
> +      #~(modify-phases %standard-phases
> +          (add-before 'configure 'set-gtk-module-path
> +            (lambda* (#:key inputs outputs #:allow-other-keys)
> +              (substitute* "libxapp/meson.build"
> +                (("gtk3_dep\\.get_pkgconfig_variable[(]'libdir'[)]")
> +                 (string-append "'" (assoc-ref outputs "out")
> "/lib'")))
> +
> +              (substitute* "pygobject/meson.build"
> +                (("get_option[(]'py-overrides-dir'[)]")
> +                 (string-append "'"
> +                                (assoc-ref outputs "out")
> +                                "/lib/python"
> +                                #$(version-major+minor (package-
> version python))
> +                                "/site-packages/gi/overrides'")))
I think python-build-system has a function to get this version in a
more reliable way.

> +              (substitute* "scripts/pastebin"
> +                (("'nc'") (string-append "'"
> +                                         (assoc-ref inputs "netcat")
> +                                         "/bin/nc'")))
Use search-input-file.
> +              (substitute* "scripts/upload-system-info"
> +                (("'inxi'") (string-append "'"
> +                                           (assoc-ref inputs "inxi-
> minimal")
> +                                           "/bin/inxi'"))
Use search-input-file.
> +                (("'/usr/bin/pastebin'") (string-append "'"
> +                                                        (assoc-ref
> outputs "out")
> +                                                       
> "/bin/pastebin'"))
Oof, fine, but note that you can also write #$output
> +                (("'xdg-open'") (string-append "'"
> +                                               (assoc-ref inputs
> "xdg-utils")
> +                                               "/bin/xdg-
> open'"))))))))
Use search-input-file.
> +    (inputs
> +     (list dbus
> +           glib ; for gio
> +           gtk+
> +           inxi-minimal ; used by upload-system-info
> +           libdbusmenu
> +           libgnomekbd
> +           netcat ; used by pastebin
> +           xdg-utils ; used by upload-system-info
> +           ))
> +    (native-inputs
> +     (list gettext-minimal
> +           `(,glib "bin") ; for glib-mkenums
> +           gobject-introspection
> +           pkg-config
> +           python
> +           python-pygobject
> +           vala))
> +    (home-page "https://github.com/linuxmint/xapp")
> +    (synopsis "Cross-desktop libraries and common resources for X-
> apps")
> +    (description
> +     "The components which are common to multiple GTK desktop
> environments
> +(Cinnamon, MATE and Xfce) and required to implement cross-DE
> solutions.")
The description should consist of full sentences.
Also, since X-Apps are quite specific to Linux Mint, you should
probably not take folks knowing what they are for granted.
> +    (license license:lgpl3)))
No +?

Cheers
Wamm K. D Dec. 24, 2022, 11:23 a.m. UTC | #2
On Saturday, December 24, 2022 at 04:36:02 AM CST, Liliana Marie Prikler <liliana.prikler@gmail.com> wrote: 

Am Samstag, dem 24.12.2022 um 01:30 -0600 schrieb Wamm K. D:
> > +              (substitute* "pygobject/meson.build"
> > +                (("get_option[(]'py-overrides-dir'[)]")
> > +                 (string-append "'"
> > +                                (assoc-ref outputs "out")
> > +                                "/lib/python"
> > +                                #$(version-major+minor (package-
> > version python))
> > +                                "/site-packages/gi/overrides'")))
> I think python-build-system has a function to get this version in a
> more reliable way.

Would you possibly know any more details on it? Just looking through the module, I don't see any functions regarding version number, I'm afraid, and it's not intuitive to me how I might use it in this context if I'm using a different build system for the package.

> > +                (("'/usr/bin/pastebin'") (string-append "'"
> > +                                                        (assoc-ref
> > outputs "out")
> > +                                                       
> > "/bin/pastebin'"))
> Oof, fine, but note that you can also write #$output

Fair; I'd thought about it but the example I was working off of was using G-expressions and did it this way so I just went with it.

Something I've wondered: is there a point to having the lambda arguments be "#:key outputs", if you can just use "#$output"? I've seen a few setup their lambda that way only to use "#$output" and not ever use "outputs".

I may just be missing something regarding G-expressions, though.

> > +    (synopsis "Cross-desktop libraries and common resources for X-
> > apps")
> > +    (description
> > +     "The components which are common to multiple GTK desktop
> > environments
> > +(Cinnamon, MATE and Xfce) and required to implement cross-DE
> > solutions.")
> The description should consist of full sentences.
> Also, since X-Apps are quite specific to Linux Mint, you should
> probably not take folks knowing what they are for granted.

True but is there any easy way to specify what they're related to without making it much longer than just a synopsis?

"Cross-desktop libraries and common resources" can apply to many things and is generic to the point of being unhelpful, I'd think.

I could always do "developed by Linux Mint" instead of "for X-apps" which might be more familiar but, again, it borders to being unhelpfully unspecific, again (even if less so), to me; there are probably a lot of "Cross-desktop libraries and common resources" developed by Linux Mint. This particular library was developed for use with the X-apps they're developing, specifically.

I'm just not sure what other description would work while still being a synopsis.

> > +    (license license:lgpl3)))
> No +?

Mmm; I didn't think so but you raise a good point. Lemme double check myself; I'll adjust it, if otherwise.
Liliana Marie Prikler Dec. 24, 2022, 2:13 p.m. UTC | #3
Am Samstag, dem 24.12.2022 um 11:23 +0000 schrieb Jaft:
>  On Saturday, December 24, 2022 at 04:36:02 AM CST, Liliana Marie
> Prikler <liliana.prikler@gmail.com> wrote: 
> 
> Am Samstag, dem 24.12.2022 um 01:30 -0600 schrieb Wamm K. D:
> > > +              (substitute* "pygobject/meson.build"
> > > +                (("get_option[(]'py-overrides-dir'[)]")
> > > +                 (string-append "'"
> > > +                                (assoc-ref outputs "out")
> > > +                                "/lib/python"
> > > +                                #$(version-major+minor (package-
> > > version python))
> > > +                                "/site-
> > > packages/gi/overrides'")))
> > I think python-build-system has a function to get this version in a
> > more reliable way.
> 
> Would you possibly know any more details on it? Just looking through
> the module, I don't see any functions regarding version number, I'm
> afraid, and it's not intuitive to me how I might use it in this
> context if I'm using a different build system for the package.

You're looking for the (site-packages) function.  As for how to use it,
you need to "mix in" the python build system as is done for instance in
python-gst.

> > > +                (("'/usr/bin/pastebin'") (string-append "'"
> > > +                                                        (assoc-
> > > ref
> > > outputs "out")
> > > +                                                       
> > > "/bin/pastebin'"))
> > Oof, fine, but note that you can also write #$output
> 
> Fair; I'd thought about it but the example I was working off of was
> using G-expressions and did it this way so I just went with it.
> 
> Something I've wondered: is there a point to having the lambda
> arguments be "#:key outputs", if you can just use "#$output"? I've
> seen a few setup their lambda that way only to use "#$output" and not
> ever use "outputs".
> 
> I may just be missing something regarding G-expressions, though.
The outputs key comes from a time in which #$output could not yet be
used in phases.  There is currently no definitely preferred flavour.

> > > +    (synopsis "Cross-desktop libraries and common resources for
> > > X-
> > > apps")
> > > +    (description
> > > +     "The components which are common to multiple GTK desktop
> > > environments
> > > +(Cinnamon, MATE and Xfce) and required to implement cross-DE
> > > solutions.")
> > The description should consist of full sentences.
> > Also, since X-Apps are quite specific to Linux Mint, you should
> > probably not take folks knowing what they are for granted.
> 
> True but is there any easy way to specify what they're related to
> without making it much longer than just a synopsis?
> 
> "Cross-desktop libraries and common resources" can apply to many
> things and is generic to the point of being unhelpful, I'd think.
> 
> I could always do "developed by Linux Mint" instead of "for X-apps"
> which might be more familiar but, again, it borders to being
> unhelpfully unspecific, again (even if less so), to me; there are
> probably a lot of "Cross-desktop libraries and common resources"
> developed by Linux Mint. This particular library was developed for
> use with the X-apps they're developing, specifically.
> 
> I'm just not sure what other description would work while still being
> a synopsis.
I think "Library for traditional GTK applications" would work fine,
looking at [1].

> > 
Cheers

[1]
https://linuxmint-developer-guide.readthedocs.io/en/latest/xapps.html
diff mbox series

Patch

diff --git a/gnu/packages/cinnamon.scm b/gnu/packages/cinnamon.scm
index fe33e797e4..c1f258c18d 100644
--- a/gnu/packages/cinnamon.scm
+++ b/gnu/packages/cinnamon.scm
@@ -26,6 +26,7 @@  (define-module (gnu packages cinnamon)
   #:use-module (guix utils)
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages)
+  #:use-module (gnu packages admin)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages gettext)
@@ -37,6 +38,77 @@  (define-module (gnu packages cinnamon)
   #:use-module (gnu packages python)
   #:use-module (gnu packages xorg))
 
+(define-public libxapp
+  (package
+    (name "libxapp")
+    (version "2.4.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/linuxmint/xapp/")
+                    (commit version)))
+              (sha256
+               (base32
+                "0cy9g0zqcbx9zscc9qavqmghfyfb8244cg299llv1ha8n6mpxl3s"))))
+    (build-system meson-build-system)
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-before 'configure 'set-gtk-module-path
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              (substitute* "libxapp/meson.build"
+                (("gtk3_dep\\.get_pkgconfig_variable[(]'libdir'[)]")
+                 (string-append "'" (assoc-ref outputs "out") "/lib'")))
+
+              (substitute* "pygobject/meson.build"
+                (("get_option[(]'py-overrides-dir'[)]")
+                 (string-append "'"
+                                (assoc-ref outputs "out")
+                                "/lib/python"
+                                #$(version-major+minor (package-version python))
+                                "/site-packages/gi/overrides'")))
+
+              (substitute* "scripts/pastebin"
+                (("'nc'") (string-append "'"
+                                         (assoc-ref inputs "netcat")
+                                         "/bin/nc'")))
+
+              (substitute* "scripts/upload-system-info"
+                (("'inxi'") (string-append "'"
+                                           (assoc-ref inputs "inxi-minimal")
+                                           "/bin/inxi'"))
+                (("'/usr/bin/pastebin'") (string-append "'"
+                                                        (assoc-ref outputs "out")
+                                                        "/bin/pastebin'"))
+                (("'xdg-open'") (string-append "'"
+                                               (assoc-ref inputs "xdg-utils")
+                                               "/bin/xdg-open'"))))))))
+    (inputs
+     (list dbus
+           glib ; for gio
+           gtk+
+           inxi-minimal ; used by upload-system-info
+           libdbusmenu
+           libgnomekbd
+           netcat ; used by pastebin
+           xdg-utils ; used by upload-system-info
+           ))
+    (native-inputs
+     (list gettext-minimal
+           `(,glib "bin") ; for glib-mkenums
+           gobject-introspection
+           pkg-config
+           python
+           python-pygobject
+           vala))
+    (home-page "https://github.com/linuxmint/xapp")
+    (synopsis "Cross-desktop libraries and common resources for X-apps")
+    (description
+     "The components which are common to multiple GTK desktop environments
+(Cinnamon, MATE and Xfce) and required to implement cross-DE solutions.")
+    (license license:lgpl3)))
+
 (define-public cinnamon-desktop
   (package
     (name "cinnamon-desktop")