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

Ouverte
#923 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 6 jours

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
52/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
Active
Stack technique
c, cpp

Piste de recherche

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.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

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.
Langage dominant
C
Étoiles
1.4k
Forks
219
Métriques de merge des PR
Aucune PR mergée en 30 j

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de VirtualBox/virtualbox

Toutes les issues de VirtualBox/virtualbox

Issues similaires

Plus d'issues C

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.