unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Qt
@ 2013-10-08 19:05 Andreas Enge
  2013-10-08 21:05 ` Qt Ludovic Courtès
  0 siblings, 1 reply; 17+ messages in thread
From: Andreas Enge @ 2013-10-08 19:05 UTC (permalink / raw)
  To: guix-devel

Hi,

I just pushed a patch for Qt 5.1.1. It builds on my machine, but as there
is no application using it so far, it may or may not work. Also, the build
uses sse/sse2/... instructions according to what is available on the processor;
we might wish to disable all or at least the most advanced of them in the
long run. For the time being, I would leave them in, and once we have
a qt application, check whether it works on different processors.

A next step would be to add qt 4.8.5, as I think this version is still
used more widely so far.

Andreas

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

* Re: Qt
  2013-10-08 19:05 Qt Andreas Enge
@ 2013-10-08 21:05 ` Ludovic Courtès
  2013-10-10 12:59   ` Qt Andreas Enge
  0 siblings, 1 reply; 17+ messages in thread
From: Ludovic Courtès @ 2013-10-08 21:05 UTC (permalink / raw)
  To: Andreas Enge; +Cc: guix-devel

Andreas Enge <andreas@enge.fr> skribis:

> I just pushed a patch for Qt 5.1.1.

Good, congratulations!

> It builds on my machine, but as there is no application using it so
> far, it may or may not work. Also, the build uses
> sse/sse2/... instructions according to what is available on the
> processor; we might wish to disable all or at least the most advanced
> of them in the long run.

Yes, as for GMP and FFTW.  Otherwise, when using substitutes from Hydra,
one could end up with binaries that raise SIGILL on their machine.

> For the time being, I would leave them in, and once we have a qt
> application, check whether it works on different processors.

If it’s a matter of adding the right configure flag, I’d do it before
it bites.

> A next step would be to add qt 4.8.5, as I think this version is still
> used more widely so far.

OK.

Thanks for daring to dive into that!

Ludo’.

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

* Re: Qt
  2013-10-08 21:05 ` Qt Ludovic Courtès
@ 2013-10-10 12:59   ` Andreas Enge
  2013-10-10 13:09     ` Qt Ludovic Courtès
  0 siblings, 1 reply; 17+ messages in thread
From: Andreas Enge @ 2013-10-10 12:59 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guix-devel

On Tue, Oct 08, 2013 at 11:05:04PM +0200, Ludovic Courtès wrote:
> Andreas Enge <andreas@enge.fr> skribis:
> > Also, the build uses
> > sse/sse2/... instructions according to what is available on the
> > processor; we might wish to disable all or at least the most advanced
> > of them in the long run.
> If it’s a matter of adding the right configure flag, I’d do it before
> it bites.

The following will leave out any special instructions, as far as I can see:
+                              "-no-sse2"
+                              "-no-sse3"
+                              "-no-ssse3"
+                              "-no-sse4.1"
+                              "-no-sse4.2"
+                              "-no-avx"
+                              "-no-avx2"
+                              "-no-neon"
+                              "-no-mips_dsp"
+                              "-no-mips_dspr2"))))

I do not know how much this slows down qt applications. According to wikipedia,
sse2 arrived in 2001. So one could argue that adding it would exclude almost
no machines.

Andreas

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

* Re: Qt
  2013-10-10 12:59   ` Qt Andreas Enge
@ 2013-10-10 13:09     ` Ludovic Courtès
  2013-10-10 20:00       ` Qt Andreas Enge
  0 siblings, 1 reply; 17+ messages in thread
From: Ludovic Courtès @ 2013-10-10 13:09 UTC (permalink / raw)
  To: Andreas Enge; +Cc: guix-devel

Andreas Enge <andreas@enge.fr> skribis:

> On Tue, Oct 08, 2013 at 11:05:04PM +0200, Ludovic Courtès wrote:
>> Andreas Enge <andreas@enge.fr> skribis:
>> > Also, the build uses
>> > sse/sse2/... instructions according to what is available on the
>> > processor; we might wish to disable all or at least the most advanced
>> > of them in the long run.
>> If it’s a matter of adding the right configure flag, I’d do it before
>> it bites.
>
> The following will leave out any special instructions, as far as I can see:
> +                              "-no-sse2"
> +                              "-no-sse3"
> +                              "-no-ssse3"
> +                              "-no-sse4.1"
> +                              "-no-sse4.2"
> +                              "-no-avx"
> +                              "-no-avx2"
> +                              "-no-neon"
> +                              "-no-mips_dsp"
> +                              "-no-mips_dspr2"))))
>
> I do not know how much this slows down qt applications. According to wikipedia,
> sse2 arrived in 2001. So one could argue that adding it would exclude almost
> no machines.

Yes, you may be right for SSE2 (especially considering the fact that
this kind of software is typically used on fairly recent machines.)

Ludo’.

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

* Re: Qt
  2013-10-10 13:09     ` Qt Ludovic Courtès
