unofficial mirror of bug-guix@gnu.org 
 help / color / mirror / code / Atom feed
* bug#37850: Glib documentation is missing
@ 2019-10-21 10:45 Pierre Neidhardt
  2019-10-23 18:22 ` Marius Bakke
  2019-11-09  2:03 ` Alexandros Theodotou
  0 siblings, 2 replies; 23+ messages in thread
From: Pierre Neidhardt @ 2019-10-21 10:45 UTC (permalink / raw)
  To: 37850

[-- Attachment #1: Type: text/plain, Size: 885 bytes --]

Since the last core-update merge, glib 2.58.1+ does not include the
documentation anymore (it was in the "doc" output).

Documentation for Glib/GTK-based libraries is very useful for
developers: it allows offline and contextual access from any text
editor.

This is why it would be nice to include it back.

Commit 6c237a2d7bfa3c7be02c069e5c24a2b401a51864 (June 21st) states

--8<---------------cut here---------------start------------->8---
[outputs]: Remove "doc" as the documentation files are no longer included.
--8<---------------cut here---------------end--------------->8---

However looking at the source of Glib I cannot find trace of this in the
NEWS file nor in the INSTALL.in file.  Disclaimer: I haven't tried
building glib.

Maybe we miss a compilation flag?

What do you think?  Ricardo?

Cheers!

-- 
Pierre Neidhardt
https://ambrevar.xyz/

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply	[flat|nested] 23+ messages in thread

* bug#37850: Glib documentation is missing
  2019-10-21 10:45 bug#37850: Glib documentation is missing Pierre Neidhardt
@ 2019-10-23 18:22 ` Marius Bakke
  2019-10-23 18:38   ` Pierre Neidhardt
  2019-11-09  2:03 ` Alexandros Theodotou
  1 sibling, 1 reply; 23+ messages in thread
From: Marius Bakke @ 2019-10-23 18:22 UTC (permalink / raw)
  To: Pierre Neidhardt, 37850

[-- Attachment #1: Type: text/plain, Size: 1080 bytes --]

Pierre Neidhardt <mail@ambrevar.xyz> writes:

> Since the last core-update merge, glib 2.58.1+ does not include the
> documentation anymore (it was in the "doc" output).
>
> Documentation for Glib/GTK-based libraries is very useful for
> developers: it allows offline and contextual access from any text
> editor.
>
> This is why it would be nice to include it back.
>
> Commit 6c237a2d7bfa3c7be02c069e5c24a2b401a51864 (June 21st) states
>
> --8<---------------cut here---------------start------------->8---
> [outputs]: Remove "doc" as the documentation files are no longer included.
> --8<---------------cut here---------------end--------------->8---
>
> However looking at the source of Glib I cannot find trace of this in the
> NEWS file nor in the INSTALL.in file.  Disclaimer: I haven't tried
> building glib.
>
> Maybe we miss a compilation flag?

Installing the GLib documentation now requires 'gtk-doc' at build time:

https://gitlab.gnome.org/GNOME/glib/blob/master/meson_options.txt

'gtk-doc' unsurprisingly depends on GLib, so I'm not sure what the best
approach is.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply	[flat|nested] 23+ messages in thread

* bug#37850: Glib documentation is missing
  2019-10-23 18:22 ` Marius Bakke
@ 2019-10-23 18:38   ` Pierre Neidhardt
  2019-10-25 21:23     ` Ludovic Courtès
  0 siblings, 1 reply; 23+ messages in thread
From: Pierre Neidhardt @ 2019-10-23 18:38 UTC (permalink / raw)
  To: Marius Bakke, 37850

[-- Attachment #1: Type: text/plain, Size: 625 bytes --]

Marius Bakke <mbakke@fastmail.com> writes:

> Installing the GLib documentation now requires 'gtk-doc' at build time:
>
> https://gitlab.gnome.org/GNOME/glib/blob/master/meson_options.txt

Thanks for looking into this!

> 'gtk-doc' unsurprisingly depends on GLib, so I'm not sure what the best
> approach is.

What about the following:

1. Turn our current glib into glib-minimal.

2. Build gtk-doc against glib-minimal.

3. Define a new glib package that inherits from glib-minimal and adds
gtk-doc as native-inputs so that we can restore the "doc" output.

-- 
Pierre Neidhardt
https://ambrevar.xyz/

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply	[flat|nested] 23+ messages in thread

* bug#37850: Glib documentation is missing
  2019-10-23 18:38   ` Pierre Neidhardt
@ 2019-10-25 21:23     ` Ludovic Courtès
  2019-10-26  9:04       ` Pierre Neidhardt
  0 siblings, 1 reply; 23+ messages in thread
From: Ludovic Courtès @ 2019-10-25 21:23 UTC (permalink / raw)
  To: Pierre Neidhardt; +Cc: 37850

Hi,

Pierre Neidhardt <mail@ambrevar.xyz> skribis:

> Marius Bakke <mbakke@fastmail.com> writes:

[...]

>> 'gtk-doc' unsurprisingly depends on GLib, so I'm not sure what the best
>> approach is.
>
> What about the following:
>
> 1. Turn our current glib into glib-minimal.
>
> 2. Build gtk-doc against glib-minimal.
>
> 3. Define a new glib package that inherits from glib-minimal and adds
> gtk-doc as native-inputs so that we can restore the "doc" output.

Alternately, we could define a new “glib-doc” package that would depend
on the current “glib” package, assuming the build system allows us to
build nothing but documentation.

Ludo’.

^ permalink raw reply	[flat|nested] 23+ messages in thread

* bug#37850: Glib documentation is missing
  2019-10-25 21:23     ` Ludovic Courtès
@ 2019-10-26  9:04       ` Pierre Neidhardt
  2019-10-29 10:36         ` Pierre Neidhardt
  0 siblings, 1 reply; 23+ messages in thread
From: Pierre Neidhardt @ 2019-10-26  9:04 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 37850

[-- Attachment #1: Type: text/plain, Size: 815 bytes --]

Ludovic Courtès <ludo@gnu.org> writes:

> Alternately, we could define a new “glib-doc” package that would depend
> on the current “glib” package, assuming the build system allows us to
> build nothing but documentation.

Some possible drawbacks:

- It's not consistent with the other Glib/GNOME libraries like gtk+ or
  webkitgtk which have a "doc" output.

- Previously we had glib:doc and no measure can be taken to let the user
  know that it's now "glib-doc".

So I would got for the glib-minimal route.

This bring me to another problem: "glib:doc" was not deprecated, so
users who installed "glib:doc" cannot update their manifests / profiles
after a guix pull.

Can we actually deprecate single outputs?
If not, isn't it a bug?

-- 
Pierre Neidhardt
https://ambrevar.xyz/

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply	[flat|nested] 23+ messages in thread

* bug#37850: Glib documentation is missing
  2019-10-26  9:04       ` Pierre Neidhardt
@ 2019-10-29 10:36         ` Pierre Neidhardt
  2019-11-03 16:39           ` Pierre Neidhardt
  0 siblings, 1 reply; 23+ messages in thread
From: Pierre Neidhardt @ 2019-10-29 10:36 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 37850

[-- Attachment #1: Type: text/plain, Size: 370 bytes --]

I can send a patch for Glib.

--8<---------------cut here---------------start------------->8---
> guix refresh -l glib
Building the following 1645 packages would ensure 4428 dependent packages are rebuilt: a
--8<---------------cut here---------------end--------------->8---

I guess this is going to core-updates.

-- 
Pierre Neidhardt
https://ambrevar.xyz/

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply	[flat|nested] 23+ messages in thread

* bug#37850: Glib documentation is missing
  2019-10-29 10:36         ` Pierre Neidhardt
@ 2019-11-03 16:39           ` Pierre Neidhardt
  2019-11-03 19:04             ` Marius Bakke
  0 siblings, 1 reply; 23+ messages in thread
From: Pierre Neidhardt @ 2019-11-03 16:39 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 37850


[-- Attachment #1.1: Type: text/plain, Size: 92 bytes --]

Find a patch attached.  What do you think?

-- 
Pierre Neidhardt
https://ambrevar.xyz/

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-Add-glib-minimal-and-build-glib-doc.patch --]
[-- Type: text/x-patch, Size: 14460 bytes --]

From 893613a3b99c20688cc331d2926dbee28cc143d7 Mon Sep 17 00:00:00 2001
From: Pierre Neidhardt <mail@ambrevar.xyz>
Date: Sun, 3 Nov 2019 17:36:17 +0100
Subject: [PATCH] gnu: Add glib-minimal and build glib doc.

glib documentation must be built with gtk-doc which in turn depends on glib,
so we need to define glib-minimal which does not depend on gtk-doc.

* gnu/packages/glib.scm (glib-minimal): New variable.
(glib)[source]: Don't use `name'.
* gnu/packages/avahi.scm: Use glib-minimal when necessary.
* gnu/packages/cups.scm: Use glib-minimal when necessary.
* gnu/packages/gnome.scm: Use glib-minimal when necessary.
* gnu/packages/graphviz.scm: Use glib-minimal when necessary.
* gnu/packages/gtk.scm: Use glib-minimal when necessary.
* gnu/packages/inkscape.scm: Use glib-minimal when necessary.
* gnu/packages/pdf.scm: Use glib-minimal when necessary.
---
 gnu/packages/avahi.scm    |  4 ++--
 gnu/packages/cups.scm     |  4 ++--
 gnu/packages/glib.scm     | 35 ++++++++++++++++++++++++++---------
 gnu/packages/gnome.scm    | 16 ++++++++--------
 gnu/packages/graphviz.scm |  2 +-
 gnu/packages/gtk.scm      | 22 +++++++++++-----------
 gnu/packages/inkscape.scm |  2 +-
 gnu/packages/pdf.scm      |  4 ++--
 8 files changed, 53 insertions(+), 36 deletions(-)

diff --git a/gnu/packages/avahi.scm b/gnu/packages/avahi.scm
index e84fed6a71..0b577ca990 100644
--- a/gnu/packages/avahi.scm
+++ b/gnu/packages/avahi.scm
@@ -59,14 +59,14 @@
                            "--enable-compat-libdns_sd")))
     (inputs
      `(("expat" ,expat)
-       ("glib" ,glib)
+       ("glib" ,glib-minimal)
        ("dbus" ,dbus)
        ("gdbm" ,gdbm)
        ("libcap" ,libcap)            ;to enable chroot support in avahi-daemon
        ("libdaemon" ,libdaemon)))
     (native-inputs
      `(("intltool" ,intltool)
-       ("glib" ,glib "bin")
+       ("glib" ,glib-minimal "bin")
        ("pkg-config" ,pkg-config)))
     (synopsis "Implementation of mDNS/DNS-SD protocols")
     (description
diff --git a/gnu/packages/cups.scm b/gnu/packages/cups.scm
index 694ed6b039..8a1fe66073 100644
--- a/gnu/packages/cups.scm
+++ b/gnu/packages/cups.scm
@@ -147,7 +147,7 @@
                                                out "/lib/cups/filter")))
                         #t))))))
     (native-inputs
-     `(("glib" ,glib "bin") ; for gdbus-codegen
+     `(("glib" ,glib-minimal "bin") ; for gdbus-codegen
        ("pkg-config" ,pkg-config)))
     (inputs
      `(("avahi"        ,avahi)
@@ -161,7 +161,7 @@
        ("libjpeg"      ,libjpeg)
        ("libpng"       ,libpng)
        ("libtiff"      ,libtiff)
-       ("glib"         ,glib)
+       ("glib"         ,glib-minimal)
        ("qpdf"         ,qpdf)
        ("poppler"      ,poppler)
        ("cups-minimal" ,cups-minimal)))
diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm
index b3e85f8df9..2ac270f9c9 100644
--- a/gnu/packages/glib.scm
+++ b/gnu/packages/glib.scm
@@ -71,6 +71,7 @@
   ;; Export variables up-front to allow circular dependency with the 'xorg'
   ;; module.
   #:export (dbus
+            glib-minimal
             glib
             gobject-introspection
             dbus-glib
@@ -159,15 +160,15 @@ or through unencrypted TCP/IP suitable for use behind a firewall with
 shared NFS home directories.")
     (license license:gpl2+)))                     ; or Academic Free License 2.1
 
-(define glib
+(define glib-minimal
   (package
-   (name "glib")
+   (name "glib-minimal")
    (version "2.60.6")
    (source (origin
             (method url-fetch)
-            (uri (string-append "mirror://gnome/sources/"
-                                name "/" (string-take version 4) "/"
-                                name "-" version ".tar.xz"))
+            (uri (string-append "mirror://gnome/sources/glib/"
+                                (string-take version 4) "/"
+                                "glib-" version ".tar.xz"))
             (sha256
              (base32
               "0v7vpx2md1gn0wwiirn7g4bhf2csfvcr03y96q2zv97ain6sp3zz"))
@@ -348,6 +349,22 @@ dynamic loading, and an object system.")
    (home-page "https://developer.gnome.org/glib/")
    (license license:lgpl2.1+)))
 
+(define glib
+  (package
+    (inherit glib-minimal)
+    (name "glib")
+    (outputs (cons "doc" (package-outputs glib-minimal))) ; 20 MiB of GTK-Doc reference
+    (native-inputs
+     `(("gtk-doc" ,gtk-doc)             ; for the doc
+       ,@(package-native-inputs glib-minimal)))
+    (arguments
+     (substitute-keyword-arguments (package-arguments glib-minimal)
+       ((#:configure-flags flags)
+        `(cons (string-append "--with-html-dir="
+                              (assoc-ref %outputs "doc")
+                              "/share/gtk-doc/html")
+               ,flags))))))
+
 (define gobject-introspection
   (package
     (name "gobject-introspection")
@@ -376,11 +393,11 @@ dynamic loading, and an object system.")
     (inputs
      `(("bison" ,bison)
        ("flex" ,flex)
-       ("glib" ,glib)
+       ("glib" ,glib-minimal)
        ("python" ,python-wrapper)
        ("zlib" ,zlib)))
     (native-inputs
-     `(("glib" ,glib "bin")
+     `(("glib" ,glib-minimal "bin")
        ("pkg-config" ,pkg-config)))
     (propagated-inputs
      `(;; In practice, GIR users will need libffi when using
@@ -597,10 +614,10 @@ has an ease of use unmatched by other C++ callback libraries.")
                 "return 77;\n"))
              #t)))))
     (native-inputs `(("pkg-config" ,pkg-config)
-                     ("glib" ,glib "bin")))
+                     ("glib" ,glib-minimal "bin")))
     (propagated-inputs
      `(("libsigc++" ,libsigc++)
-       ("glib" ,glib)))
+       ("glib" ,glib-minimal)))
     (home-page "https://gtkmm.org/")
     (synopsis "C++ interface to the GLib library")
     (description
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index cd881b5b87..636c665f21 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -991,7 +991,7 @@ guidelines.")
      ;; The build system appears not to be parallel-safe.
      '(#:parallel-build? #f))
     (inputs
-     `(("glib" ,glib)
+     `(("glib" ,glib-minimal)
        ("libxml2" ,libxml2)))
     (native-inputs
      `(("intltool" ,intltool)
@@ -1282,7 +1282,7 @@ the GNOME desktop environment.")
     (native-inputs
      `(("pkg-config" ,pkg-config)))
     (inputs
-     `(("glib" ,glib)
+     `(("glib" ,glib-minimal)
        ("libxml2" ,libxml2)
        ("zlib" ,zlib)))
     (home-page "https://github.com/GNOME/libcroco")
@@ -1318,7 +1318,7 @@ XML/CSS rendering engine.")
        ("bzip2" ,bzip2)))
     (propagated-inputs
      `(("gdk-pixbuf" ,gdk-pixbuf)
-       ("glib" ,glib)
+       ("glib" ,glib-minimal)
        ("libxml2" ,libxml2)))
     (home-page "https://www.gnome.org/projects/libgsf")
     (synopsis "GNOME's Structured File Library")
@@ -1375,7 +1375,7 @@ dealing with different structured file formats.")
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("vala" ,vala)
-       ("glib" ,glib "bin")                               ; glib-mkenums, etc.
+       ("glib" ,glib-minimal "bin")                               ; glib-mkenums, etc.
        ("gobject-introspection" ,gobject-introspection))) ; g-ir-compiler, etc.
     (inputs
      `(("pango" ,pango)
@@ -1387,7 +1387,7 @@ dealing with different structured file formats.")
      ;; librsvg-2.0.pc refers to all of that.
      `(("cairo" ,cairo)
        ("gdk-pixbuf" ,gdk-pixbuf)
-       ("glib" ,glib)))
+       ("glib" ,glib-minimal)))
     (home-page "https://wiki.gnome.org/LibRsvg")
     (synopsis "Render SVG files using Cairo")
     (description
@@ -1466,7 +1466,7 @@ library.")
        ("rust" ,rust-1.34)
        ("cargo" ,rust-1.34 "cargo")
        ("vala" ,vala)
-       ("glib" ,glib "bin")                               ; glib-mkenums, etc.
+       ("glib" ,glib-minimal "bin")                               ; glib-mkenums, etc.
        ("gobject-introspection" ,gobject-introspection))) ; g-ir-compiler, etc.
     (inputs
      `(("pango" ,pango)
@@ -1478,7 +1478,7 @@ library.")
      ;; librsvg-2.0.pc refers to all of that.
      `(("cairo" ,cairo)
        ("gdk-pixbuf" ,gdk-pixbuf)
-       ("glib" ,glib)))
+       ("glib" ,glib-minimal)))
     (home-page "https://wiki.gnome.org/LibRsvg")
     (synopsis "Render SVG files using Cairo")
     (description
@@ -2304,7 +2304,7 @@ passwords in the GNOME keyring.")
     (inputs
      `(("graphviz" ,graphviz)))
     (propagated-inputs
-     `(("glib" ,glib))) ; required by libvala-0.40.pc
+     `(("glib" ,glib-minimal))) ; required by libvala-0.40.pc
     (home-page "https://live.gnome.org/Vala/")
     (synopsis "Compiler for the GObject type system")
     (description
diff --git a/gnu/packages/graphviz.scm b/gnu/packages/graphviz.scm
index f9667e873b..e49579cd0e 100644
--- a/gnu/packages/graphviz.scm
+++ b/gnu/packages/graphviz.scm
@@ -247,7 +247,7 @@ structure and layout algorithms.")
      `(("pkg-config" ,pkg-config)))
     (propagated-inputs
      ;; The gts.pc file has glib-2.0 as required.
-     `(("glib" ,glib)))
+     `(("glib" ,glib-minimal)))
     (home-page "http://gts.sourceforge.net/")
 
     ;; Note: Despite the name, this is not official GNU software.
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 436018efdb..cc637e7438 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -99,11 +99,11 @@
              (base32
               "1k4i817bd2w5b9z394f2yyx95591l2746wa40am0vvz4gzdgwhfb"))))
    (build-system meson-build-system)
