Subject: Re: [bug#48028] [PATCH wip-gnome 1/8] gnu: gtkmm@2: Remove inheritance from gtkmm@3.

From: Maxime Devos <[email-masked]>
Date: Mon, 26 Apr 2021 22:47:37 +0200

IIUC, the commit message is ‘gnu: gtkmm@2: Remove inheritance from gtkmm@3’.
But this patch also adds some inputs, a description, starts an X server
for tests, places documentation in the correct place ... Could you split
up this patch?

Raghav Gururajan via Guix-patches via schreef op ma 26-04-2021 om 04:11 [-0400]:
> Remove inheritance to prevent rebuilds of packages like inkscape
> and gtk+, whenever changes are made gtkmm@3.

If changes are made to gtkmm@3, wouldn't gtkmm@2 require similar changes
anyway?
For example ...

> * gnu/packages/gtk.scm (gtkmm-2)[build-system,outputs,arguments,
> native-inputs,synopsis,description,home-page,license]: New fields.
> ---
>  gnu/packages/gtk.scm | 48 ++++++++++++++++++++++++++++++++++++++++++--
>  1 file changed, 46 insertions(+), 2 deletions(-)
> 
> diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
> index 04a0db1161..81ac4a7197 100644
> --- a/gnu/packages/gtk.scm
> +++ b/gnu/packages/gtk.scm
> @@ -1660,7 +1660,6 @@ tutorial.")
>  
>  (define-public gtkmm-2
>    (package
> -    (inherit gtkmm)
>      (name "gtkmm")
>      (version "2.24.5")
>      (source
> @@ -1672,12 +1671,57 @@ tutorial.")
>                         name "-" version ".tar.xz"))
>         (sha256
>          (base32 "0wkbzvsx4kgw16f6xjdc1dz7f77ldngdila4yi5lw2zrgcxsb006"))))
> +    (build-system glib-or-gtk-build-system)
> +    (outputs '("out" "doc"))
> +    (arguments

btw, the following has been dropped in
<https://git.savannah.gnu.org/cgit/guix.git/commit/?h=wip-gnome&id=26511b7aed03fcf5175fe29ba9a51de4fe4ee3c9>,
I wonder why?

My guess: disallowed-references refers to the wrong version when cross-compiling.
But that seems rather harmless to me?  (Though ideally there would be exist a
disallowed-references/native or something ...)

> +     `(#:phases
> +       (modify-phases %standard-phases
> +         (add-before 'check 'pre-check
> +           (lambda _
> +             ;; Tests require a running X server.
> +             (system "Xvfb :1 +extension GLX &")
> +             (setenv "DISPLAY" ":1")
> +             ;; For missing '/etc/machine-id'.
> +             (setenv "DBUS_FATAL_WARNINGS" "0")
> +             #t))
> +         (add-after 'install 'move-doc
> +           (lambda* (#:key outputs #:allow-other-keys)
> +             (let* ((out (assoc-ref outputs "out"))
> +                    (doc (assoc-ref outputs "doc")))
> +               (mkdir-p (string-append doc "/share"))
> +               (rename-file
> +                (string-append out "/share/doc")
> +                (string-append doc "/share/doc"))
> +               #t))))))

These phases were added to gtkmm@3 in
<https://git.savannah.gnu.org/cgit/guix.git/commit/?h=wip-gnome&id=26511b7aed03fcf5175fe29ba9a51de4fe4ee3c9>.
It seems they are also required in gtkmm@2.

> +    (native-inputs
> +     `(("dot" ,graphviz)
> +       ("doxygen" ,doxygen)
> +       ("m4" ,m4)
> +       ("mm-common" ,mm-common)
> +       ("perl" ,perl)
> +       ("pkg-config" ,pkg-config)
> +       ("xsltproc" ,libxslt)
> +       ("xorg-server" ,xorg-server-for-tests)))

Likewise.

>      (propagated-inputs
>       `(("atkmm" ,atkmm-2.28)
>         ("cairomm" ,cairomm-1.13)
>         ("glibmm" ,glibmm-2.64)
>         ("gtk+" ,gtk+-2)
> -       ("pangomm" ,pangomm-2.42)))))
> +       ("pangomm" ,pangomm-2.42)))
> +    (synopsis "C++ Interfaces for GTK+ and GNOME")
> +    (description "GTKmm is the official C++ interface for the popular GUI
> +library GTK+.  Highlights include typesafe callbacks, and a comprehensive set of
> +widgets that are easily extensible via inheritance.  You can create user
> +interfaces either in code or with the Glade User Interface designer, using
> +libglademm.  There's extensive documentation, including API reference and a
> +tutorial.")

Duplication.

> +    (home-page "https://gtkmm.org/")
> +    (license
> +     (list
> +      ;; Library
> +      license:lgpl2.1+
> +      ;; Tools
> +      license:gpl2+))))

More duplication.

So I don't see the value of removing inheritance from gtkmm@3.

Greetings,
Maxime.