@ 2013-10-10 20:00       ` Andreas Enge
  2013-10-10 22:19         ` Qt Mark H Weaver
  2013-10-12 13:08         ` Qt Andreas Enge
  0 siblings, 2 replies; 17+ messages in thread
From: Andreas Enge @ 2013-10-10 20:00 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guix-devel

On Thu, Oct 10, 2013 at 03:09:09PM +0200, Ludovic Courtès wrote:
> Andreas Enge <andreas@enge.fr> skribis:
> > I do not know how much this slows down qt applications. According to wikipedia,
> > sse2 arrived in 2001. So one could argue that adding it would exclude almost
> > no machines.
> Yes, you may be right for SSE2 (especially considering the fact that
> this kind of software is typically used on fairly recent machines.)

Finally, I disabled everything special. As this is not a number crunching
library, I would like to be convinced of the usefulness of SSE.

Andreas

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

* Re: Qt
  2013-10-10 20:00       ` Qt Andreas Enge
@ 2013-10-10 22:19         ` Mark H Weaver
  2013-10-31 15:35           ` Qt Andreas Enge
  2013-10-12 13:08         ` Qt Andreas Enge
  1 sibling, 1 reply; 17+ messages in thread
From: Mark H Weaver @ 2013-10-10 22:19 UTC (permalink / raw)
  To: Andreas Enge; +Cc: guix-devel

Andreas Enge <andreas@enge.fr> writes:

> On Thu, Oct 10, 2013 at 03:09:09PM +0200, Ludovic Courtès wrote:
>> Andreas Enge <andreas@enge.fr> skribis:
>> > I do not know how much this slows down qt applications. According to wikipedia,
>> > sse2 arrived in 2001. So one could argue that adding it would exclude almost
>> > no machines.
>> Yes, you may be right for SSE2 (especially considering the fact that
>> this kind of software is typically used on fairly recent machines.)
>
> Finally, I disabled everything special.

You can assume SSE2 on x86_64, as _all_ x86_64 processors have it.  In
fact, the C function calling conventions of SysV x86_64 psABI (used by
GNU/Linux) specify that the SSE2 registers are used for passing floating
point values as arguments.

> As this is not a number crunching library, I would like to be
> convinced of the usefulness of SSE.

Qt is not a number crunching library, but I suspect it _does_ have image
rendering code, where SIMD instruction sets such as SSE2 can make a
dramatic difference in performance.

    Regards,
      Mark

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

* Re: Qt
  2013-10-10 20:00       ` Qt Andreas Enge
  2013-10-10 22:19         ` Qt Mark H Weaver
@ 2013-10-12 13:08         ` Andreas Enge
  2013-10-12 19:38           ` Qt Ludovic Courtès
  1 sibling, 1 reply; 17+ messages in thread
From: Andreas Enge @ 2013-10-12 13:08 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guix-devel

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. Two "hello world"
programs I found in a tutorial compile.

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

open("/nix/store/z70fv39wa8yrvvqq9zfidsh86z72p4gr-qt-4.8.5/lib/libicui18n.so.50", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/nix/store/shamfhyg9hcac63y3bll9p50ixxid8vb-glibc-2.18/lib/libicui18n.so.50", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/nix/store/52998i0m4gr7k35lni8fmg591zsyqamv-gcc-4.7.3/lib/libicui18n.so.50", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/nix/store/g4cs0ssg7ry4da1615947ild5l4wv6ba-zlib-1.2.7/lib/libicui18n.so.50", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/nix/store/dly2cqqprdsb4fqabrw0bxm1n42vpi6w-glib-2.38.0/lib/libicui18n.so.50", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/etc/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/nix/store/shamfhyg9hcac63y3bll9p50ixxid8vb-glibc-2.18/lib/libicui18n.so.50", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/nix/store/z70fv39wa8yrvvqq9zfidsh86z72p4gr-qt-4.8.5/lib/libicui18n", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/nix/store/shamfhyg9hcac63y3bll9p50ixxid8vb-glibc-2.18/lib/libicui18n", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/nix/store/52998i0m4gr7k35lni8fmg591zsyqamv-gcc-4.7.3/lib/libicui18n", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/nix/store/g4cs0ssg7ry4da1615947ild5l4wv6ba-zlib-1.2.7/lib/libicui18n", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/nix/store/dly2cqqprdsb4fqabrw0bxm1n42vpi6w-glib-2.38.0/lib/libicui18n", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/nix/store/shamfhyg9hcac63y3bll9p50ixxid8vb-glibc-2.18/lib/libicui18n", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/nix/store/z70fv39wa8yrvvqq9zfidsh86z72p4gr-qt-4.8.5/lib/icui18n.so.50", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/nix/store/shamfhyg9hcac63y3bll9p50ixxid8vb-glibc-2.18/lib/icui18n.so.50", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/nix/store/52998i0m4gr7k35lni8fmg591zsyqamv-gcc-4.7.3/lib/icui18n.so.50", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/nix/store/g4cs0ssg7ry4da1615947ild5l4wv6ba-zlib-1.2.7/lib/icui18n.so.50", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/nix/store/dly2cqqprdsb4fqabrw0bxm1n42vpi6w-glib-2.38.0/lib/icui18n.so.50", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/nix/store/shamfhyg9hcac63y3bll9p50ixxid8vb-glibc-2.18/lib/icui18n.so.50", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/nix/store/z70fv39wa8yrvvqq9zfidsh86z72p4gr-qt-4.8.5/lib/icui18n", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/nix/store/shamfhyg9hcac63y3bll9p50ixxid8vb-glibc-2.18/lib/icui18n", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/nix/store/52998i0m4gr7k35lni8fmg591zsyqamv-gcc-4.7.3/lib/icui18n", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/nix/store/g4cs0ssg7ry4da1615947ild5l4wv6ba-zlib-1.2.7/lib/icui18n", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/nix/store/dly2cqqprdsb4fqabrw0bxm1n42vpi6w-glib-2.38.0/lib/icui18n", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/nix/store/shamfhyg9hcac63y3bll9p50ixxid8vb-glibc-2.18/lib/icui18n", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/nix/store/shamfhyg9hcac63y3bll9p50ixxid8vb-glibc-2.18/share/locale/locale.alias", O_RDONLY|O_CLOEXEC) = 4

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?

Andreas

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

* Re: Qt
  2013-10-12 13:08         ` Qt Andreas Enge