-   (propagated-inputs `(("glib" ,glib))) ; required by atk.pc
+   (propagated-inputs `(("glib" ,glib-minimal))) ; required by atk.pc
    (native-inputs
     `(("pkg-config" ,pkg-config)
       ("gettext" ,gettext-minimal)
-      ("glib" ,glib "bin")                               ; glib-mkenums, etc.
+      ("glib" ,glib-minimal "bin")                               ; glib-mkenums, etc.
       ("gobject-introspection" ,gobject-introspection))) ; g-ir-compiler, etc.
    (synopsis "GNOME accessibility toolkit")
    (description
@@ -128,7 +128,7 @@ tools have full access to view and control running applications.")
    (propagated-inputs
     `(("fontconfig" ,fontconfig)
       ("freetype" ,freetype)
-      ("glib" ,glib)
+      ("glib" ,glib-minimal)
       ("libpng" ,libpng)
       ("libx11" ,libx11)
       ("libxext" ,libxext)
@@ -197,11 +197,11 @@ affine transformation (scale, rotation, shear, etc.).")
     `(("cairo" ,cairo)))
    (propagated-inputs
     ;; There are all in the Requires or Requires.private field of '.pc'.
-    `(("glib" ,glib)
+    `(("glib" ,glib-minimal)
       ("graphite2" ,graphite2)
       ("icu4c" ,icu4c)))
    (native-inputs
-    `(("glib:bin" ,glib "bin")          ;for glib-mkenums
+    `(("glib:bin" ,glib-minimal "bin")          ;for glib-mkenums
       ("gobject-introspection" ,gobject-introspection)
       ("pkg-config" ,pkg-config)
       ("python" ,python-wrapper)
@@ -237,7 +237,7 @@ affine transformation (scale, rotation, shear, etc.).")
       ("fribidi" ,fribidi)
       ("fontconfig" ,fontconfig)
       ("freetype" ,freetype)
-      ("glib" ,glib)
+      ("glib" ,glib-minimal)
       ("harfbuzz" ,harfbuzz)))
    (inputs
     `(("zlib" ,zlib)
@@ -247,7 +247,7 @@ affine transformation (scale, rotation, shear, etc.).")
       ("libxft" ,libxft)))
    (native-inputs
     `(("pkg-config" ,pkg-config)
-      ("glib" ,glib "bin")                               ; glib-mkenums, etc.
+      ("glib" ,glib-minimal "bin")                               ; glib-mkenums, etc.
       ("gobject-introspection" ,gobject-introspection))) ; g-ir-compiler, etc.
    (synopsis "GNOME text and font handling library")
    (description
@@ -507,7 +507,7 @@ highlighting and other features typical of a source code editor.")
             #t)))))
    (propagated-inputs
     `(;; Required by gdk-pixbuf-2.0.pc
-      ("glib" ,glib)
+      ("glib" ,glib-minimal)
       ("libpng" ,libpng)
       ;; Used for testing and required at runtime.
       ("shared-mime-info" ,shared-mime-info)))
@@ -518,7 +518,7 @@ highlighting and other features typical of a source code editor.")
    (native-inputs
      `(("pkg-config" ,pkg-config)
        ("gettext" ,gettext-minimal)
-       ("glib" ,glib "bin")                               ; glib-mkenums, etc.
+       ("glib" ,glib-minimal "bin")                               ; glib-mkenums, etc.
        ("gobject-introspection" ,gobject-introspection))) ; g-ir-compiler, etc.
    (synopsis "GNOME image loading and manipulation library")
    (description
@@ -696,7 +696,7 @@ is part of the GNOME accessibility project.")
    (native-inputs
     `(("perl" ,perl)
       ("gettext" ,gettext-minimal)
-      ("glib" ,glib "bin")
+      ("glib" ,glib-minimal "bin")
       ("gobject-introspection" ,gobject-introspection)
       ("pkg-config" ,pkg-config)
       ("python-wrapper" ,python-wrapper)))
@@ -1516,7 +1516,7 @@ information.")
        ("docbook-xml" ,docbook-xml-4.3)
        ("docbook-xsl" ,docbook-xsl)
        ("source-highlight" ,source-highlight)
-       ("glib" ,glib)
+       ("glib" ,glib-minimal)
        ("python-six" ,python-six)))
     (home-page "https://www.gtk.org/gtk-doc/")
     (synopsis "Documentation generator from C source code")
diff --git a/gnu/packages/inkscape.scm b/gnu/packages/inkscape.scm
index 1ad23a92d4..e5d951ae1a 100644
--- a/gnu/packages/inkscape.scm
+++ b/gnu/packages/inkscape.scm
@@ -75,7 +75,7 @@
        ("boost" ,boost)))
     (native-inputs
      `(("intltool" ,intltool)
-       ("glib" ,glib "bin")
+       ("glib" ,glib-minimal "bin")
        ("perl" ,perl)
        ("pkg-config" ,pkg-config)))
     ;; FIXME: tests require gmock
diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm
index f54200a54d..3e4a5100e6 100644
--- a/gnu/packages/pdf.scm
+++ b/gnu/packages/pdf.scm
@@ -119,10 +119,10 @@
     ;; As per poppler-cairo and poppler-glib.pc.
     ;; XXX: Ideally we'd propagate Cairo too, but that would require a
     ;; different solution to the circular dependency mentioned above.
-    `(("glib" ,glib)))
+    `(("glib" ,glib-minimal)))
    (native-inputs
       `(("pkg-config" ,pkg-config)
-        ("glib" ,glib "bin")                      ; glib-mkenums, etc.
+        ("glib" ,glib-minimal "bin")                      ; glib-mkenums, etc.
         ("gobject-introspection" ,gobject-introspection)))
    (arguments
     `(#:tests? #f ; no test data provided with the tarball
-- 
2.23.0


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* bug#37850: Glib documentation is missing
  2019-11-03 16:39           ` Pierre Neidhardt
@ 2019-11-03 19:04             ` Marius Bakke
  2019-11-04  9:46               ` Pierre Neidhardt
  0 siblings, 1 reply; 23+ messages in thread
From: Marius Bakke @ 2019-11-03 19:04 UTC (permalink / raw)
  To: Pierre Neidhardt, Ludovic Courtès; +Cc: 37850

[-- Attachment #1: Type: text/plain, Size: 1311 bytes --]

Pierre Neidhardt <mail@ambrevar.xyz> writes:

> From 893613a3b99c20688cc331d2926dbee28cc143d7 Mon Sep 17 00:00:00 2001
> From: Pierre Neidhardt <mail@ambrevar.xyz>
> Date: Sun, 3 Nov 2019 17:36:17 +0100
> Subject: [PATCH] gnu: Add glib-minimal and build glib doc.
>
> glib documentation must be built with gtk-doc which in turn depends on glib,
> so we need to define glib-minimal which does not depend on gtk-doc.
>
> * gnu/packages/glib.scm (glib-minimal): New variable.
> (glib)[source]: Don't use `name'.
> * gnu/packages/avahi.scm: Use glib-minimal when necessary.
> * gnu/packages/cups.scm: Use glib-minimal when necessary.
> * gnu/packages/gnome.scm: Use glib-minimal when necessary.
> * gnu/packages/graphviz.scm: Use glib-minimal when necessary.
> * gnu/packages/gtk.scm: Use glib-minimal when necessary.
> * gnu/packages/inkscape.scm: Use glib-minimal when necessary.
> * gnu/packages/pdf.scm: Use glib-minimal when necessary.

Please mention all changed variables and inputs here, as we always do.

That said, I'm not certain this is a good solution.  Why do some
packages use glib-minimal and others not?  What does "necessary" mean in
this context?

What about 'hiding' the normal glib package, and expose a
'glib-with-documentation' variant to end users, similar to how the
'cmake' package works?

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply	[flat|nested] 23+ messages in thread

* bug#37850: Glib documentation is missing
  2019-11-03 19:04             ` Marius Bakke
@ 2019-11-04  9:46               ` Pierre Neidhardt
  2019-11-09 23:20                 ` Marius Bakke
  0 siblings, 1 reply; 23+ messages in thread
From: Pierre Neidhardt @ 2019-11-04  9:46 UTC (permalink / raw)
  To: Marius Bakke, Ludovic Courtès; +Cc: 37850

[-- Attachment #1: Type: text/plain, Size: 2318 bytes --]

Marius Bakke <mbakke@fastmail.com> writes:

> Pierre Neidhardt <mail@ambrevar.xyz> writes:
>
>> From 893613a3b99c20688cc331d2926dbee28cc143d7 Mon Sep 17 00:00:00 2001
>> From: Pierre Neidhardt <mail@ambrevar.xyz>
>> Date: Sun, 3 Nov 2019 17:36:17 +0100
>> Subject: [PATCH] gnu: Add glib-minimal and build glib doc.
>>
>> glib documentation must be built with gtk-doc which in turn depends on glib,
>> so we need to define glib-minimal which does not depend on gtk-doc.
>>
>> * gnu/packages/glib.scm (glib-minimal): New variable.
>> (glib)[source]: Don't use `name'.
>> * gnu/packages/avahi.scm: Use glib-minimal when necessary.
>> * gnu/packages/cups.scm: Use glib-minimal when necessary.
>> * gnu/packages/gnome.scm: Use glib-minimal when necessary.
>> * gnu/packages/graphviz.scm: Use glib-minimal when necessary.
>> * gnu/packages/gtk.scm: Use glib-minimal when necessary.
>> * gnu/packages/inkscape.scm: Use glib-minimal when necessary.
>> * gnu/packages/pdf.scm: Use glib-minimal when necessary.
>
> Please mention all changed variables and inputs here, as we always do.

Sure, I didn't because I wasn't sure it was a good idea either :p

> That said, I'm not certain this is a good solution.  Why do some
> packages use glib-minimal and others not?  What does "necessary" mean in
> this context?
>
> What about 'hiding' the normal glib package, and expose a
> 'glib-with-documentation' variant to end users, similar to how the
> 'cmake' package works?

cmake-minimal builds the doc already, I don't see a
cmake-with-documentation.  Did you mean something else?
I see a couple packages with the "-documentation" prefix, so we could
use "glib-documentation".

In a previous email, I explained that I wanted to put the documentation
in the "doc" output of glib for 2 reasons:

- For consistency with the other packages from the GTK family.
- To restore the missing "gtk:doc" output.  If I understand correctly,
  we don't have a provision to deprecate outputs, only packages.  I
  think this is a bug.

Now my current patch is admittedly not pretty.
If we fix the output deprecation feature, then glib:doc could be
forwarded to glib-documentation.  And I guess we can live without
complete consistency.

Thoughts?

-- 
Pierre Neidhardt
https://ambrevar.xyz/

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply	[flat|nested] 23+ messages in thread

* bug#37850: Glib documentation is missing
  2019-10-21 10:45 bug#37850: Glib documentation is missing Pierre Neidhardt
  2019-10-23 18:22 ` Marius Bakke
@ 2019-11-09  2:03 ` Alexandros Theodotou
  2019-11-09  2:10   ` Alexandros Theodotou
  1 sibling, 1 reply; 23+ messages in thread
From: Alexandros Theodotou @ 2019-11-09  2:03 UTC (permalink / raw)
  To: 37850

I am new to guix so please excuse my ignorance, but is there an issue 
with just adding a "doc" output to the current glib, as mentioned in the 
manual?
http://guix.gnu.org/manual/en/guix.html#Packages-with-Multiple-Outputs

I find this approach nice and clean and I am personally not too fond of 
the idea of having "*-minimal" and "*-with-documentation" packages.

^ permalink raw reply	[flat|nested] 23+ messages in thread

* bug#37850: Glib documentation is missing
  2019-11-09  2:03 ` Alexandros Theodotou
@ 2019-11-09  2:10   ` Alexandros Theodotou
  0 siblings, 0 replies; 23+ messages in thread
From: Alexandros Theodotou @ 2019-11-09  2:10 UTC (permalink / raw)
  To: 37850

I missed this part.

> glib documentation must be built with gtk-doc which in turn depends on 
> glib,
> so we need to define glib-minimal which does not depend on gtk-doc.

In this case the way I have seen other distros do it is by having a 
*-bootstrap package (same as the *-minimal that you mention), which 
doesn't sound like a bad approach.

> What about 'hiding' the normal glib package

Maybe the *-bootstrap package can be hidden. Then the normal glib 
package can have its "doc" back?

^ permalink raw reply	[flat|nested] 23+ messages in thread

* bug#37850: Glib documentation is missing
  2019-11-04  9:46               ` Pierre Neidhardt
@ 2019-11-09 23:20                 ` Marius Bakke
  2019-11-11  9:29                   ` Pierre Neidhardt
  0 siblings, 1 reply; 23+ messages in thread
From: Marius Bakke @ 2019-11-09 23:20 UTC (permalink / raw)
  To: Pierre Neidhardt, Ludovic Courtès; +Cc: 37850

[-- Attachment #1: Type: text/plain, Size: 2658 bytes --]

Pierre Neidhardt <mail@ambrevar.xyz> writes:

> Marius Bakke <mbakke@fastmail.com> writes:
>
>> Pierre Neidhardt <mail@ambrevar.xyz> writes:
>>
>>> From 893613a3b99c20688cc331d2926dbee28cc143d7 Mon Sep 17 00:00:00 2001
>>> From: Pierre Neidhardt <mail@ambrevar.xyz>
>>> Date: Sun, 3 Nov 2019 17:36:17 +0100
>>> Subject: [PATCH] gnu: Add glib-minimal and build glib doc.
>>>
>>> glib documentation must be built with gtk-doc which in turn depends on glib,
>>> so we need to define glib-minimal which does not depend on gtk-doc.
>>>
>>> * gnu/packages/glib.scm (glib-minimal): New variable.
>>> (glib)[source]: Don't use `name'.
>>> * gnu/packages/avahi.scm: Use glib-minimal when necessary.
>>> * gnu/packages/cups.scm: Use glib-minimal when necessary.
>>> * gnu/packages/gnome.scm: Use glib-minimal when necessary.
>>> * gnu/packages/graphviz.scm: Use glib-minimal when necessary.
>>> * gnu/packages/gtk.scm: Use glib-minimal when necessary.
>>> * gnu/packages/inkscape.scm: Use glib-minimal when necessary.
>>> * gnu/packages/pdf.scm: Use glib-minimal when necessary.
>>
>> Please mention all changed variables and inputs here, as we always do.
>
> Sure, I didn't because I wasn't sure it was a good idea either :p
>
>> That said, I'm not certain this is a good solution.  Why do some
>> packages use glib-minimal and others not?  What does "necessary" mean in
>> this context?
>>
>> What about 'hiding' the normal glib package, and expose a
>> 'glib-with-documentation' variant to end users, similar to how the
>> 'cmake' package works?
>
> cmake-minimal builds the doc already, I don't see a
> cmake-with-documentation.  Did you mean something else?
> I see a couple packages with the "-documentation" prefix, so we could
> use "glib-documentation".

I meant this part:

(define-public cmake
  (package
    (inherit cmake-minimal)
    (name "cmake")
    (arguments
     (substitute-keyword-arguments (package-arguments cmake-minimal)
       ((#:configure-flags configure-flags ''())
        `(append ,configure-flags
                ;; Extra configure flags used to generate the documentation.
                '("--sphinx-info"
                  "--sphinx-man"
                  "--sphinx-html")))

Do you think it would make sense to do something similar with GLib,
and "hiding" the normal variant?

> In a previous email, I explained that I wanted to put the documentation
> in the "doc" output of glib for 2 reasons:
>
> - For consistency with the other packages from the GTK family.
> - To restore the missing "gtk:doc" output.  If I understand correctly,
>   we don't have a provision to deprecate outputs, only packages.  I
>   think this is a bug.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply	[flat|nested] 23+ messages in thread

* bug#37850: Glib documentation is missing
  2019-11-09 23:20                 ` Marius Bakke
@ 2019-11-11  9:29                   ` Pierre Neidhardt
  2019-11-12 12:32                     ` pelzflorian (Florian Pelz)
  0 siblings, 1 reply; 23+ messages in thread
From: Pierre Neidhardt @ 2019-11-11  9:29 UTC (permalink / raw)
  To: Marius Bakke, Ludovic Courtès; +Cc: 37850

[-- Attachment #1: Type: text/plain, Size: 1238 bytes --]

Hi Marius,

you are right, this seems to be a much saner approach.
So I've tried the following:

- add `(properties '((hidden? . #t)) )` to glib.
- Add the following new package definition:

--8<---------------cut here---------------start------------->8---
(define-public glib-with-documentation
  (package
    (inherit glib)
    (properties '((hidden? . #f)))
    (outputs (cons "doc" (package-outputs glib))) ; 20 MiB of GTK-Doc reference
    (native-inputs
     `(("gtk-doc" ,gtk-doc)             ; for the doc
       ,@(package-native-inputs glib)))
    (arguments
     (substitute-keyword-arguments (package-arguments glib)
       ((#:configure-flags flags)
        `(cons "-Dgtk_doc=true" ,flags))
       ;; TODO: Fix 1 failing test.
       ((#:phases phases)
        `(modify-phases ,phases
           (delete 'check)))))))
--8<---------------cut here---------------end--------------->8---

Sadly the above does not build the doc.

Looking at the source, it seems that no provision is taken for building
the doc with Meson.  I wonder if this is an upstream mistake, but my
knowledge of Meson is very limited and I could be wrong.

Any idea, anyone?

-- 
Pierre Neidhardt
https://ambrevar.xyz/

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply	[flat|nested] 23+ messages in thread

* bug#37850: Glib documentation is missing
  2019-11-11  9:29                   ` Pierre Neidhardt
@ 2019-11-12 12:32                     ` pelzflorian (Florian Pelz)
  2019-11-12 13:22                       ` pelzflorian (Florian Pelz)
  0 siblings, 1 reply; 23+ messages in thread
From: pelzflorian (Florian Pelz) @ 2019-11-12 12:32 UTC (permalink / raw)
  To: Pierre Neidhardt; +Cc: 37850

On Mon, Nov 11, 2019 at 10:29:03AM +0100, Pierre Neidhardt wrote:
> Sadly the above does not build the doc.
> 
> Looking at the source, it seems that no provision is taken for building
> the doc with Meson.  I wonder if this is an upstream mistake, but my
> knowledge of Meson is very limited and I could be wrong.
> 
> Any idea, anyone?
> 

I have not checked, but

https://mesonbuild.com/Gnome-module.html

says about gtkdoc

> This creates a $module-doc target that can be ran to build docs and
> normally these are only built on install.

Since GNOME is a big supporter of Meson, I believe they make no
mistakes in GLib’s meson files.

Regards,
Florian

^ permalink raw reply	[flat|nested] 23+ messages in thread

* bug#37850: Glib documentation is missing
  2019-11-12 12:32                     ` pelzflorian (Florian Pelz)
@ 2019-11-12 13:22                       ` pelzflorian (Florian Pelz)
  2019-11-12 16:00                         ` Pierre Neidhardt
  0 siblings, 1 reply; 23+ messages in thread
From: pelzflorian (Florian Pelz) @ 2019-11-12 13:22 UTC (permalink / raw)
  To: Pierre Neidhardt; +Cc: 37850

Sorry for my past unhelpful email.  This module is not used by glib.
When I try your package, it seems -Dgtk_doc=true is not applied like
when manually running meson.  I do not understand why.  (Manually
running it leads to a crash later.)

Regards,
Florian

^ permalink raw reply	[flat|nested] 23+ messages in thread

* bug#37850: Glib documentation is missing
  2019-11-12 13:22                       ` pelzflorian (Florian Pelz)
@ 2019-11-12 16:00                         ` Pierre Neidhardt
  2019-11-12 18:34                           ` pelzflorian (Florian Pelz)
  0 siblings, 1 reply; 23+ messages in thread
From: Pierre Neidhardt @ 2019-11-12 16:00 UTC (permalink / raw)
  To: pelzflorian (Florian Pelz); +Cc: 37850

[-- Attachment #1: Type: text/plain, Size: 436 bytes --]

Hmmm, you are right, it does not get built during the install phase.

I had a look at the bugtracker:

https://gitlab.gnome.org/GNOME/glib/issues

Could not find anything related to this.

Could our Meson build system be buggy?
As a side note, it does not seem to print any command line flags, which
is a bit inconvenient for debugging.  Something we could improve at least.


-- 
Pierre Neidhardt
https://ambrevar.xyz/

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply	[flat|nested] 23+ messages in thread

* bug#37850: Glib documentation is missing
  2019-11-12 16:00                         ` Pierre Neidhardt
@ 2019-11-12 18:34                           ` pelzflorian (Florian Pelz)
  2019-11-15 11:17                             ` Pierre Neidhardt
  0 siblings, 1 reply; 23+ messages in thread
From: pelzflorian (Florian Pelz) @ 2019-11-12 18:34 UTC (permalink / raw)
  To: Pierre Neidhardt; +Cc: 37850

On Tue, Nov 12, 2019 at 05:00:40PM +0100, Pierre Neidhardt wrote:
> Hmmm, you are right, it does not get built during the install phase.
> 
> I had a look at the bugtracker:
> 
> https://gitlab.gnome.org/GNOME/glib/issues
> 
> Could not find anything related to this.
> 
> Could our Meson build system be buggy?
> As a side note, it does not seem to print any command line flags, which
> is a bit inconvenient for debugging.  Something we could improve at least.
> 

Moving a call to the “error” procedure in various places in the
package and Guix’ meson-build-system.scm reveals (I think) that the
package arguments are correctly rewritten by
substitute-keyword-arguments, but the meson-build procedure from
meson-build-system.scm is called with the original package’s args.

Regards,
Florian

^ permalink raw reply	[flat|nested] 23+ messages in thread

* bug#37850: Glib documentation is missing
  2019-11-12 18:34                           ` pelzflorian (Florian Pelz)
@ 2019-11-15 11:17                             ` Pierre Neidhardt
  2019-11-15 12:14                               ` pelzflorian (Florian Pelz)
  2019-11-15 14:10                               ` Marius Bakke
  0 siblings, 2 replies; 23+ messages in thread
From: Pierre Neidhardt @ 2019-11-15 11:17 UTC (permalink / raw)
  To: pelzflorian (Florian Pelz); +Cc: 37850, petermikkelsen10

[-- Attachment #1: Type: text/plain, Size: 7923 bytes --]

You are right, something is wrong with substitute-keyword-arguments.

If I copy-paste the arguments from glib, then add the stuff to build the
doc, everything is fine.

Peter, Ricardo, Marius, any clue what's going on?

Here follows a working definition for glib-with-documentation.
Obviously the copy-pasting of arguments is less than ideal.

--8<---------------cut here---------------start------------->8---
(define-public glib-with-documentation
  (package
    (inherit glib)
    (properties '((hidden? . #f)))
    (outputs (cons "doc" (package-outputs glib))) ; 20 MiB of GTK-Doc reference
    (native-inputs
     `(("gtk-doc" ,gtk-doc)             ; for the doc
       ("docbook-xml" ,docbook-xml)
       ,@(package-native-inputs glib)))
    (arguments
     `( ;; TODO: Uncomment on the next rebuild cycle.
       ;; #:disallowed-references (,tzdata-for-tests)

       #:configure-flags (list "-Dgtk_doc=true")
       #:phases
       (modify-phases %standard-phases
         (add-before 'build 'pre-build
           (lambda* (#:key inputs outputs #:allow-other-keys)
             ;; For tests/gdatetime.c.
             (setenv "TZDIR"
                     (string-append (assoc-ref inputs "tzdata")
                                    "/share/zoneinfo"))

             ;; Some tests want write access there.
             (setenv "HOME" (getcwd))
             (setenv "XDG_CACHE_HOME" (getcwd))
             #t))
         (add-after 'unpack 'disable-failing-tests
           (lambda _
             (let ((disable
                    (lambda (test-file test-paths)
                      (define pattern+procs
                        (map (lambda (test-path)
                               (cons
                                ;; XXX: only works for single line statements.
                                (format #f "g_test_add_func.*\"~a\".*" test-path)
                                (const "")))
                             test-paths))
                      (substitute test-file pattern+procs)))
                   (failing-tests
                    '(("glib/tests/thread.c"
                       ( ;; prlimit(2) returns ENOSYS on Linux 2.6.32-5-xen-amd64
                        ;; as found on hydra.gnu.org, and strace(1) doesn't
                        ;; recognize it.
                        "/thread/thread4"))

                      ;; This tries to find programs in FHS directories.
                      ("glib/tests/utils.c"
                       ("/utils/find-program"))

                      ;; This fails because "glib/tests/echo-script" cannot be
                      ;; found.
                      ("glib/tests/spawn-singlethread.c"
                       ("/gthread/spawn-script"))

                      ("glib/tests/timer.c"
                       ( ;; fails if compiler optimizations are enabled, which they
                        ;; are by default.
                        "/timer/stop"))

                      ("gio/tests/gapplication.c"
                       ( ;; XXX: proven to be unreliable.  See:
                        ;;  <https://bugs.debian.org/756273>
                        ;;  <http://bugs.gnu.org/18445>
                        "/gapplication/quit"

                        ;; XXX: fails randomly for unknown reason. See:
                        ;;  <https://lists.gnu.org/archive/html/guix-devel/2016-04/msg00215.html>
                        "/gapplication/local-actions"))

                      ("gio/tests/contenttype.c"
                       ( ;; XXX: requires shared-mime-info.
                        "/contenttype/guess"
                        "/contenttype/guess_svg_from_data"
                        "/contenttype/subtype"
                        "/contenttype/list"
                        "/contenttype/icon"
                        "/contenttype/symbolic-icon"
                        "/contenttype/tree"))

                      ("gio/tests/appinfo.c"
                       ( ;; XXX: requires update-desktop-database.
                        "/appinfo/associations"))

                      ("gio/tests/desktop-app-info.c"
                       ( ;; XXX: requires update-desktop-database.
                        "/desktop-app-info/delete"
                        "/desktop-app-info/default"
                        "/desktop-app-info/fallback"
                        "/desktop-app-info/lastused"
                        "/desktop-app-info/search"))

                      ("gio/tests/gdbus-peer.c"
                       ( ;; Requires /etc/machine-id.
                        "/gdbus/codegen-peer-to-peer"))

                      ("gio/tests/gdbus-unix-addresses.c"
                       ( ;; Requires /etc/machine-id.
                        "/gdbus/x11-autolaunch"))

                      ("gio/tests/gsocketclient-slow.c"
                       ( ;; These tests tries to resolve "localhost", and fails.
                        "/socket-client/happy-eyeballs/slow"
                        "/socket-client/happy-eyeballs/cancellation/delayed")))))
               (for-each (lambda (x) (apply disable x)) failing-tests)
               #t)))
         (replace 'check
           (lambda _
             (setenv "MESON_TESTTHREADS"
                     (number->string (parallel-job-count)))
             ;; Do not run tests marked as "flaky".
             (invoke "meson" "test" "--no-suite" "flaky")))
         ;; TODO: meson does not permit the bindir to be outside of prefix.
         ;; See https://github.com/mesonbuild/meson/issues/2561
         ;; We can remove this once meson is patched.
         (add-after 'install 'move-executables
           (lambda* (#:key outputs #:allow-other-keys)
             (let ((out (assoc-ref outputs "out"))
                   (bin (assoc-ref outputs "bin")))
               (mkdir-p bin)
               (rename-file (string-append out "/bin")
                            (string-append bin "/bin"))
               ;; Do not refer to "bindir", which points to "${prefix}/bin".
               ;; We don't patch "bindir" to point to "$bin/bin", because that
               ;; would create a reference cycle between the "out" and "bin"
               ;; outputs.
               (substitute* (list (string-append out "/lib/pkgconfig/gio-2.0.pc")
                                  (string-append out "/lib/pkgconfig/glib-2.0.pc"))
                 (("bindir=\\$\\{prefix\\}/bin") "")
                 (("=\\$\\{bindir\\}/") "="))
               #t)))
         (add-after 'unpack 'make-local-docbook-xml
           (lambda* (#:key inputs #:allow-other-keys)
             (let ((replace-http (lambda (file)
                                   (substitute* file
                                     ;; Warning: gio.xml uses docbook 4.2.
                                     (("http://www.oasis-open.org/docbook/xml/4../docbookx.dtd")
                                      (string-append (assoc-ref inputs "docbook-xml")
                                                     "/xml/dtd/docbook/docbookx.dtd")))) ))
               (replace-http "gio/gdbus-2.0/codegen/codegen_docbook.py")
               (for-each replace-http (find-files "." "\\.xml$"))
               #t)))
         (add-after 'install 'move-doc
           (lambda* (#:key outputs #:allow-other-keys)
             (let ((out (assoc-ref outputs "out"))
                   (doc (assoc-ref outputs "doc"))
                   (html (string-append "/share/gtk-doc")))
               (copy-recursively (string-append out html)
                                 (string-append doc html))
               (delete-file-recursively (string-append out html))
               #t))))))))
--8<---------------cut here---------------end--------------->8---

-- 
Pierre Neidhardt
https://ambrevar.xyz/

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply	[flat|nested] 23+ messages in thread

* bug#37850: Glib documentation is missing
  2019-11-15 11:17                             ` Pierre Neidhardt
@ 2019-11-15 12:14                               ` pelzflorian (Florian Pelz)
  2019-11-15 14:10                               ` Marius Bakke
  1 sibling, 0 replies; 23+ messages in thread
From: pelzflorian (Florian Pelz) @ 2019-11-15 12:14 UTC (permalink / raw)
  To: Pierre Neidhardt; +Cc: 37850, petermikkelsen10

On Fri, Nov 15, 2019 at 12:17:30PM +0100, Pierre Neidhardt wrote:
> You are right, something is wrong with substitute-keyword-arguments.
> 

No, I did not say that, I said that despite
substitute-keyword-arguments returning the correct arguments – as is
visible by enclosing the args with a call to (error …) –, meson builds
with the old arguments.  However now you say it works when copying the
arguments from Glib, which is strange.

Regards,
Florian

^ permalink raw reply	[flat|nested] 23+ messages in thread

* bug#37850: Glib documentation is missing
  2019-11-15 11:17                             ` Pierre Neidhardt
  2019-11-15 12:14                               ` pelzflorian (Florian Pelz)
@ 2019-11-15 14:10                               ` Marius Bakke
  2019-11-15 15:06                                 ` Pierre Neidhardt
  1 sibling, 1 reply; 23+ messages in thread
From: Marius Bakke @ 2019-11-15 14:10 UTC (permalink / raw)
  To: Pierre Neidhardt, pelzflorian (Florian Pelz); +Cc: 37850

[-- Attachment #1: Type: text/plain, Size: 697 bytes --]

Pierre Neidhardt <mail@ambrevar.xyz> writes:

> You are right, something is wrong with substitute-keyword-arguments.

The problem is that GLib has no configure-flags from before.  I'm not
sure why we get no error from substitute-keyword-arguments (is it
swallowed?  never run?), but if you change this part:

 (substitute-keyword-arguments (package-arguments glib)
   ((#:configure-flags flags)
    `(cons "-Dgtk_doc=true" ,flags)))

...to read like this:

 (substitute-keyword-arguments (package-arguments glib)
   ((#:configure-flags flags ''())
    `(cons "-Dgtk_doc=true" ,flags)))

Then it should work.  The difference is that "flags" gets initialized as
the empty list when not already set.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply	[flat|nested] 23+ messages in thread

* bug#37850: Glib documentation is missing
  2019-11-15 14:10                               ` Marius Bakke
@ 2019-11-15 15:06                                 ` Pierre Neidhardt
  2019-11-21 19:50                                   ` Marius Bakke
  0 siblings, 1 reply; 23+ messages in thread
From: Pierre Neidhardt @ 2019-11-15 15:06 UTC (permalink / raw)
  To: Marius Bakke, pelzflorian (Florian Pelz); +Cc: 37850


[-- Attachment #1.1: Type: text/plain, Size: 188 bytes --]

Oh, that makes total sense, thanks for the explanation Marius!

Alright, final patch attached.
Let me know if I should merge on master.

-- 
Pierre Neidhardt
https://ambrevar.xyz/

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-Add-glib-with-documentation.patch --]
[-- Type: text/x-patch, Size: 3005 bytes --]

From 29d27b64fb7bbf96a2ed59a3e1c4179717770f5c Mon Sep 17 00:00:00 2001
From: Pierre Neidhardt <mail@ambrevar.xyz>
Date: Mon, 11 Nov 2019 15:38:11 +0100
Subject: [PATCH] gnu: Add glib-with-documentation.

* gnu/packages/glib.scm (glib-with-documentation): New variable.
(glib): Hide package.
---
 gnu/packages/glib.scm | 40 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm
index b3e85f8df9..47e4f7006a 100644
--- a/gnu/packages/glib.scm
+++ b/gnu/packages/glib.scm
@@ -339,6 +339,7 @@ shared NFS home directories.")
            (variable "GIO_EXTRA_MODULES")
            (files '("lib/gio/modules")))))
    (search-paths native-search-paths)
+   (properties '((hidden? . #t)) )
 
    (synopsis "Thread-safe general utility library; basis of GTK+ and GNOME")
    (description
@@ -348,6 +349,45 @@ dynamic loading, and an object system.")
    (home-page "https://developer.gnome.org/glib/")
    (license license:lgpl2.1+)))
 
+(define-public glib-with-documentation
+  ;; glib's doc must be built in a separate package since it requires gtk-doc,
+  ;; which in turn depends on glib.
+  (package
+    (inherit glib)
+    (properties '((hidden? . #f)))
+    (outputs (cons "doc" (package-outputs glib))) ; 20 MiB of GTK-Doc reference
+    (native-inputs
+     `(("gtk-doc" ,gtk-doc)             ; for the doc
+       ("docbook-xml" ,docbook-xml)
+       ,@(package-native-inputs glib)))
+    (arguments
+     (substitute-keyword-arguments (package-arguments glib)
+       ((#:configure-flags flags ''())
+        `(cons "-Dgtk_doc=true" ,flags))
+       ((#:phases phases)
+        `(modify-phases ,phases
+           (add-after 'unpack 'make-local-docbook-xml
+             (lambda* (#:key inputs #:allow-other-keys)
+               (let ((replace-http
+                      (lambda (file)
+                        (substitute* file
+                          ;; Warning: gio.xml uses docbook 4.2, hence the "4.." pattern.
+                          (("http://www.oasis-open.org/docbook/xml/4../docbookx.dtd")
+                           (string-append (assoc-ref inputs "docbook-xml")
+                                          "/xml/dtd/docbook/docbookx.dtd"))))))
+                 (replace-http "gio/gdbus-2.0/codegen/codegen_docbook.py")
+                 (for-each replace-http (find-files "." "\\.xml$"))
+                 #t)))
+           (add-after 'install 'move-doc
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let ((out (assoc-ref outputs "out"))
+                     (doc (assoc-ref outputs "doc"))
+                     (html (string-append "/share/gtk-doc")))
+                 (copy-recursively (string-append out html)
+                                   (string-append doc html))
+                 (delete-file-recursively (string-append out html))
+                 #t)))))))))
+
 (define gobject-introspection
   (package
     (name "gobject-introspection")
-- 
2.23.0


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* bug#37850: Glib documentation is missing
  2019-11-15 15:06                                 ` Pierre Neidhardt
@ 2019-11-21 19:50                                   ` Marius Bakke
  2019-11-27 12:37                                     ` Pierre Neidhardt
  0 siblings, 1 reply; 23+ messages in thread
From: Marius Bakke @ 2019-11-21 19:50 UTC (permalink / raw)
  To: Pierre Neidhardt, pelzflorian (Florian Pelz); +Cc: 37850

[-- Attachment #1: Type: text/plain, Size: 2287 bytes --]

Pierre Neidhardt <mail@ambrevar.xyz> writes:

> Oh, that makes total sense, thanks for the explanation Marius!
>
> Alright, final patch attached.
> Let me know if I should merge on master.

Looks good!

> From 29d27b64fb7bbf96a2ed59a3e1c4179717770f5c Mon Sep 17 00:00:00 2001
> From: Pierre Neidhardt <mail@ambrevar.xyz>
> Date: Mon, 11 Nov 2019 15:38:11 +0100
> Subject: [PATCH] gnu: Add glib-with-documentation.
>
> * gnu/packages/glib.scm (glib-with-documentation): New variable.
> (glib): Hide package.

This should say (glib)[properties]: ...

[...]
  
> +(define-public glib-with-documentation
> +  ;; glib's doc must be built in a separate package since it requires gtk-doc,
> +  ;; which in turn depends on glib.
> +  (package
> +    (inherit glib)
> +    (properties '((hidden? . #f)))

Using (alist-delete 'hidden? (package-properties glib)) is more future
proof.  :-)

> +    (outputs (cons "doc" (package-outputs glib))) ; 20 MiB of GTK-Doc reference
> +    (native-inputs
> +     `(("gtk-doc" ,gtk-doc)             ; for the doc
> +       ("docbook-xml" ,docbook-xml)
> +       ,@(package-native-inputs glib)))
> +    (arguments
> +     (substitute-keyword-arguments (package-arguments glib)
> +       ((#:configure-flags flags ''())
> +        `(cons "-Dgtk_doc=true" ,flags))
> +       ((#:phases phases)
> +        `(modify-phases ,phases
> +           (add-after 'unpack 'make-local-docbook-xml
> +             (lambda* (#:key inputs #:allow-other-keys)
> +               (let ((replace-http
> +                      (lambda (file)
> +                        (substitute* file
> +                          ;; Warning: gio.xml uses docbook 4.2, hence the "4.." pattern.
> +                          (("http://www.oasis-open.org/docbook/xml/4../docbookx.dtd")
> +                           (string-append (assoc-ref inputs "docbook-xml")
> +                                          "/xml/dtd/docbook/docbookx.dtd"))))))
> +                 (replace-http "gio/gdbus-2.0/codegen/codegen_docbook.py")
> +                 (for-each replace-http (find-files "." "\\.xml$"))
> +                 #t)))

Can this phase be removed if you add 'libxml2' to inputs (for the
$XML_CATALOG_FILES search path)?

Otherwise LGTM!

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply	[flat|nested] 23+ messages in thread

* bug#37850: Glib documentation is missing
  2019-11-21 19:50                                   ` Marius Bakke
@ 2019-11-27 12:37                                     ` Pierre Neidhardt
  0 siblings, 0 replies; 23+ messages in thread
From: Pierre Neidhardt @ 2019-11-27 12:37 UTC (permalink / raw)
  To: Marius Bakke, pelzflorian (Florian Pelz); +Cc: 37850

[-- Attachment #1: Type: text/plain, Size: 387 bytes --]

Marius Bakke <mbakke@fastmail.com> writes:

> This should say (glib)[properties]: ...

Fixed.

> Using (alist-delete 'hidden? (package-properties glib)) is more future
> proof.  :-)

Done.

> Can this phase be removed if you add 'libxml2' to inputs (for the
> $XML_CATALOG_FILES search path)?

It worked, thanks!

Merged!

-- 
Pierre Neidhardt
https://ambrevar.xyz/

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2019-11-27 12:38 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-10-21 10:45 bug#37850: Glib documentation is missing Pierre Neidhardt
2019-10-23 18:22 ` Marius Bakke
2019-10-23 18:38   ` Pierre Neidhardt
2019-10-25 21:23     ` Ludovic Courtès
2019-10-26  9:04       ` Pierre Neidhardt
2019-10-29 10:36         ` Pierre Neidhardt
2019-11-03 16:39           ` Pierre Neidhardt
2019-11-03 19:04             ` Marius Bakke
2019-11-04  9:46               ` Pierre Neidhardt
2019-11-09 23:20                 ` Marius Bakke
2019-11-11  9:29                   ` Pierre Neidhardt
2019-11-12 12:32                     ` pelzflorian (Florian Pelz)
2019-11-12 13:22                       ` pelzflorian (Florian Pelz)
2019-11-12 16:00                         ` Pierre Neidhardt
2019-11-12 18:34                           ` pelzflorian (Florian Pelz)
2019-11-15 11:17                             ` Pierre Neidhardt
2019-11-15 12:14                               ` pelzflorian (Florian Pelz)
2019-11-15 14:10                               ` Marius Bakke
2019-11-15 15:06                                 ` Pierre Neidhardt
2019-11-21 19:50                                   ` Marius Bakke
2019-11-27 12:37                                     ` Pierre Neidhardt
2019-11-09  2:03 ` Alexandros Theodotou
2019-11-09  2:10   ` Alexandros Theodotou

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).