Subject: Re: [bug#44019] add dbus-cxx

From: Miguel Ángel Arruga Vivas <[email-masked]>
Date: Thu, 22 Oct 2020 18:26:27 +0200

Hi,

The list was lost at some point in this email, I add it again.

I've checked the code of the library and I'm almost sure it's a fork of
the (unmantained) dbus-c++ project, but I'm not sure about changing the
dependency for jami and its compatibility, so I think it's worth keeping
it as a separate package, at least for now.

Reading and testing your patch I've found several issues about it, all
of them have an easy solution. :-)

tiregram arthur <[email-masked]> writes:
> From 8664346cc76e728806c1a797fc59b47d66b603ef Mon Sep 17 00:00:00 2001
> From: ruhtra <[email-masked]>
> Date: Tue, 20 Oct 2020 18:52:37 +0200
> Subject: [PATCH] add dbus-cxx package

The commit message title should be with "gnu: Add dbus-cxx."

Also, changelog information is required in the body of the commit, e.g.:

* gnu/packages/glib.scm (dbux-cxx): New package.

> ---
>  gnu/packages/glib.scm | 32 ++++++++++++++++++++++++++++++++
>  1 file changed, 32 insertions(+)
>
> diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm
> index cde95b13eb..c79060cf8b 100644
> --- a/gnu/packages/glib.scm
> +++ b/gnu/packages/glib.scm
> @@ -13,6 +13,7 @@
>  ;;; Copyright © 2019 Giacomo Leidi <[email-masked]>
>  ;;; Copyright © 2019, 2020 Marius Bakke <[email-masked]>
>  ;;; Copyright © 2020 Nicolò Balzarotti <[email-masked]>
> +;;; Copyright © 2020 Arthur Margerit <[email-masked]>
>  ;;;
>  ;;; This file is part of GNU Guix.
>  ;;;
> @@ -61,10 +62,12 @@
>    #:use-module (gnu packages xml)
>    #:use-module (gnu packages xorg)
>    #:use-module (guix build-system gnu)
> +  #:use-module (guix build-system cmake)
>    #:use-module (guix build-system meson)
>    #:use-module (guix build-system perl)
>    #:use-module (guix build-system python)
>    #:use-module (guix download)
> +  #:use-module (guix git-download)

This shouldn't be needed, there is a tarball for the release on the
sourceforge page.

>    #:use-module ((guix licenses) #:prefix license:)
>    #:use-module (guix packages)
>    #:use-module (guix utils)
> @@ -932,6 +935,35 @@ programming language.  It also contains the utility
>      (home-page "https://sourceforge.net/projects/dbus-cplusplus/")
>      (license license:lgpl2.1+)))
>  
> +

That extra line break should be removed.

> +(define-public dbus-cxx
> +  (package
> +    (name "dbus-cxx")
> +    (version "0.12.0")
> +    (source (origin
> +              (file-name (git-file-name name version))
> +              (method git-fetch)
> +              (uri (git-reference
> +                    (url "https://github.com/dbus-cxx/dbus-cxx")
> +                    (commit "ea7f8e361d11dc7d41d9ae2c4128aed2cdadd84e")))

Here it should point to the tarball from sourceforge (like the one for
dbus-c++):
"mirror://sourceforge/dbus-cxx/dbus-cxx/0.12.0/dbus-cxx-0.12.0.tar.gz"

> +              (sha256
> +               (base32
> +                "1sa448icfvl08rnik0lnk4scmkwhfyd3mrxh36jh8x7xndp90khp"))))

The sha256 for the tarball would be
"1acsgpkd9v7b9jdc79ijmh9dbdfrzgkwkaff518i3zpk7y6g5mzw".

> +    (build-system cmake-build-system)
> +    (arguments
> +     `(#:tests? #f))

We should run tests as much as possible as the software is going to be
distributed.  For that, -DENABLE_TESTS=ON must be provided through
#:build-arguments, and #:tests? #f removed.

Also, the description doesn't match the options default options,
-DENABLE_TOOLS=ON has to be provided to generate dbus-cxx-xml2cpp and
dbus-cxx-introspection.

There is a third option that could be interesting, -DENABLE_GLIBMM=ON,
but I'm not sure what it really does, apart from generating extra
headers and libs.

> +    (inputs `(("dbus-glib", dbus) ("libsigc++", libsigc++)))

The comma (,) there is reader syntax, so it applies to the right side,
not the left one: ,libsigc++ expands to the contents of the variable
libsigc++ inside the quasiquote (`).  Also, they should be one on each
line, and I would change dbus-glib for dbus too.  To build the tools you
need expat, already available, and popt from (gnu packages popt), like
this code:

    (inputs `(("dbus" ,dbus)
              ("expat" ,expat)
              ("libsigc++" ,libsigc++)
              ("popt" ,popt)))

If the glibmm option worths it, it has to be added to that list too.

> +    (native-inputs `(("pkg-config", pkg-config) ("m4", m4)))

Same indentation problems, one line per dependency, comma with the
variable, not on the left.

> +    (synopsis "C++ wrapper for dbus")
> +    (description "Dbus-cxx is a C++ wrapper for dbus.
> +It exposes the C API to allow direct manipulation and
> +relies on sigc++ to provide an OO interface.
> +Also included is dbus-cxx-xml2cpp to generate proxy and adapter
> + interfaces from DBus XML introspection-like documents.")

This has been directly copied from the web page.  If you don't have any
idea on what to write, the dbus-c++ package description has better
formatting at least. :-)

> +    (home-page "https://dbus-cxx.github.io/")
> +    (license license:gpl3)))
> +
> +

There's an extra line here too.

The main two issues are the compilation options and the description.
Would you mind to send a new version of the patch with these fixes?

Happy hacking!
Miguel