@ 2013-10-12 19:38           ` Ludovic Courtès
  2013-10-12 21:25             ` Qt Andreas Enge
  0 siblings, 1 reply; 17+ messages in thread
From: Ludovic Courtès @ 2013-10-12 19:38 UTC (permalink / raw)
  To: Andreas Enge; +Cc: guix-devel

Andreas Enge <andreas@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’.

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

* Re: Qt
  2013-10-12 19:38           ` Qt Ludovic Courtès
@ 2013-10-12 21:25             ` Andreas Enge
  2013-10-12 21:39               ` Qt Andreas Enge
  2013-10-13 13:54               ` Qt Ludovic Courtès
  0 siblings, 2 replies; 17+ messages in thread
From: Andreas Enge @ 2013-10-12 21:25 UTC (permalink / raw)
  To: Ludovic Court??s; +Cc: guix-devel

On Sat, Oct 12, 2013 at 09:38:08PM +0200, Ludovic Court??s wrote:
> I wonder how people address this in general.  Perhaps we could start
> xvfb in a pre-check phase if that’s enough?

(Something is weird with your character encoding. Or with my character
decoding?)

I think that people either do not run "make check", or they have an X server
at the time of compiling and checking graphic libraries...
 
> > The gui program complains about a missing icui18n library. Strace shows the
> > following:
> libicu4c is a dependency of Qt, right?

Yes.

> 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)'

Hm, which libqt.so? There are 20 libQt*.so! Precisely:
libQt3Support.so     libQtDesignerComponents.so  libQtNetwork.so      libQtSvg.so
libQtCLucene.so      libQtDesigner.so            libQtOpenGL.so       libQtTest.so
libQtCore.so         libQtGui.so                 libQtScript.so       libQtWebKit.so
libQtDBus.so         libQtHelp.so                libQtScriptTools.so  libQtXmlPatterns.so
libQtDeclarative.so  libQtMultimedia.so          libQtSql.so          libQtXml.so

Anyway, objdump on none of them yields anything after piped through "grep icu".

The problem of not finding the icu library was not critical, by the way;
a warning was printed on the console, and the "hello world" program worked
nonetheless.

Andreas

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

* Re: Qt
  2013-10-12 21:25             ` Qt Andreas Enge
@ 2013-10-12 21:39               ` Andreas Enge
  2013-10-13 13:54               ` Qt Ludovic Courtès
  1 sibling, 0 replies; 17+ messages in thread
From: Andreas Enge @ 2013-10-12 21:39 UTC (permalink / raw)
  To: Ludovic Court??s; +Cc: guix-devel

On Sat, Oct 12, 2013 at 11:25:38PM +0200, Andreas Enge wrote:
> (Something is weird with your character encoding. Or with my character
> decoding?)

My character encoding. LC_ALL=C is good for avoiding German error messages
to be sent to mailing lists, but UTF-8 is better for the rest.

Andreas

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

* Re: Qt
  2013-10-12 21:25             ` Qt Andreas Enge
  2013-10-12 21:39               ` Qt Andreas Enge
@ 2013-10-13 13:54               ` Ludovic Courtès
  2013-10-13 14:18                 ` Qt Andreas Enge
  1 sibling, 1 reply; 17+ messages in thread
From: Ludovic Courtès @ 2013-10-13 13:54 UTC (permalink / raw)
  To: Andreas Enge; +Cc: guix-devel

Andreas Enge <andreas@enge.fr> skribis:

> On Sat, Oct 12, 2013 at 09:38:08PM +0200, Ludovic Court??s wrote:

[...]

>> 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)'
>
> Hm, which libqt.so? There are 20 libQt*.so! Precisely:
> libQt3Support.so     libQtDesignerComponents.so  libQtNetwork.so      libQtSvg.so
> libQtCLucene.so      libQtDesigner.so            libQtOpenGL.so       libQtTest.so
> libQtCore.so         libQtGui.so                 libQtScript.so       libQtWebKit.so
> libQtDBus.so         libQtHelp.so                libQtScriptTools.so  libQtXmlPatterns.so
> libQtDeclarative.so  libQtMultimedia.so          libQtSql.so          libQtXml.so
>
> Anyway, objdump on none of them yields anything after piped through "grep icu".

(Should be ‘objdump -x’.)

Could you look for -licu in the Qt build log, to see which of those
shared libs is meant to be linked against it?

Thanks,
Ludo’.

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

* Re: Qt
  2013-10-13 13:54               ` Qt Ludovic Courtès
@ 2013-10-13 14:18                 ` Andreas Enge
  2013-10-13 20:46                   ` Qt Ludovic Courtès
  0 siblings, 1 reply; 17+ messages in thread
From: Andreas Enge @ 2013-10-13 14:18 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guix-devel

On Sun, Oct 13, 2013 at 03:54:16PM +0200, Ludovic Courtès wrote:
> Could you look for -licu in the Qt build log, to see which of those
> shared libs is meant to be linked against it?

None of them, as far as I can tell.

The only place where I found 'licu' is the following:

ICU auto-detection... ()
g++ -c -pipe -O2 -Wall -W  -I../../../mkspecs/linux-g++ -I. -o icu.o icu.cpp
g++ -Wl,-O1 -o icu icu.o     -licuuc -licui18n
ICU enabled.

