Andreas Enge <andr...@enge.fr> skribis:

> So I added Qt 4.8.5, after disabling a few tests requiring an X server -
> adding xorg-server as an input was not enough, as the server would not be
> started by the tests, but supposed to be already running.

I wonder how people address this in general.  Perhaps we could start
xvfb in a pre-check phase if that’s enough?

> Two "hello world" programs I found in a tutorial compile.

Neat.

> The gui program complains about a missing icui18n library. Strace shows the
> following:

[...]

> open("/etc/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or 
> directory)

What’s this?!  Would be good to know where it comes from.  Normally our
glibc doesn’t look for ld.so.cache (see ‘glibc-no-ld-so-cache.patch’.)


[...]

> icu4c was present at the time of compilation, but is not listed as a 
> reference:
>
> $$ ./pre-inst-env guix gc --references 
> /nix/store/z70fv39wa8yrvvqq9zfidsh86z72p4gr-qt-4.8.5
>
> /nix/store/2332f9jmabldwz08lqj9yd8znrx9z125-libpng-1.5.17
> /nix/store/3xkdzldlqm4sa2p4czjbnybdwq47qlw2-fontconfig-2.10.93
> /nix/store/52998i0m4gr7k35lni8fmg591zsyqamv-gcc-4.7.3
> /nix/store/8cpwgsdx2njpkdj20i963zfxs0fyqkvi-libjpeg-8d
> /nix/store/arsxjcl3kdxxjxf7s1nsvfczis6pckm3-libxrender-0.9.7
> /nix/store/asmki6g7ca64sdlcf6ahnjxvxg2x6sgv-libx11-1.5.0
> /nix/store/b3c1z47c201gz8gnx5553kw2qb4qdq3b-freetype-2.4.11
> /nix/store/dly2cqqprdsb4fqabrw0bxm1n42vpi6w-glib-2.38.0
> /nix/store/g4cs0ssg7ry4da1615947ild5l4wv6ba-zlib-1.2.7
> /nix/store/i9b6q8wciapn69wifmb1xgpikj4ljjzy-alsa-lib-1.0.27.1
> /nix/store/l8bnfq6n6hb2wvx0kxdy141jna8mkns3-mysql-5.1.54
> /nix/store/lhb68hrv6hcris5bbr7y894c9g8fj558-libxext-1.3.1
> /nix/store/shamfhyg9hcac63y3bll9p50ixxid8vb-glibc-2.18
> /nix/store/vmajpkk5ih03g0wik16693fkc638if8k-mesa-8.0.5
> /nix/store/z70fv39wa8yrvvqq9zfidsh86z72p4gr-qt-4.8.5
>
> ldd on the offending binary shows no dependency on anything icu related,
> and installing icu4c in the user profile does not have any effect.
>
> If I add $HOME/.guix-profile/lib to LD_LIBRARY_PATH, the problem disappears.
> I wonder if some dlopen magic is involved. Do you see a solution from
> this description?

libicu4c is a dependency of Qt, right?

If so, I would make sure that it’s NEEDed by libqt.so, and that it’s in
its RUNPATH.  To do that, run:

  objdump -x libqt.so | grep -E '(NEED|PATH)'

If it’s not NEEDed, then -licu4c must be added on the link command for
libqt.so.

If it’s not in the RUNPATH, then -Wl,-rpath=/path/to/icu4c/lib must be
added to the libqt.so ld flags.

HTH,
Ludo’.

Reply via email to