Details
-
Bug
-
Resolution: Unresolved
-
P2: Important
-
None
-
6.5, 6.8, 6.9, 6.10
-
None
Description
Building Qt with the following Dockerfile:
FROM rockylinux:8
ENV LANG=C.UTF-8
ENV PATH=/opt/rh/gcc-toolset-12/root/usr/bin:$PATH
ENV LD_LIBRARY_PATH=/opt/rh/gcc-toolset-12/root/usr/lib64:/opt/rh/gcc-toolset-12/root/usr/lib
ENV PKG_CONFIG_PATH=/opt/rh/gcc-toolset-12/root/usr/lib64/pkgconfig:/opt/rh/gcc-toolset-12/root/usr/lib/pkgconfig
RUN dnf -y install epel-release \
&& dnf config-manager --set-enabled powertools \
&& dnf -y install cmake git ninja-build pkgconf gcc-toolset-12-binutils \
gcc-toolset-12-gcc-c++ fontconfig-devel freetype-devel \
zlib-devel libxkbcommon-devel libxkbcommon-x11-devel \
libX11-devel wayland-devel libxcb-devel xcb-util-wm-devel \
xcb-util-image-devel xcb-util-keysyms-devel xcb-util-renderutil-devel \
xcb-util-cursor-devel mesa-libGL-devel mesa-libEGL-devel \
vulkan-devel glib2-devel at-spi2-core-devel \
gtk3-devel openssl-devel \
&& dnf clean all
WORKDIR /usr/src
ENV LDFLAGS=-Wl,-as-needed
RUN <<EOF
git clone --depth=1 https://github.com/qt/qtbase.git
cd qtbase
cmake -GNinja -B build . \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=OFF \
-DQT_BUILD_EXAMPLES=ON \
-DQT_QPA_DEFAULT_PLATFORM=wayland \
-DFEATURE_no_prefix=ON
cmake --build build --parallel
EOF
Results in the following libs being linked:
readelf -d qtbase/build/examples/gui/rasterwindow/rasterwindow
Dynamic section at offset 0xb7b988 contains 65 entries: Tag Type Name/Value 0x0000000000000001 (NEEDED) Shared library: [libdrm.so.2] 0x0000000000000001 (NEEDED) Shared library: [libwayland-client.so.0] 0x0000000000000001 (NEEDED) Shared library: [libwayland-cursor.so.0] 0x0000000000000001 (NEEDED) Shared library: [libX11-xcb.so.1] 0x0000000000000001 (NEEDED) Shared library: [libGLX.so.0] 0x0000000000000001 (NEEDED) Shared library: [libOpenGL.so.0] 0x0000000000000001 (NEEDED) Shared library: [libEGL.so.1] 0x0000000000000001 (NEEDED) Shared library: [libpng16.so.16] 0x0000000000000001 (NEEDED) Shared library: [libfreetype.so.6] 0x0000000000000001 (NEEDED) Shared library: [libfontconfig.so.1] 0x0000000000000001 (NEEDED) Shared library: [libX11.so.6] 0x0000000000000001 (NEEDED) Shared library: [libdbus-1.so.3] 0x0000000000000001 (NEEDED) Shared library: [libxkbcommon.so.0] 0x0000000000000001 (NEEDED) Shared library: [libz.so.1] 0x0000000000000001 (NEEDED) Shared library: [libicui18n.so.60] 0x0000000000000001 (NEEDED) Shared library: [libicuuc.so.60] 0x0000000000000001 (NEEDED) Shared library: [libpcre2-16.so.0] 0x0000000000000001 (NEEDED) Shared library: [libdl.so.2] 0x0000000000000001 (NEEDED) Shared library: [libglib-2.0.so.0] 0x0000000000000001 (NEEDED) Shared library: [librt.so.1] 0x0000000000000001 (NEEDED) Shared library: [libxkbcommon-x11.so.0] 0x0000000000000001 (NEEDED) Shared library: [libxcb-cursor.so.0] 0x0000000000000001 (NEEDED) Shared library: [libxcb-icccm.so.4] 0x0000000000000001 (NEEDED) Shared library: [libxcb-image.so.0] 0x0000000000000001 (NEEDED) Shared library: [libxcb-keysyms.so.1] 0x0000000000000001 (NEEDED) Shared library: [libxcb-randr.so.0] 0x0000000000000001 (NEEDED) Shared library: [libxcb-render-util.so.0] 0x0000000000000001 (NEEDED) Shared library: [libxcb-shm.so.0] 0x0000000000000001 (NEEDED) Shared library: [libxcb-sync.so.1] 0x0000000000000001 (NEEDED) Shared library: [libxcb-xfixes.so.0] 0x0000000000000001 (NEEDED) Shared library: [libxcb-render.so.0] 0x0000000000000001 (NEEDED) Shared library: [libxcb-shape.so.0] 0x0000000000000001 (NEEDED) Shared library: [libxcb-xkb.so.1] 0x0000000000000001 (NEEDED) Shared library: [libxcb-glx.so.0] 0x0000000000000001 (NEEDED) Shared library: [libxcb.so.1] 0x0000000000000001 (NEEDED) Shared library: [libstdc++.so.6] 0x0000000000000001 (NEEDED) Shared library: [libm.so.6] 0x0000000000000001 (NEEDED) Shared library: [libgcc_s.so.1] 0x0000000000000001 (NEEDED) Shared library: [libpthread.so.0] 0x0000000000000001 (NEEDED) Shared library: [libc.so.6] 0x0000000000000001 (NEEDED) Shared library: [ld-linux-x86-64.so.2] 0x000000000000001d (RUNPATH) Library runpath: [::::::::::::::::::::::::] 0x000000000000000c (INIT) 0x414000 0x000000000000000d (FINI) 0xca8da4 0x0000000000000019 (INIT_ARRAY) 0xf55c18 0x000000000000001b (INIT_ARRAYSZ) 304 (bytes) 0x000000000000001a (FINI_ARRAY) 0xf55d48 0x000000000000001c (FINI_ARRAYSZ) 16 (bytes) 0x000000006ffffef5 (GNU_HASH) 0x400340 0x0000000000000005 (STRTAB) 0x404fe8 0x0000000000000006 (SYMTAB) 0x400380 0x000000000000000a (STRSZ) 16090 (bytes) 0x000000000000000b (SYMENT) 24 (bytes) 0x0000000000000015 (DEBUG) 0x0 0x0000000000000003 (PLTGOT) 0xf7d000 0x0000000000000002 (PLTRELSZ) 18720 (bytes) 0x0000000000000014 (PLTREL) RELA 0x0000000000000017 (JMPREL) 0x40ef30 0x0000000000000007 (RELA) 0x409830 0x0000000000000008 (RELASZ) 22272 (bytes) 0x0000000000000009 (RELAENT) 24 (bytes) 0x000000006ffffffe (VERNEED) 0x409520 0x000000006fffffff (VERNEEDNUM) 10 0x000000006ffffff0 (VERSYM) 0x408ec2 0x0000000000000000 (NULL) 0x0
However, I would expect no XCB libraries being linked.
grep --color=auto Plugin_init.cpp qtbase/build/examples/gui/rasterwindow/build.ninja reveals Qt links XCB GL integrations and EGLFS device integrations even though XCB and EGLFS platform plugins aren't linked.
Applying such a patch:
diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_emu/CMakeLists.txt b/src/plugins/platforms/eglfs/deviceintegration/eglfs_emu/CMakeLists.txt index fa744be0330..5e4790be433 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_emu/CMakeLists.txt +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_emu/CMakeLists.txt @@ -8,6 +8,7 @@ qt_internal_add_plugin(QEglFSEmulatorIntegrationPlugin OUTPUT_NAME qeglfs-emu-integration PLUGIN_TYPE egldeviceintegrations + DEFAULT_IF "eglfs" IN_LIST QT_QPA_PLATFORMS SOURCES qeglfsemulatorintegration.cpp qeglfsemulatorintegration.h qeglfsemulatorscreen.cpp qeglfsemulatorscreen.h diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/CMakeLists.txt b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/CMakeLists.txt index 3c3e5a8a6ca..76edf6b23cc 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/CMakeLists.txt +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/CMakeLists.txt @@ -8,6 +8,7 @@ qt_internal_add_plugin(QEglFSKmsEglDeviceIntegrationPlugin OUTPUT_NAME qeglfs-kms-egldevice-integration PLUGIN_TYPE egldeviceintegrations + DEFAULT_IF "eglfs" IN_LIST QT_QPA_PLATFORMS SOURCES qeglfskmsegldevice.cpp qeglfskmsegldevice.h qeglfskmsegldeviceintegration.cpp qeglfskmsegldeviceintegration.h diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_mali/CMakeLists.txt b/src/plugins/platforms/eglfs/deviceintegration/eglfs_mali/CMakeLists.txt index 38981f87b98..d24b5315a44 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_mali/CMakeLists.txt +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_mali/CMakeLists.txt @@ -8,6 +8,7 @@ qt_internal_add_plugin(QEglFSMaliIntegrationPlugin OUTPUT_NAME qeglfs-mali-integration PLUGIN_TYPE egldeviceintegrations + DEFAULT_IF "eglfs" IN_LIST QT_QPA_PLATFORMS SOURCES qeglfsmaliintegration.cpp qeglfsmaliintegration.h qeglfsmalimain.cpp diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_openwfd/CMakeLists.txt b/src/plugins/platforms/eglfs/deviceintegration/eglfs_openwfd/CMakeLists.txt index 7e2362e6271..20cd9399e6e 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_openwfd/CMakeLists.txt +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_openwfd/CMakeLists.txt @@ -8,6 +8,7 @@ qt_internal_add_plugin(QEglFSOpenWFDIntegrationPlugin OUTPUT_NAME qeglfs-openwfd-integration PLUGIN_TYPE egldeviceintegrations + DEFAULT_IF "eglfs" IN_LIST QT_QPA_PLATFORMS SOURCES qeglfsopenwfdintegration.cpp qeglfsopenwfdintegration.h qeglfsopenwfdmain.cpp diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv/CMakeLists.txt b/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv/CMakeLists.txt index 01defc92428..de87cad8356 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv/CMakeLists.txt +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv/CMakeLists.txt @@ -8,6 +8,7 @@ qt_internal_add_plugin(QEglFSVivIntegrationPlugin OUTPUT_NAME qeglfs-viv-integration PLUGIN_TYPE egldeviceintegrations + DEFAULT_IF "eglfs" IN_LIST QT_QPA_PLATFORMS SOURCES qeglfsvivintegration.cpp qeglfsvivintegration.h qeglfsvivmain.cpp diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv_wl/CMakeLists.txt b/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv_wl/CMakeLists.txt index 6052e98ab84..c81d4689810 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv_wl/CMakeLists.txt +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_viv_wl/CMakeLists.txt @@ -8,6 +8,7 @@ qt_internal_add_plugin(QEglFSVivWaylandIntegrationPlugin OUTPUT_NAME qeglfs-viv-wl-integration PLUGIN_TYPE egldeviceintegrations + DEFAULT_IF "eglfs" IN_LIST QT_QPA_PLATFORMS SOURCES qeglfsvivwlintegration.cpp qeglfsvivwlintegration.h qeglfsvivwlmain.cpp diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_x11/CMakeLists.txt b/src/plugins/platforms/eglfs/deviceintegration/eglfs_x11/CMakeLists.txt index 9dde3090c86..932bf998948 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_x11/CMakeLists.txt +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_x11/CMakeLists.txt @@ -8,6 +8,7 @@ qt_internal_add_plugin(QEglFSX11IntegrationPlugin OUTPUT_NAME qeglfs-x11-integration PLUGIN_TYPE egldeviceintegrations + DEFAULT_IF "eglfs" IN_LIST QT_QPA_PLATFORMS SOURCES qeglfsx11integration.cpp qeglfsx11integration.h qeglfsx11main.cpp diff --git a/src/plugins/platforms/xcb/gl_integrations/xcb_egl/CMakeLists.txt b/src/plugins/platforms/xcb/gl_integrations/xcb_egl/CMakeLists.txt index 12938c159a9..a4a793a5d10 100644 --- a/src/plugins/platforms/xcb/gl_integrations/xcb_egl/CMakeLists.txt +++ b/src/plugins/platforms/xcb/gl_integrations/xcb_egl/CMakeLists.txt @@ -10,6 +10,7 @@ qt_find_package(EGL) qt_internal_add_plugin(QXcbEglIntegrationPlugin OUTPUT_NAME qxcb-egl-integration PLUGIN_TYPE xcbglintegrations + DEFAULT_IF "xcb" IN_LIST QT_QPA_PLATFORMS SOURCES qxcbeglcontext.h qxcbeglintegration.cpp qxcbeglintegration.h diff --git a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/CMakeLists.txt b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/CMakeLists.txt index f9f78ad1eb2..eb170ad90e1 100644 --- a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/CMakeLists.txt +++ b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/CMakeLists.txt @@ -8,6 +8,7 @@ qt_internal_add_plugin(QXcbGlxIntegrationPlugin OUTPUT_NAME qxcb-glx-integration PLUGIN_TYPE xcbglintegrations + DEFAULT_IF "xcb" IN_LIST QT_QPA_PLATFORMS SOURCES qglxintegration.cpp qglxintegration.h qxcbglxintegration.cpp qxcbglxintegration.h
Results in no xcb library:
Dynamic section at offset 0xa95ae8 contains 44 entries: Tag Type Name/Value 0x0000000000000001 (NEEDED) Shared library: [libpng16.so.16] 0x0000000000000001 (NEEDED) Shared library: [libfreetype.so.6] 0x0000000000000001 (NEEDED) Shared library: [libfontconfig.so.1] 0x0000000000000001 (NEEDED) Shared library: [libz.so.1] 0x0000000000000001 (NEEDED) Shared library: [libicui18n.so.60] 0x0000000000000001 (NEEDED) Shared library: [libicuuc.so.60] 0x0000000000000001 (NEEDED) Shared library: [libpcre2-16.so.0] 0x0000000000000001 (NEEDED) Shared library: [libdl.so.2] 0x0000000000000001 (NEEDED) Shared library: [libglib-2.0.so.0] 0x0000000000000001 (NEEDED) Shared library: [librt.so.1] 0x0000000000000001 (NEEDED) Shared library: [libdbus-1.so.3] 0x0000000000000001 (NEEDED) Shared library: [libxkbcommon.so.0] 0x0000000000000001 (NEEDED) Shared library: [libwayland-client.so.0] 0x0000000000000001 (NEEDED) Shared library: [libwayland-cursor.so.0] 0x0000000000000001 (NEEDED) Shared library: [libstdc++.so.6] 0x0000000000000001 (NEEDED) Shared library: [libm.so.6] 0x0000000000000001 (NEEDED) Shared library: [libgcc_s.so.1] 0x0000000000000001 (NEEDED) Shared library: [libpthread.so.0] 0x0000000000000001 (NEEDED) Shared library: [libc.so.6] 0x0000000000000001 (NEEDED) Shared library: [ld-linux-x86-64.so.2] 0x000000000000001d (RUNPATH) Library runpath: [::::::::::::::::::::::::] 0x000000000000000c (INIT) 0x410000 0x000000000000000d (FINI) 0xbfb824 0x0000000000000019 (INIT_ARRAY) 0xe74aa8 0x000000000000001b (INIT_ARRAYSZ) 232 (bytes) 0x000000000000001a (FINI_ARRAY) 0xe74b90 0x000000000000001c (FINI_ARRAYSZ) 16 (bytes) 0x000000006ffffef5 (GNU_HASH) 0x400340 0x0000000000000005 (STRTAB) 0x403f00 0x0000000000000006 (SYMTAB) 0x400378 0x000000000000000a (STRSZ) 12168 (bytes) 0x000000000000000b (SYMENT) 24 (bytes) 0x0000000000000015 (DEBUG) 0x0 0x0000000000000003 (PLTGOT) 0xe97000 0x0000000000000002 (PLTRELSZ) 14424 (bytes) 0x0000000000000014 (PLTREL) RELA 0x0000000000000017 (JMPREL) 0x40c118 0x0000000000000007 (RELA) 0x407690 0x0000000000000008 (RELASZ) 19080 (bytes) 0x0000000000000009 (RELAENT) 24 (bytes) 0x000000006ffffffe (VERNEED) 0x407380 0x000000006fffffff (VERNEEDNUM) 10 0x000000006ffffff0 (VERSYM) 0x406e88 0x0000000000000000 (NULL) 0x0
Attachments
Issue Links
- relates to
-
QTBUG-137074 Compose/CJK input support is not automatically linked with X11/Wayland static build
-
- Reported
-
-
QTBUG-132248 Switch QT_QPA_DEFAULT_PLATFORM to wayland for Linux
-
- Reported
-