This is during the configure phase.

The only interesting lines containing icu are the following:
g++ -c -include .pch/release-shared/QtCore -pipe -pthread -I/nix/store/dly2cqqprdsb4fqabrw0bxm1n42vpi6w-glib-2.38.0/include/glib-2.0 -I/nix/store/dly2cqqprdsb4fqabrw0bxm1n42vpi6w-glib-2.38.0/lib/glib-2.0/include -O2 -fvisibility=hidden -fvisibility-inlines-hidden -Wall -W -D_REENTRANT -fPIC -DQT_SHARED -DQT_BUILD_CORE_LIB -DQT_NO_USING_NAMESPACE -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT3_SUPPORT -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DELF_INTERPRETER=\"\" -DQLIBRARYINFO_EPOCROOT -DQT_USE_ICU -DHB_EXPORT=Q_CORE_EXPORT -DQT_NO_DEBUG -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -I../../mkspecs/linux-g++ -I. -I../../include -I../../include/QtCore -I.rcc/release-shared -Iglobal -I../../tools/shared -I../3rdparty/harfbuzz/src -I../3rdparty/md5 -I../3rdparty/md4 -I.moc/release-shared -o 
 .obj/release-shared/qlocale_icu.o tools/qlocale_icu.cpp

and another one
g++ ... -o libQtCore.so.4.8.5 ... .obj/release-shared/qlocale_icu.o ...

So at least this gives us the library.

And qlocale_icu.c contains this:
        // resolve libicui18n
        QLibrary lib(QLatin1String("icui18n"), QLatin1String(U_ICU_VERSION_SHORT));
        lib.setLoadHints(QLibrary::ImprovedSearchHeuristics);
        if (!lib.load()) {
            qWarning() << "Unable to load library icui18n" << lib.errorString();
            status = ErrorLoading;
            return false;
        }
