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

オープン
#923 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 6 日以内に返信

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
52/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
活発
技術スタック
c, cpp

調査の方向性

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.

索引モデルが issue の本文から書いたものです。

説明

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.
主要言語
C
スター
1.4k
フォーク
219
PR マージ指標
30日以内にマージされた PR はありません

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

VirtualBox/virtualbox のほかの issue

VirtualBox/virtualbox の issue をすべて見る

似ている issue

C の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。