GNU bug report logs - #62672
Unexpected interaction between gobject-introspection and grafts

Previous Next

Package: guix;

Reported by: "Collin J. Doering" <collin <at> rekahsoft.ca>

Date: Wed, 5 Apr 2023 00:53:01 UTC

Severity: normal

Done: "Collin J. Doering" <collin <at> rekahsoft.ca>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 62672 in the body.
You can then email your comments to 62672 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-guix <at> gnu.org:
bug#62672; Package guix. (Wed, 05 Apr 2023 00:53:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to "Collin J. Doering" <collin <at> rekahsoft.ca>:
New bug report received and forwarded. Copy sent to bug-guix <at> gnu.org. (Wed, 05 Apr 2023 00:53:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: "Collin J. Doering" <collin <at> rekahsoft.ca>
To: bug-guix <at> gnu.org
Subject: Unexpected interaction between gobject-introspection and grafts
Date: Tue, 04 Apr 2023 20:04:00 -0400
Hi team Guix!

I was working on packaging taffybar (https://github.com/taffybar/taffybar), which depends on haskell-gi (https://github.com/haskell-gi/haskell-gi) - haskell bindings for goject-introspection capable libraries. While packaging gi-gdk, I hit this error:

--8<---------------cut here---------------start------------->8---
** (process:23): WARNING **: 00:09:56.407: Failed to load shared library '/gnu/store/91ar3zh59n19rdn00png5r9hxp3k0y13-gtk-4.8.1/lib/libgtk-4.so.1' referenced by the typelib: libgtk-4.so.1: cannot open shared object file: No such file or directory
Could not resolve symbol "gdk_device_pad_get_type" in namespace "Gdk-4.0"
CallStack (from HasCallStack):
  error, called at lib/Data/GI/CodeGen/LibGIRepository.hs:202:16 in haskell-gi-0.26.4-HCp1omjln8S5hdZ8Oexk5N:Data.GI.CodeGen.LibGIRepository
error: in phase 'configure': uncaught exception:
--8<---------------cut here---------------end--------------->8---

However, confusingly enough the shared library that is referenced by the typelib exists in my store (and is also included via the gtk package as a dependency, so I would expect its available during the build). It took me a bit to realize that the un-grafted gtk package is being used in the typelib, but really the grafted one is needed.

--8<---------------cut here---------------start------------->8---
➜ guix build --no-grafts gtk                                                                   
...
/gnu/store/91ar3zh59n19rdn00png5r9hxp3k0y13-gtk-4.8.1
➜ guix build gtk            
...
/gnu/store/sz90zf6yynsymb1a74zai87f2yi3da82-gtk-4.8.1
--8<---------------cut here---------------end--------------->8---

In the manual "Debugging Build Failures" (https://guix.gnu.org/manual/devel/en/html_node/Debugging-Build-Failures.html#Debugging-Build-Failures), it notes that the build environment can be mimicked using guix shell (explicitly specifying the '--no-grafts' options). Entering this environment and looking more closely at the gtk package in use, it appears that its typelib for libgtk references the .so appropriately.

--8<---------------cut here---------------start------------->8---
➜ guix shell --no-grafts -L . -C -D ghc-gi-gdk binutils
[env]$ readlink -f $GUIX_ENVIRONMENT/lib/girepository-1.0/Gtk-4.0.typelib
/gnu/store/91ar3zh59n19rdn00png5r9hxp3k0y13-gtk-4.8.1/lib/girepository-1.0/Gtk-4.0.typelib
[env]$ strings $GUIX_ENVIRONMENT/lib/girepository-1.0/Gtk-4.0.typelib | grep libgtk
/gnu/store/91ar3zh59n19rdn00png5r9hxp3k0y13-gtk-4.8.1/lib/libgtk-4.so.1
--8<---------------cut here---------------end--------------->8---

So this all to say that I'm not sure whats going wrong with my build, but I suspect it has something to do with grafting. Any help appreciated.

Here is my definition of ghc-gi-gtk (the package that causes this build failure to become apparent):

--8<---------------cut here---------------start------------->8---
(define-public ghc-gi-gdk
  (package
    (name "ghc-gi-gdk")
    (version "4.0.5")
    (source (origin
              (method url-fetch)
              (uri (hackage-uri "gi-gdk" version))
              (sha256
               (base32
                "1pa8vbm931xq3rb9xr441sccga9h1y03lzf6hp2rwkhyhs006hax"))))
    (build-system haskell-build-system)
    (properties '((upstream-name . "gi-gdk")))
    (inputs (list gtk
                  gdk-pixbuf
                  ghc-haskell-gi-base
                  ghc-haskell-gi
                  ghc-haskell-gi-overloading
                  ghc-gi-cairo
                  ghc-gi-pango
                  ghc-gi-gio
                  ghc-gi-gdkpixbuf
                  ghc-gi-gobject
                  ghc-gi-glib))
    (native-inputs (list pkg-config
                         gobject-introspection-cairo)) ; for GI repository files (.gir files)
    (home-page "https://github.com/haskell-gi/haskell-gi")
    (synopsis "Gdk bindings")
    (description "Bindings for Gdk, autogenerated by haskell-gi.")
    (license license:lgpl2.1)))
--8<---------------cut here---------------end--------------->8---

I did not include other dependencies that are not yet packaged upstream (eg. ghc-gi-*, ...), but am happy to provide them if they are useful for reproduction of this issue.

PS: If you noticed I'm using the package 'gobject-introspection-cairo', this is because I found that the cairo typelibs are not included in the cairo package, or gobject-introspection. I worked around this using the aforementioned variant, which is defined like so:

--8<---------------cut here---------------start------------->8---
(define-public gobject-introspection-cairo
  (package
    (inherit gobject-introspection)
    (name "gobject-introspection")
    (inputs (cons* (list "cairo" cairo) (package-inputs gobject-introspection)))
    (arguments
     `(#:phases
       (modify-phases %standard-phases
         (add-before 'configure 'patch-cairo-gir
           (lambda* (#:key inputs outputs #:allow-other-keys)
             (let* ((out (assoc-ref outputs "out"))
                    (cairo (assoc-ref inputs "cairo")))
               (substitute* '("gir/cairo-1.0.gir.in")
                 (("@CAIRO_SHARED_LIBRARY@")
                  (string-append cairo "/lib/@CAIRO_SHARED_LIBRARY@")))
               #t))))))))
--8<---------------cut here---------------end--------------->8---

Note: this adjustment to gobject-introspection should likely make it upstream (and was inspired by a similar change to nix (described https://github.com/NixOS/nixpkgs/pull/34081)).

-- 
Collin J. Doering

http://rekahsoft.ca
http://blog.rekahsoft.ca
http://git.rekahsoft.ca




Information forwarded to bug-guix <at> gnu.org:
bug#62672; Package guix. (Wed, 05 Apr 2023 08:12:02 GMT) Full text and rfc822 format available.

Message #8 received at 62672 <at> debbugs.gnu.org (full text, mbox):

From: Josselin Poiret <dev <at> jpoiret.xyz>
To: "Collin J. Doering" <collin <at> rekahsoft.ca>, 62672 <at> debbugs.gnu.org
Subject: Re: bug#62672: Unexpected interaction between gobject-introspection
 and grafts
Date: Wed, 05 Apr 2023 10:11:54 +0200
[Message part 1 (text/plain, inline)]
Hi Collin,

"Collin J. Doering" via Bug reports for GNU Guix <bug-guix <at> gnu.org>
writes:

> Hi team Guix!
>
> I was working on packaging taffybar (https://github.com/taffybar/taffybar), which depends on haskell-gi (https://github.com/haskell-gi/haskell-gi) - haskell bindings for goject-introspection capable libraries. While packaging gi-gdk, I hit this error:
>
> --8<---------------cut here---------------start------------->8---
> ** (process:23): WARNING **: 00:09:56.407: Failed to load shared library '/gnu/store/91ar3zh59n19rdn00png5r9hxp3k0y13-gtk-4.8.1/lib/libgtk-4.so.1' referenced by the typelib: libgtk-4.so.1: cannot open shared object file: No such file or directory
> Could not resolve symbol "gdk_device_pad_get_type" in namespace "Gdk-4.0"
> CallStack (from HasCallStack):
>   error, called at lib/Data/GI/CodeGen/LibGIRepository.hs:202:16 in haskell-gi-0.26.4-HCp1omjln8S5hdZ8Oexk5N:Data.GI.CodeGen.LibGIRepository
> error: in phase 'configure': uncaught exception:
> --8<---------------cut here---------------end--------------->8---

These errors can also be caused by dependent libraries not being found,
or linker errors, etc.  I would suggest to run `ldd` on the .so itself
(from glibc), and see what the output is.

Grafts are applied after all packages have been built, so it is normal
that the build environment would see and use the ungrafted gtk.

Best,
-- 
Josselin Poiret
[signature.asc (application/pgp-signature, inline)]

Information forwarded to bug-guix <at> gnu.org:
bug#62672; Package guix. (Wed, 05 Apr 2023 17:06:01 GMT) Full text and rfc822 format available.

Message #11 received at 62672 <at> debbugs.gnu.org (full text, mbox):

From: "Collin J. Doering" <collin <at> rekahsoft.ca>
To: Josselin Poiret <dev <at> jpoiret.xyz>
Cc: 62672 <at> debbugs.gnu.org
Subject: Re: bug#62672: Unexpected interaction between gobject-introspection
 and grafts
Date: Wed, 05 Apr 2023 12:59:08 -0400
Hi Josselin,

Thanks for your quick reply. It appears that all dynamic libraries referenced by libgtk.so are correctly referenced (and not missing):

--8<---------------cut here---------------start------------->8---
$ ldd /gnu/store/91ar3zh59n19rdn00png5r9hxp3k0y13-gtk-4.8.1/lib/libgtk-4.so.1
linux-vdso.so.1 (0x00007fff6435f000)
libwayland-client.so.0 => /gnu/store/91ar3zh59n19rdn00png5r9hxp3k0y13-gtk-4.8.1/lib/libwayland-client.so.0 (0x00007f0058b89000)
libwayland-egl.so.1 => /gnu/store/91ar3zh59n19rdn00png5r9hxp3k0y13-gtk-4.8.1/lib/libwayland-egl.so.1 (0x00007f0058b84000)
libgmodule-2.0.so.0 => /gnu/store/96srhmpmxa20wmsck95g3iq4hb3lz4a0-glib-2.70.2/lib/libgmodule-2.0.so.0 (0x00007f0058b7d000)
libglib-2.0.so.0 => /gnu/store/96srhmpmxa20wmsck95g3iq4hb3lz4a0-glib-2.70.2/lib/libglib-2.0.so.0 (0x00007f00580cc000)
libgobject-2.0.so.0 => /gnu/store/96srhmpmxa20wmsck95g3iq4hb3lz4a0-glib-2.70.2/lib/libgobject-2.0.so.0 (0x00007f0058b23000)
libgio-2.0.so.0 => /gnu/store/96srhmpmxa20wmsck95g3iq4hb3lz4a0-glib-2.70.2/lib/libgio-2.0.so.0 (0x00007f0057ee6000)
libpangocairo-1.0.so.0 => /gnu/store/6zfdna9yh2y35dps8h17w4sp6ggvnmwi-pango-next-1.50.4/lib/libpangocairo-1.0.so.0 (0x00007f0058b10000)
libpango-1.0.so.0 => /gnu/store/6zfdna9yh2y35dps8h17w4sp6ggvnmwi-pango-next-1.50.4/lib/libpango-1.0.so.0 (0x00007f0058aa9000)
libharfbuzz.so.0 => /gnu/store/f6ibajh7x233cvr30c2p314l2absk36h-harfbuzz-2.8.2/lib/libharfbuzz.so.0 (0x00007f0057dfb000)
libcairo.so.2 => /gnu/store/6gq2n65ixpn6drd5wai2h7g5wjm6bp2b-cairo-1.16.0/lib/libcairo.so.2 (0x00007f0057cda000)
libfribidi.so.0 => /gnu/store/v5x6f3dml69pmn4pfkl51j6y03v6rlsg-fribidi-1.0.9/lib/libfribidi.so.0 (0x00007f0058a8b000)
libcairo-gobject.so.2 => /gnu/store/6gq2n65ixpn6drd5wai2h7g5wjm6bp2b-cairo-1.16.0/lib/libcairo-gobject.so.2 (0x00007f0058a7d000)
libfontconfig.so.1 => /gnu/store/3r5sl1l02kjxzw3gicjpjz4kw6v4rgs9-fontconfig-minimal-2.13.94/lib/libfontconfig.so.1 (0x00007f0057c8f000)
libgdk_pixbuf-2.0.so.0 => /gnu/store/xgiz9rvzvfhwx655lb6jpjx1whc4kjg8-gdk-pixbuf-2.42.4/lib/libgdk_pixbuf-2.0.so.0 (0x00007f0057c69000)
libepoxy.so.0 => /gnu/store/kxa5gvaydh012g4ar7xcvj4fq9wqlsmd-libepoxy-1.5.10/lib/libepoxy.so.0 (0x00007f0057b33000)
libm.so.6 => /gnu/store/5h2w4qi9hk1qzzgi1w83220ydslinr4s-glibc-2.33/lib/libm.so.6 (0x00007f00579f2000)
libgraphene-1.0.so.0 => /gnu/store/98f762si3nl2qmchqf8ni22zw32cimg5-graphene-1.10.6/lib/libgraphene-1.0.so.0 (0x00007f00579d4000)
libXi.so.6 => /gnu/store/3s0xcy15rkh08y8cd50skbs5b4js8zb5-libxi-1.7.10/lib/libXi.so.6 (0x00007f0058a68000)
libX11.so.6 => /gnu/store/fa43ijbrb96x08621qigxxiphp503lsi-libx11-1.7.3.1/lib/libX11.so.6 (0x00007f0057893000)
libpangoft2-1.0.so.0 => /gnu/store/6zfdna9yh2y35dps8h17w4sp6ggvnmwi-pango-next-1.50.4/lib/libpangoft2-1.0.so.0 (0x00007f0057879000)
libcloudproviders.so.0 => /gnu/store/h1dsawqf4s4q7ypxs6ijs7d5022m7x0v-libcloudproviders-0.3.1/lib/libcloudproviders.so.0 (0x00007f0057862000)
libtracker-sparql-3.0.so.0 => /gnu/store/c5zz7lhl1qnzd9a493a418z8wrg2ibwq-tracker-3.4.2/lib/libtracker-sparql-3.0.so.0 (0x00007f0057795000)
libpng16.so.16 => /gnu/store/p7iq81hxxyk9zy7a9dngbf16zm8d4klx-libpng-1.6.37/lib/libpng16.so.16 (0x00007f005775f000)
libtiff.so.5 => /gnu/store/343iqv9hvbvzp2in0hs03dvygccrcapl-libtiff-4.3.0/lib/libtiff.so.5 (0x00007f00576dd000)
libjpeg.so.62 => /gnu/store/g5hf1zhqlcyx9vw3q1xa52bgddaqsfm5-libjpeg-turbo-2.0.5/lib/libjpeg.so.62 (0x00007f0057646000)
librt.so.1 => /gnu/store/5h2w4qi9hk1qzzgi1w83220ydslinr4s-glibc-2.33/lib/librt.so.1 (0x00007f005763c000)
libxkbcommon.so.0 => /gnu/store/5sdcrp4591sb2m3h6903vhpdb6zy1cnm-libxkbcommon-1.3.0/lib/libxkbcommon.so.0 (0x00007f00575f6000)
libXext.so.6 => /gnu/store/4fhg8f8c6q647v7pysbng3j30frg0hcl-libxext-1.3.4/lib/libXext.so.6 (0x00007f00575e0000)
libXcursor.so.1 => /gnu/store/mx0bsijgajia8b0s7zfsc135ichy111d-libxcursor-1.2.0/lib/libXcursor.so.1 (0x00007f00575d4000)
libXdamage.so.1 => /gnu/store/i4yh9pwl39qvl9nf8q48gmjgq3wxi36b-libxdamage-1.1.5/lib/libXdamage.so.1 (0x00007f00575cf000)
libXfixes.so.3 => /gnu/store/7rwz6yjir4ysnhskcw5k8azksjwqd6pa-libxfixes-6.0.0/lib/libXfixes.so.3 (0x00007f00575c6000)
libXrandr.so.2 => /gnu/store/25k894kwhf4ljw1nl9rz6rm0c9sz5qaz-libxrandr-1.5.2/lib/libXrandr.so.2 (0x00007f00575b9000)
libXinerama.so.1 => /gnu/store/6h8skg2n4gpbi0bwfmw6qyh03phic6dm-libxinerama-1.1.4/lib/libXinerama.so.1 (0x00007f00575b4000)
libcairo-script-interpreter.so.2 => /gnu/store/6gq2n65ixpn6drd5wai2h7g5wjm6bp2b-cairo-1.16.0/lib/libcairo-script-interpreter.so.2 (0x00007f005758b000)
libpthread.so.0 => /gnu/store/5h2w4qi9hk1qzzgi1w83220ydslinr4s-glibc-2.33/lib/libpthread.so.0 (0x00007f005756b000)
libc.so.6 => /gnu/store/5h2w4qi9hk1qzzgi1w83220ydslinr4s-glibc-2.33/lib/libc.so.6 (0x00007f00573a9000)
libffi.so.7 => /gnu/store/wgqhlc12qvlwiklam7hz2r311fdcqfim-libffi-3.3/lib/libffi.so.7 (0x00007f005739c000)
libdl.so.2 => /gnu/store/5h2w4qi9hk1qzzgi1w83220ydslinr4s-glibc-2.33/lib/libdl.so.2 (0x00007f0057397000)
libpcre.so.1 => /gnu/store/di5bqb45hi5lvp2q08hlxqjdcl9phjb1-pcre-8.45/lib/libpcre.so.1 (0x00007f005731d000)
libz.so.1 => /gnu/store/8qv5kb2fgm4c3bf70zcg9l6hkf3qzpw9-zlib-1.2.11/lib/libz.so.1 (0x00007f0057300000)
libmount.so.1 => /gnu/store/5583c2za2jsn9g6az79rnksgvigwnsk7-util-linux-2.37.2-lib/lib/libmount.so.1 (0x00007f00572a3000)
libresolv.so.2 => /gnu/store/5h2w4qi9hk1qzzgi1w83220ydslinr4s-glibc-2.33/lib/libresolv.so.2 (0x00007f005728a000)
libthai.so.0 => /gnu/store/2zlx5p93icsrqvc0w3lzgkc6dd3wd4jl-libthai-0.1.28/lib/libthai.so.0 (0x00007f005727c000)
libfreetype.so.6 => /gnu/store/ak70pk2hjks17cx7zjdmdmzpcpiy9gpi-freetype-2.10.4/lib/libfreetype.so.6 (0x00007f00571cc000)
libgraphite2.so.3 => /gnu/store/z6d288h1g876vypda400nhh224yz49im-graphite2-1.3.13/lib/libgraphite2.so.3 (0x00007f00571a9000)
libgcc_s.so.1 => /gnu/store/094bbaq6glba86h1d4cj16xhdi6fk2jl-gcc-10.3.0-lib/lib/libgcc_s.so.1 (0x00007f005718f000)
libpixman-1.so.0 => /gnu/store/j8x167zaka2h6pxk7wiq5zkg67hzf8a2-pixman-0.40.0/lib/libpixman-1.so.0 (0x00007f00570e5000)
libxcb-shm.so.0 => /gnu/store/v8raqm2shh9azkl71107p53j55hir306-libxcb-1.14/lib/libxcb-shm.so.0 (0x00007f00570e0000)
libxcb.so.1 => /gnu/store/v8raqm2shh9azkl71107p53j55hir306-libxcb-1.14/lib/libxcb.so.1 (0x00007f00570b7000)
libxcb-render.so.0 => /gnu/store/v8raqm2shh9azkl71107p53j55hir306-libxcb-1.14/lib/libxcb-render.so.0 (0x00007f00570a7000)
libXrender.so.1 => /gnu/store/jh778dla5w316bsfc63q8fnhn87j81lw-libxrender-0.9.10/lib/libXrender.so.1 (0x00007f0057098000)
libbz2.so.1.0 => /gnu/store/s3hl12jxz9ybs7nsy7kq7ybzz7qnzmsg-bzip2-1.0.8/lib/libbz2.so.1.0 (0x00007f0057085000)
libexpat.so.1 => /gnu/store/iwcw80p8lkqsqbvchjvypvl06qlbjc3d-expat-2.4.1/lib/libexpat.so.1 (0x00007f0057054000)
/gnu/store/ayc9r7162rphy4zjw8ch01pmyh214h82-glibc-2.33/lib/ld-linux-x86-64.so.2 (0x00007f0058ba0000)
libXau.so.6 => /gnu/store/9k6slxs8ynz46h85bcy3zk2mx0nn8rpf-libxau-1.0.9/lib/libXau.so.6 (0x00007f005704d000)
libXdmcp.so.6 => /gnu/store/dfzp4rhkzqqagx3djn2kcnaflz1m8446-libxdmcp-1.1.3/lib/libXdmcp.so.6 (0x00007f0057045000)
libbsd.so.0 => /gnu/store/7b5qsjh2cbhwnqbdicvl81496k7b0g0j-libbsd-0.10.0/lib/libbsd.so.0 (0x00007f005702c000)
libicuuc.so.69 => /gnu/store/bjycxjjkp1da53ijsa4hfdrz9mcgg55h-icu4c-69.1/lib/libicuuc.so.69 (0x00007f0056e3b000)
libicui18n.so.69 => /gnu/store/bjycxjjkp1da53ijsa4hfdrz9mcgg55h-icu4c-69.1/lib/libicui18n.so.69 (0x00007f0056a00000)
libjson-glib-1.0.so.0 => /gnu/store/vp510k7i9lqan4d61nddlhhgdigbcx14-json-glib-1.6.2/lib/libjson-glib-1.0.so.0 (0x00007f0056e0c000)
libxml2.so.2 => /gnu/store/g3y6ifhm0751vgsxv90yipfw6mk189kj-libxml2-2.9.12/lib/libxml2.so.2 (0x00007f0056892000)
libsqlite3.so.0 => /gnu/store/xmzx5mzv4863yw9kmr2ykndgp37p8if0-sqlite-3.36.0/lib/libsqlite3.so.0 (0x00007f0056757000)
liblzma.so.5 => /gnu/store/c8isj4jq6knv0icfgr43di6q3nvdzkx7-xz-5.2.5/lib/liblzma.so.5 (0x00007f0056de3000)
libblkid.so.1 => /gnu/store/5583c2za2jsn9g6az79rnksgvigwnsk7-util-linux-2.37.2-lib/lib/libblkid.so.1 (0x00007f0056d8e000)
libdatrie.so.1 => /gnu/store/qlz21x91bs9n3f8nangfsk6g5rfqxvaz-libdatrie-0.2.13/lib/libdatrie.so.1 (0x00007f0056d84000)
libicudata.so.69 => /gnu/store/bjycxjjkp1da53ijsa4hfdrz9mcgg55h-icu4c-69.1/lib/libicudata.so.69 (0x00007f0054a00000)
libstdc++.so.6 => /gnu/store/094bbaq6glba86h1d4cj16xhdi6fk2jl-gcc-10.3.0-lib/lib/libstdc++.so.6 (0x00007f0056582000)
--8<---------------cut here---------------end--------------->8---

You'll noticed linux-vdso.so.1 doesn't reference a file but afaik this is expected as its a virtual library provided by the kernel.

> These errors can also be caused by dependent libraries not being found,
> or linker errors, etc.  I would suggest to run `ldd` on the .so itself
> (from glibc), and see what the output is.

This doesn't appear to be the case. Did I miss something?

> Grafts are applied after all packages have been built, so it is normal
> that the build environment would see and use the ungrafted gtk.

Yes, but that makes the error all the more confusing; the original error says that it can't find "/gnu/store/91ar3zh59n19rdn00png5r9hxp3k0y13-gtk-4.8.1/lib/libgtk-4.so.1", however this is the ungrafted gtk package, so it SHOULD (afaik) exist throughout the build. Further, when I enter a simulated build environment, the file does indeed exist.

Thanks again for you ongoing help and support!

On 05 Apr 2023 at 10:11, Josselin Poiret <dev <at> jpoiret.xyz> wrote:

> [[PGP Signed Part:Undecided]]
> Hi Collin,
>
> "Collin J. Doering" via Bug reports for GNU Guix <bug-guix <at> gnu.org>
> writes:
>
>> Hi team Guix!
>>
>> I was working on packaging taffybar (https://github.com/taffybar/taffybar), which depends
>> on haskell-gi (https://github.com/haskell-gi/haskell-gi) - haskell bindings for
>> goject-introspection capable libraries. While packaging gi-gdk, I hit this error:
>>
>> --8<---------------cut here---------------start------------->8---
>> ** (process:23): WARNING **: 00:09:56.407: Failed to load shared library
>> '/gnu/store/91ar3zh59n19rdn00png5r9hxp3k0y13-gtk-4.8.1/lib/libgtk-4.so.1' referenced by the
>> typelib: libgtk-4.so.1: cannot open shared object file: No such file or directory
>> Could not resolve symbol "gdk_device_pad_get_type" in namespace "Gdk-4.0"
>> CallStack (from HasCallStack):
>>   error, called at lib/Data/GI/CodeGen/LibGIRepository.hs:202:16 in haskell-gi-0.26.4-HCp1omjln8S5hdZ8Oexk5N:Data.GI.CodeGen.LibGIRepository
>> error: in phase 'configure': uncaught exception:
>> --8<---------------cut here---------------end--------------->8---
>
> These errors can also be caused by dependent libraries not being found,
> or linker errors, etc.  I would suggest to run `ldd` on the .so itself
> (from glibc), and see what the output is.
>
> Grafts are applied after all packages have been built, so it is normal
> that the build environment would see and use the ungrafted gtk.
>
> Best,


-- 
Collin J. Doering

http://rekahsoft.ca
http://blog.rekahsoft.ca
http://git.rekahsoft.ca




Information forwarded to bug-guix <at> gnu.org:
bug#62672; Package guix. (Wed, 05 Apr 2023 19:56:02 GMT) Full text and rfc822 format available.

Message #14 received at 62672 <at> debbugs.gnu.org (full text, mbox):

From: John Kehayias <john.kehayias <at> protonmail.com>
To: "Collin J. Doering" <collin <at> rekahsoft.ca>
Cc: Josselin Poiret <dev <at> jpoiret.xyz>, 62672 <at> debbugs.gnu.org
Subject: Re: bug#62672: Unexpected interaction between gobject-introspection
 and grafts
Date: Wed, 05 Apr 2023 19:55:14 +0000
Hi Collin and Josselin,

I haven't fully read this thread but wanted to chime in with work I did
but never finalized to upstream here. In short, I did get taffybar to
build and run if I recall. There was a lot of fussing with versions,
some Haskell packages that were broken/undergoing some breaking changes
at the time...I don't remember the details, sorry.

https://gitlab.com/podiki/guix-pod/-/blob/main/taffybar.scm

Checking now taffybar does not build (some dependent package failing,
looks like needs an input change) but ghc-gi-gdk does. This should be
the bulk of the work you need beyond polishing (linting, license checks,
all that). It is a lot of packages, many are the autogenerated
haskell-gi packages as I'm sure you are familiar.

On the gobject-introspection front, I do remember needing some tinkering
there for cairo, and ended up using what was suggested here:
https://issues.guix.gnu.org/49122#4

I haven't used Taffybar much since I went back to my lisp land (StumpWM)
but hopefully this is helpful. Some Haskell experts can chime in with
other details or polishing once it builds.

Let me know if you need help parsing this early and rough packaging I
did, though I think it shouldn't take much to get it to build again
(famous last words, I know).

John





Information forwarded to bug-guix <at> gnu.org:
bug#62672; Package guix. (Wed, 05 Apr 2023 20:33:02 GMT) Full text and rfc822 format available.

Message #17 received at 62672 <at> debbugs.gnu.org (full text, mbox):

From: "Collin J. Doering" <collin <at> rekahsoft.ca>
To: John Kehayias <john.kehayias <at> protonmail.com>
Cc: Josselin Poiret <dev <at> jpoiret.xyz>, 62672 <at> debbugs.gnu.org
Subject: Re: bug#62672: Unexpected interaction between gobject-introspection
 and grafts
Date: Wed, 05 Apr 2023 16:21:34 -0400
Hi John,

Thanks for taking the time to chime in, much appreciated!

> https://gitlab.com/podiki/guix-pod/-/blob/main/taffybar.scm

I took a look at your repo and found that our definition of ghc-gi-gdk is almost exactly the same (sans some historical differences (eg, using gtk (v4) vs gtk+)). 

> On the gobject-introspection front, I do remember needing some tinkering
> there for cairo, and ended up using what was suggested here:
> https://issues.guix.gnu.org/49122#4

Interesting! Sadly I rediscovered this and provided a very similar solution in the first message of this bug report (with the help of a similar issue in nix). imho we should adjust the goject-introspection package to include working cairo typelib files.

> Checking now taffybar does not build (some dependent package failing,
> looks like needs an input change) but ghc-gi-gdk does. This should be
> the bulk of the work you need beyond polishing (linting, license checks,
> all that). It is a lot of packages, many are the autogenerated
> haskell-gi packages as I'm sure you are familiar.

I'll take a closer look this evening whether or not there is some other difference that could be causing the reported build failure.

> but hopefully this is helpful

Definitely useful insight, thanks again John!

> Let me know if you need help parsing this early and rough packaging I
> did, though I think it shouldn't take much to get it to build again
> (famous last words, I know).

I don't foresee any issues with understanding whats going on (similarly, famous last works 😉) but if I have any questions I'll let you know in this thread.

On 05 Apr 2023 at 19:55, John Kehayias <john.kehayias <at> protonmail.com> wrote:

> Hi Collin and Josselin,
>
> I haven't fully read this thread but wanted to chime in with work I did
> but never finalized to upstream here. In short, I did get taffybar to
> build and run if I recall. There was a lot of fussing with versions,
> some Haskell packages that were broken/undergoing some breaking changes
> at the time...I don't remember the details, sorry.
>
> https://gitlab.com/podiki/guix-pod/-/blob/main/taffybar.scm
>
> Checking now taffybar does not build (some dependent package failing,
> looks like needs an input change) but ghc-gi-gdk does. This should be
> the bulk of the work you need beyond polishing (linting, license checks,
> all that). It is a lot of packages, many are the autogenerated
> haskell-gi packages as I'm sure you are familiar.
>
> On the gobject-introspection front, I do remember needing some tinkering
> there for cairo, and ended up using what was suggested here:
> https://issues.guix.gnu.org/49122#4
>
> I haven't used Taffybar much since I went back to my lisp land (StumpWM)
> but hopefully this is helpful. Some Haskell experts can chime in with
> other details or polishing once it builds.
>
> Let me know if you need help parsing this early and rough packaging I
> did, though I think it shouldn't take much to get it to build again
> (famous last words, I know).
>
> John


-- 
Collin J. Doering

http://rekahsoft.ca
http://blog.rekahsoft.ca
http://git.rekahsoft.ca




Information forwarded to bug-guix <at> gnu.org:
bug#62672; Package guix. (Thu, 06 Apr 2023 19:34:01 GMT) Full text and rfc822 format available.

Message #20 received at 62672 <at> debbugs.gnu.org (full text, mbox):

From: Josselin Poiret <dev <at> jpoiret.xyz>
To: "Collin J. Doering" <collin <at> rekahsoft.ca>
Cc: 62672 <at> debbugs.gnu.org
Subject: Re: bug#62672: Unexpected interaction between gobject-introspection
 and grafts
Date: Thu, 06 Apr 2023 21:33:29 +0200
[Message part 1 (text/plain, inline)]
Hi Collin,

"Collin J. Doering" <collin <at> rekahsoft.ca> writes:

> Hi Josselin,
>
> Thanks for your quick reply. It appears that all dynamic libraries referenced by libgtk.so are correctly referenced (and not missing):
> [...]
> You'll noticed linux-vdso.so.1 doesn't reference a file but afaik this is expected as its a virtual library provided by the kernel.
>
>> These errors can also be caused by dependent libraries not being found,
>> or linker errors, etc.  I would suggest to run `ldd` on the .so itself
>> (from glibc), and see what the output is.
>
> This doesn't appear to be the case. Did I miss something?
>
> [...]
>
> Yes, but that makes the error all the more confusing; the original error says that it can't find "/gnu/store/91ar3zh59n19rdn00png5r9hxp3k0y13-gtk-4.8.1/lib/libgtk-4.so.1", however this is the ungrafted gtk package, so it SHOULD (afaik) exist throughout the build. Further, when I enter a simulated build environment, the file does indeed exist.

The ENOFILE can happen while loading _any_ dependency of the required
lib, and will be propagated back.  Since the file seems to exist in the
development environment as you mentioned, my guess is that some
dependency somewhere seems to be missing somehow.  You could try
manually running the `./configure` script or equivalent that's failing,
with LD_DEBUG=libs set in the environment (or even =all), and seeing if
that error still happens/what the error is precisely.  If it doesn't
happen, this would be even more suspicious.

Best,
-- 
Josselin Poiret
[signature.asc (application/pgp-signature, inline)]

Reply sent to "Collin J. Doering" <collin <at> rekahsoft.ca>:
You have taken responsibility. (Sat, 27 Apr 2024 01:33:12 GMT) Full text and rfc822 format available.

Notification sent to "Collin J. Doering" <collin <at> rekahsoft.ca>:
bug acknowledged by developer. (Sat, 27 Apr 2024 01:33:13 GMT) Full text and rfc822 format available.

Message #25 received at 62672-close <at> debbugs.gnu.org (full text, mbox):

From: "Collin J. Doering" <collin <at> rekahsoft.ca>
To: 62672-close <at> debbugs.gnu.org
Subject: Unexpected interaction between gobject-introspection and grafts
Date: Fri, 26 Apr 2024 21:32:02 -0400
[Message part 1 (text/plain, inline)]
Thanks Josselin.

I haven't looked at this in some time, so I'm closing to avoid clutter.

-- 
Collin J. Doering

http://rekahsoft.ca
http://blog.rekahsoft.ca
http://git.rekahsoft.ca
[signature.asc (application/pgp-signature, inline)]

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Sat, 25 May 2024 11:24:13 GMT) Full text and rfc822 format available.

This bug report was last modified 348 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.