diff mbox series

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

Message ID 20210426081145.28926-1-rg@raghavgururajan.name
State Accepted
Headers show
Series [bug#48028,wip-gnome,1/8] gnu: gtkmm@2: Remove inheritance from gtkmm@3. | expand

Checks

Context Check Description
cbaines/submitting builds success
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue

Commit Message

Raghav Gururajan April 26, 2021, 8:11 a.m. UTC
Remove inheritance to prevent rebuilds of packages like inkscape
and gtk+, whenever changes are made gtkmm@3.

* 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(-)

Comments

Maxime Devos April 26, 2021, 8:47 p.m. UTC | #1
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.
Raghav Gururajan April 27, 2021, 9:29 a.m. UTC | #2
Hi Maxime,

Thanks for the review.

I have revised the patches in v5.

Regards,
RG.
Raghav Gururajan April 27, 2021, 9:29 a.m. UTC | #3
Hi Maxime,

Thanks for the review.

I have revised the patches in v5.

Regards,
RG.
diff mbox series

Patch

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
+     `(#: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))))))
+    (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)))
     (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.")
+    (home-page "https://gtkmm.org/")
+    (license
+     (list
+      ;; Library
+      license:lgpl2.1+
+      ;; Tools
+      license:gpl2+))))
 
 (define-public gtksourceviewmm
   (package