emacs-bug-tracker
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#38405: closed ([staging] Some Qt plugins fail to build)


From: GNU bug Tracking System
Subject: bug#38405: closed ([staging] Some Qt plugins fail to build)
Date: Wed, 27 Nov 2019 23:19:01 +0000

Your message dated Thu, 28 Nov 2019 00:18:13 +0100
with message-id <address@hidden>
and subject line Re: bug#38405: [PATCH] gnu: qtbase: Use absolute references in 
.prl files.
has caused the debbugs.gnu.org bug report #38405,
regarding [staging] Some Qt plugins fail to build
to be marked as done.

(If you believe you have received this mail in error, please contact
address@hidden.)


-- 
38405: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=38405
GNU Bug Tracking System
Contact address@hidden with problems
--- Begin Message --- Subject: [staging] Some Qt plugins fail to build Date: Wed, 27 Nov 2019 19:06:11 +0100 User-agent: Notmuch/0.29.2 (https://notmuchmail.org) Emacs/26.3 (x86_64-pc-linux-gnu)
Hello Guix,

The 'staging' branch has been idle for a while because some Qt packages
fail to build (as of commit b60d2bfff95c0859d7814c1fe9d0940c87edc2b4):

* qtwayland: https://ci.guix.gnu.org/build/1851111/details
* qtgamepad: https://ci.guix.gnu.org/build/1946382/details
* qtwebglplugin: https://ci.guix.gnu.org/build/1830705/details

Unfortunately none of the above log files show the real issue because of
truncation: <https://bugs.gnu.org/37246>.

The problem is that for these packages specifically, the Makefile
generated by qmake references $out/lib/libQt5Core.so in LIBS (in
_addition_ to $qtbase/lib/libQt5Core.so), which in turn breaks the GCC
command line because $out/lib/libQt5Core.so obviously does not exist.

Prior to Qt 5.12, qmake generated LIBS by adding appropriate -L and -l
arguments to GCC such as "-L /gnu/store/abc123-foo/lib -l foo", whereas Qt
5.12 inserts absolute library references, i.e.
"/gnu/store/abc123-foo/lib/libfoo.so".  The former case worked because
GCC gracefully handles duplicate -L and -l arguments as long as at least
one of the '-L's are sane.

The references comes from the .prl files shipped with qtbase, which
contains entries such as:

  QMAKE_PRL_LIBS = $$[QT_INSTALL_LIBS]/libQt5Gui.so 
$$[QT_INSTALL_LIBS]/libQt5Core.so -lpthread 
/gnu/store/hhpkqcz4i8rsv3lk1iv694q0bkg2vij9-mesa-19.2.1/lib/libGL.so

QT_INSTALL_LIBS behaves differently in Guix at "configure time" (qmake)
and "build time" (when running "make", which creates other Makefiles).
At configure time it correctly resolves to the qtbase output (because we
patch qt_configure.prf to make it so).  At build time, it is repurposed
to be the installation prefix (i.e. $out/lib).

It's not clear to me why only the three mentioned packages are
affected.  My current best guess is that they fail to probe for some
(transitive?) dependency at "configure time", so no qmake cache entry is
created.  When these dependencies are resolved at "build time",
QT_INSTALL_LIBS points to the wrong location, and the build fails.

A workaround for this issue will be submitted shortly.

Attachment: signature.asc
Description: PGP signature


--- End Message ---
--- Begin Message --- Subject: Re: bug#38405: [PATCH] gnu: qtbase: Use absolute references in .prl files. Date: Thu, 28 Nov 2019 00:18:13 +0100 User-agent: Notmuch/0.29.2 (https://notmuchmail.org) Emacs/26.3 (x86_64-pc-linux-gnu)
Marius Bakke <address@hidden> writes:

> This fixes <https://bugs.gnu.org/38405>.
>
> * gnu/packages/qt.scm (qtbase)[arguments]: Add phase 'patch-prl-files'.

[...]

> +         (add-after 'patch-mkspecs 'patch-prl-files
> +           (lambda* (#:key outputs #:allow-other-keys)
> +             (let ((out (assoc-ref outputs "out")))
> +               ;; Insert absolute references to the qtbase libraries because
> +               ;; QT_INSTALL_LIBS does not always resolve correctly, 
> depending
> +               ;; on context.  See <https://bugs.gnu.org/38405>
> +               (substitute* (find-files (string-append out "/lib") "\\.prl$")
> +                 (("\\$\\$\\[QT_INSTALL_LIBS\\]")
> +                  (string-append out "/lib")))
> +               #t)))

I pushed this hunk in a59e2dd8cd16655e379abb567baf978c94f3d48e, as I'm
fairly confident that this is the right thing to do.

Feedback still welcome however.  :-)

Attachment: signature.asc
Description: PGP signature


--- End Message ---

reply via email to

[Prev in Thread] Current Thread [Next in Thread]