and
        // resolve libicuuc
        QLibrary ucLib(QLatin1String("icuuc"), QLatin1String(U_ICU_VERSION_SHORT));
        ucLib.setLoadHints(QLibrary::ImprovedSearchHeuristics);
        if (!ucLib.load()) {
            qWarning() << "Unable to load library icuuc" << ucLib.errorString();
            status = ErrorLoading;
            return false;

So indeed this looks like dlopen at run time. ldd on libQt5Core.so shows that
in Qt 5, the library is explicitly linked with the icu libraries.

Andreas

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

* Re: Qt
  2013-10-13 14:18                 ` Qt Andreas Enge
@ 2013-10-13 20:46                   ` Ludovic Courtès
  2013-11-11 20:19                     ` Qt Andreas Enge
  0 siblings, 1 reply; 17+ messages in thread
From: Ludovic Courtès @ 2013-10-13 20:46 UTC (permalink / raw)
  To: Andreas Enge; +Cc: guix-devel

Andreas Enge <andreas@enge.fr> skribis:

> So indeed this looks like dlopen at run time. ldd on libQt5Core.so shows that
> in Qt 5, the library is explicitly linked with the icu libraries.

So I would patch Qt 4 to explicitly link libQt4Core.so (whatever it’s
called) against libicu as well.  That will make sure it’s found at run
time.

HTH,
Ludo’.

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

* Re: Qt
  2013-10-10 22:19         ` Qt Mark H Weaver
@ 2013-10-31 15:35           ` Andreas Enge
  0 siblings, 0 replies; 17+ messages in thread
From: Andreas Enge @ 2013-10-31 15:35 UTC (permalink / raw)
  To: Mark H Weaver; +Cc: guix-devel

On Thu, Oct 10, 2013 at 06:19:09PM -0400, Mark H Weaver wrote:
> You can assume SSE2 on x86_64, as _all_ x86_64 processors have it.

Very well. Here is the list of options to potentially turn off for Qt 4.8.5:
                              "-no-mmx"
                              "-no-3dnow"
                              "-no-sse"
                              "-no-sse2"
                              "-no-sse3"
                              "-no-ssse3"
                              "-no-sse4.1"
                              "-no-sse4.2"
                              "-no-avx"
                              "-no-neon"
So I can enable mmx, 3dnow, sse and sse2 on x86_64? Or only sse and sse2?
Or only sse2?

Qt 5.1.1 also has the following:
                              "-no-avx2"
                              "-no-mips_dsp"
                              "-no-mips_dspr2"
How about mips? We agreed to target it at loongson for the time being,
then could we enable one or both of the mips related options?

Andreas

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

* Re: Qt
  2013-10-13 20:46                   ` Qt Ludovic Courtès
@ 2013-11-11 20:19                     ` Andreas Enge
  2013-11-11 20:36                       ` Qt Ludovic Courtès
  0 siblings, 1 reply; 17+ messages in thread
From: Andreas Enge @ 2013-11-11 20:19 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guix-devel

On Sun, Oct 13, 2013 at 10:46:47PM +0200, Ludovic Courtès wrote:
> Andreas Enge <andreas@enge.fr> skribis:
> > So indeed this looks like dlopen at run time. ldd on libQt5Core.so shows that
> > in Qt 5, the library is explicitly linked with the icu libraries.
> So I would patch Qt 4 to explicitly link libQt4Core.so (whatever it’s
> called) against libicu as well.  That will make sure it’s found at run
> time.

No idea how to do this with the cmake build system...

Andreas

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

* Re: Qt
  2013-11-11 20:19                     ` Qt Andreas Enge
@ 2013-11-11 20:36                       ` Ludovic Courtès
  2014-09-29  8:06                         ` Qt Andreas Enge
  0 siblings, 1 reply; 17+ messages in thread
From: Ludovic Courtès @ 2013-11-11 20:36 UTC (permalink / raw)
  To: Andreas Enge; +Cc: guix-devel

Andreas Enge <andreas@enge.fr> skribis:

> On Sun, Oct 13, 2013 at 10:46:47PM +0200, Ludovic Courtès wrote:
>> Andreas Enge <andreas@enge.fr> skribis:
>> > So indeed this looks like dlopen at run time. ldd on libQt5Core.so shows that
>> > in Qt 5, the library is explicitly linked with the icu libraries.
>> So I would patch Qt 4 to explicitly link libQt4Core.so (whatever it’s
>> called) against libicu as well.  That will make sure it’s found at run
>> time.
>
> No idea how to do this with the cmake build system...

Perhaps by adding -licu to the relevant cmake-generated Makefile, after
the ‘configure’ phase?  (Easier said than done.)

Ludo’.

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

* Re: Qt
  2013-11-11 20:36                       ` Qt Ludovic Courtès
@ 2014-09-29  8:06                         ` Andreas Enge
  0 siblings, 0 replies; 17+ messages in thread
From: Andreas Enge @ 2014-09-29  8:06 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guix-devel

On Mon, Nov 11, 2013 at 09:36:55PM +0100, Ludovic Courtès wrote:
> Perhaps by adding -licu to the relevant cmake-generated Makefile, after
> the ‘configure’ phase?  (Easier said than done.)

This is finally fixed in commit 47e225c, thanks to the hackathon.

Andreas

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

end of thread, other threads:[~2014-09-29  8:06 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-10-08 19:05 Qt Andreas Enge
2013-10-08 21:05 ` Qt Ludovic Courtès
2013-10-10 12:59   ` Qt Andreas Enge
2013-10-10 13:09     ` Qt Ludovic Courtès
2013-10-10 20:00       ` Qt Andreas Enge
2013-10-10 22:19         ` Qt Mark H Weaver
2013-10-31 15:35           ` Qt Andreas Enge
2013-10-12 13:08         ` Qt Andreas Enge
2013-10-12 19:38           ` Qt Ludovic Courtès
2013-10-12 21:25             ` Qt Andreas Enge
2013-10-12 21:39               ` Qt Andreas Enge
2013-10-13 13:54               ` Qt Ludovic Courtès
2013-10-13 14:18                 ` Qt Andreas Enge
2013-10-13 20:46                   ` Qt Ludovic Courtès
2013-11-11 20:19                     ` Qt Andreas Enge
2013-11-11 20:36                       ` Qt Ludovic Courtès
2014-09-29  8:06                         ` Qt Andreas Enge

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).