[Bug]: configure.py and kBuild hardcode 'VBox' Qt library infix (-lQt6CoreVBox) and legacy GTK2 plugins when building with --with-qt-dir on Linux

Aberta
#923 0 comentários 0 reações 0 responsáveis Ver no GitHub

Mantenedores costumam responder em até 6 dias

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
4/5
Tempo estimado
3-5 dias
Facilidade para iniciantes
52/100
Tipo de issue
Bug
Clareza
Razoavelmente clara
Status de atividade
Ativa
Stack de tecnologia
c, cpp

Direção de pesquisa

Start by reading configure.py and the kBuild rules that select Qt libraries and stage plugins; the report identifies those as the failing paths but does not give specific rule files. Reproduce with the stated Qt 6.8 SDK and --with-qt-dir, then inspect the missing library and GTK2 plugin dependencies. Done when configuration and staging work with upstream Qt 6.8 without the reported missing targets.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

bug
Version

7.2.22

Host OS Type

Linux

Host OS name + version

Debian 12 (Bookworm)

Host Architecture

x86

Guest OS Type

other

Guest Architecture

x86

Guest OS name + version

N/A (Host build system: configure.py and kBuild)

Component

Other

What happened?

When building VirtualBox trunk (r113835) on Debian 12 x86_64 using a standard upstream Qt 6.8.0 SDK directory via --with-qt-dir=$HOME/Qt/6.8.0/gcc_64, three build issues occur:

1. configure.py hardcodes -lQt6CoreVBox instead of -lQt6Core

Running:

./configure --disable-hardening --disable-docs --disable-java --with-qt-dir=$HOME/Qt/6.8.0/gcc_64

fails the Qt library check because configure.py links the test binary against Oracle's internal suffixed library name -lQt6CoreVBox:

[WARN]: Compilation of test program for qt failed
[WARN]:    g++ -I/usr/include/c++/12 -I/home/adrian/Qt/6.8.0/gcc_64/include -L/home/adrian/Qt/6.8.0/gcc_64/lib /tmp/tmp61yp9ocv/testlib.cpp -fPIC -o /tmp/tmp61yp9ocv/testlib -std=c++17 -Wl,-rpath,/home/adrian/Qt/6.8.0/gcc_64/lib -lQt6CoreVBox
[WARN]: /usr/bin/ld: cannot find -lQt6CoreVBox: No such file or directory
collect2: error: ld returned 1 exit status
2. kBuild still expects the VBox infix on Qt6 libraries and plugins

After patching configure.py (s/Qt6CoreVBox/Qt6Core/g), configure.py succeeds, but kmk fails because the VBox infix is still expected on the libraries and plugins inside --with-qt-dir:

kmk: *** No rule to make target '/home/adrian/Qt/6.8.0/gcc_64/lib/libQt6CoreVBox.so', needed by '/home/adrian/vbox-build/vbox/out/linux.amd64/release/obj/VBoxDbg/VBoxDbg.so'.  Stop.
kmk: *** No rule to make target '/home/adrian/Qt/6.8.0/gcc_64/plugins/platforms/libqxcbVBox.so', needed by '/home/adrian/vbox-build/vbox/out/linux.amd64/release/obj/qt-bin/plugins/platforms/libqxcbVBox.so'.  Stop.
3. Pass - Staging requires legacy GTK2 Qt plugins removed in Qt 6

During kBuild: Pass - Staging, the build fails looking for libqgtk2VBox.so and libqgtk2styleVBox.so:

kmk: *** No rule to make target '/home/adrian/Qt/6.8.0/gcc_64/plugins/platformthemes/libqgtk2VBox.so', needed by '/home/adrian/vbox-build/vbox/out/linux.amd64/release/obj/qt-bin/plugins/platformthemes/libqgtk2VBox.so'.  Stop.
kmk: *** No rule to make target '/home/adrian/Qt/6.8.0/gcc_64/plugins/styles/libqgtk2styleVBox.so', needed by '/home/adrian/vbox-build/vbox/out/linux.amd64/release/obj/qt-bin/plugins/styles/libqgtk2styleVBox.so'.  Stop.

In Qt 6.8, GTK2 plugins do not exist (replaced by plugins/platformthemes/libqgtk3.so).

Workaround used to complete the build
  1. Replace Qt6CoreVBox with Qt6Core in configure.py.
  2. Create *VBox.so symlinks for lib/libQt6*.so* and plugins/**/*.so in the Qt 6.8 SDK directory.
  3. Symlink plugins/platformthemes/libqgtk2VBox.so and plugins/styles/libqgtk2styleVBox.so.
How can we reproduce this?
  1. On Debian 12 (x86_64), check out VirtualBox trunk:
    svn co https://www.virtualbox.org/svn/vbox/trunk vbox
    cd vbox
    
  2. Install an upstream Qt 6.8.0 SDK (linux_gcc_64) into $HOME/Qt/6.8.0/gcc_64.
  3. Run ./configure pointing --with-qt-dir to the Qt 6.8.0 directory:
    export LD_LIBRARY_PATH="$HOME/Qt/6.8.0/gcc_64/lib:$LD_LIBRARY_PATH"
    export PATH="$HOME/Qt/6.8.0/gcc_64/bin:$PATH"
    ./configure --disable-hardening --disable-docs --disable-java --with-qt-dir=$HOME/Qt/6.8.0/gcc_64
    
    -> Observe configure.log failing with /usr/bin/ld: cannot find -lQt6CoreVBox.
  4. Replace Qt6CoreVBox with Qt6Core in configure.py, re-run ./configure, source ./env.sh, and run kmk -j$(nproc):
    -> Observe kmk stopping on missing libQt6CoreVBox.so, libqxcbVBox.so, libqgtk2VBox.so, and libqgtk2styleVBox.so.
Did you upload all of your necessary log files, screenshots, etc.?
  • Yes, I've uploaded all pertinent files to this issue.
Linguagem predominante
C
Estrelas
1.4k
Forks
219
Métricas de merge de PRs
Nenhum PR com merge em 30d

Preparar o ambiente

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de VirtualBox/virtualbox

Todas as issues de VirtualBox/virtualbox

Issues semelhantes

Mais issues de C

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.