ports/182049: problem with qt4 plugins and clean room builds (poudriere)
Dennis
dennis.noordsij at helsinki.fi
Thu Sep 12 19:10:00 UTC 2013
>Number: 182049
>Category: ports
>Synopsis: problem with qt4 plugins and clean room builds (poudriere)
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Thu Sep 12 19:10:00 UTC 2013
>Closed-Date:
>Last-Modified:
>Originator: Dennis
>Release: 9.2-RC3
>Organization:
>Environment:
FreeBSD [REDACTED] 9.2-RC3-p1 FreeBSD 9.2-RC3-p1 #0: Mon Sep 9 19:37:31 UTC 2013 root at amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC amd64
>Description:
The x11-toolkits/qt4-gui and devel/qt4-corelib Makefiles define:
USES=pkgconfig
(a build-time dependency on pkg-config)
The configure script detects the existence of pkg-config, and creates the build key as follows:
"x86_64 usr/local/share/qt4/mkspecs/freebsd g++-4 full-config"
Note the "full-config".
(The build key is an identifier Qt uses to determine wether plugins were compiled with the same settings, architecture, and so on. Bear with me)
Then:
graphics/qt4-imageformats and graphics/qt4-iconengines do NOT define USES=pkgconfig
The result is that when building these in a clean room build environment such as poudriere, the binary package for x11-toolkits/qt4-gui is installed as one of the dependencies, however, pkg-config is _not_ installed.
The configure script detects the absence of pkg-config, and creates the build key as follows:
"x86_64 usr/local/share/qt4/mkspecs/freebsd g++-4 no-pkg-config"
Note the "no-pkg-config"
The result is that Qt refuses to load the built plugins with the following message:
The plugin '/usr/local/lib/qt4/plugins/imageformats/libqtiff.so' uses incompatible Qt library. Expected build key "x86_64 usr/local/share/qt4/mkspecs/freebsd g++-4 full-config", got "x86_64 usr/local/share/qt4/mkspecs/freebsd g++-4 no-pkg-config"
If one does not use a clean room build, one usually installs the plugins after having built qt4-gui, and then pkg-config will still be installed as a requirement for qt4-gui, so the plugins are built with the correct build key (i.e. the same configuration).
>How-To-Repeat:
Build x11-toolkits/qt4-gui in poudriere, then build graphics/qt4-imageformats in poudriere.
A good output (note absence of "no-pkg-config"):
Configuration .......... release shared dll largefile stl mmx 3dnow sse sse2 sse3 ssse3 minimal-config small-config medium-config large-config full-config qt3support phonon accessibility reduce_exports ipv6 clock-gettime clock-monotonic getaddrinfo ipv6ifname getifaddrs system-jpeg system-mng system-png png system-tiff system-freetype system-zlib nis gnu-libiconv glib openssl x11sm xshape xsync xrender mitshm fontconfig xkb icu concurrent xmlpatterns multimedia audio-backend svg script scripttools declarative release
A bad output (note presence of "no-pkg-config"):
Configuration .......... release shared dll largefile stl mmx 3dnow sse sse2 sse3 ssse3 minimal-config small-config medium-config large-config full-config no-pkg-config qt3support phonon accessibility reduce_exports ipv6 clock-gettime clock-monotonic getaddrinfo ipv6ifname getifaddrs system-jpeg system-mng system-png png system-tiff system-freetype system-zlib nis gnu-libiconv openssl x11sm xshape xsync xrender mitshm fontconfig xkb icu concurrent xmlpatterns multimedia audio-backend svg script scripttools declarative release
>Fix:
Add
USES=pkgconfig
to /usr/ports/graphics/qt4-imageformats/Makefile,
and /usr/ports/graphics/qt4-iconengines/Makefile
(Note: there may be more qt4 plugin ports, the same would apply to them)
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list