[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#1010049: marked as done (qt6-base-dev: should provide a QT_HOST_PATH directory for cross building)



Your message dated Fri, 28 Oct 2022 19:52:31 +0200
with message-id <[🔎] Y1wW39RVPV5VJ8vu@alf.mars>
and subject line Re: Bug#1010049: qt6-base-dev: should provide a QT_HOST_PATH directory for cross building
has caused the Debian Bug report #1010049,
regarding qt6-base-dev: should provide a QT_HOST_PATH directory for cross building
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
1010049: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1010049
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: qt6-base-dev
Version: 6.2.4+dfsg-4
X-Debbugs-Cc: debian-cross@lists.debian.org
User: debian-cross@lists.debian.org
Usertags: ftcbfs
Control: affects -1 + src:qt6-base src:qt6-charts src:qt6-declarative src:qt6-quick3d

qt6-charts (for example) fails to cross build from source. You can see a
failure at
https://crossqa.debian.net/build/qt6-charts_6.2.4-2_mipsel_20220423044846.log.
The crucial bit is:

| CMake Error at /usr/lib/mipsel-linux-gnu/cmake/Qt6/QtSetup.cmake:224 (message):
|   You need to set QT_HOST_PATH to cross compile Qt.

I think this makes it relatively obvious what needs to happen to fix it:
We should provide QT_HOST_PATH. This is where the problems begin.
According to https://doc.qt.io/qt-6/cmake-variable-qt-host-path.html,
QT_HOST_PATH should point to the qt6 installation and include e.g. moc.
Debian's qt6 moc is installed as /usr/lib/qt6/libexec/moc by
qt6-base-dev-tools. It's good that this has been split into a
Multi-Arch: foreign package already. However, that path is
architecture-independent and thus likely not suitable for QT_HOST_PATH.
I expect that QT_HOST_PATH also needs to point to architecture-dependent
files (e.g. libraries). Qt5 has faced as similar problem and thus added
symlink farms to qtbase5-dev in /usr/lib/<triplet>/qt5/bin pointing to
the moc from qtbase5-dev-tools. I think we need a similar symlink farm
for Qt6, but I don't know what Qt6 expects from a QT_HOST_PATH.

So this raises multiple questions:
 * What should QT_HOST_PATH be?
   + /usr/lib/<triplet>/qt6
   + /usr/lib/<triplet>
   + Something else?
 * How do we have to structure the contents of QT_HOST_PATH?
   + Where precisely do tools like moc and rcc have to be located?
   + What other files are required to be located?

I request assistance from the Qt6 maintainers in figuring this out and
providing answers to the questions above. I hope that we can
constructively work this out together in a similar way that Lisandro and
Dmitry made cross building work for Qt5. At that time, none of the
involved parties knew how it would work, but combining the knowledge
resulted in a solution. Thank you for considering. I've written down
what I know.

Helmut

--- End Message ---
--- Begin Message ---
On Tue, Sep 06, 2022 at 11:47:32PM +0200, Fab Stz wrote:
> Actually the correct values seem to be:
> 
> -DQT_HOST_PATH=/usr
> -DQT_HOST_PATH_CMAKE_DIR=/usr/lib/${DEB_HOST_MULTIARCH}/cmake
> 
> With these, it works for me when cross building Qt 6.4beta4 with 6.3.1 shipped by Debian (provided you also set   -DQT_NO_PACKAGE_VERSION_CHECK=TRUE when using different Qt versions)

Thank you very much for figuring these out. I confirm that these values
work for e.g. src:qt6-5compat.

The original request was that qt6 should provide a path for
QT_HOST_PATH. You explained that it already does. As such, this bug is
addressed without source changes and I am therefore closing it.

Helmut

--- End Message ---

Reply to: