This mail is about the OpenBSD ports of - x11/qt5/qtgraphicaleffects - x11/qt5/qtquickcontrols - x11/qt5/qtquickcontrols2
These ports work on amd64 and i386, but are broken on aarch64, powerpc, and probably other platforms. Each port has .qmlc files in its PLIST. Each port runs qmlcachegen (from x11/qt5/qtdeclarative) to build .qmlc files from .qml files, but this tool writes machine code (like x86 or x86-64 code) and gets disabled in other platforms. Each port fails in the package phase if the .qmlc files don't exist. >From the (arm64) aarch64 bulk of 3 Feb 2019: > http://build-failures.rhaalovely.net/aarch64/2019-01-31/x11/qt5/qtgraphicaleffects.log > http://build-failures.rhaalovely.net/aarch64/2019-01-31/x11/qt5/qtquickcontrols,-examples.log > http://build-failures.rhaalovely.net/aarch64/2019-01-31/x11/qt5/qtquickcontrols2.log >From the (macppc) powerpc bulk of 4 Feb 2019: > http://build-failures.rhaalovely.net//powerpc/2019-01-12/x11/qt5/qtgraphicaleffects.log > http://build-failures.rhaalovely.net//powerpc/2019-01-12/x11/qt5/qtquickcontrols.log > http://build-failures.rhaalovely.net//powerpc/2019-01-12/x11/qt5/qtquickcontrols2.log I found some logic in qt5/qtdeclarative in WRKSRC/src/qml/jsruntime/qv4global_p.h that defines V4_ENABLE_JIT on some platforms. I suspect that qmlcachegen uses the JIT to write .qmlc files, but I am less than sure. The JIT is enabled if: - we are x86 or x86-64 and an OS in a list including OpenBSD. - we are arm 32-bit, and something about Thumb is true, but I don't know whether it is true in OpenBSD. - we are arm 64-bit, but only for Linux or QNX, not for OpenBSD. - we are mips 32-bit and Linux. >From this, I guess that qmlcachegen on OpenBSD can write .qmlc files only for i386 or amd64. When a qmake project does `CONFIG += qmlcache`, it checks if qmlcachegen can target this platform. If not, qmake outputs a line, > Project MESSAGE: QML cache generation requested but target > architecture ***** is not supported. where ***** is a name like "arm64" or "power". You can see this line in dpb's .log files. If you have installed qtdeclarative, and you know your own QT_ARCH (see /usr/local/lib/qt5/mkspecs/qconfig.pri), then you can run $ /usr/local/lib/qt5/bin/qmlcachegen --target-architecture ***** \ > --check-if-supported; echo $? In my amd64 vm, where QT_ARCH = x86_64, it echoes 0 so .qmlc is supported. In my macppc machine, where QT_ARCH = power, it echoes 1 so .qmlc is not supported. You can only check your own arch, because qmlcachegen might not cross to other arches. The fix might be to move .qmlc files from PLIST to PFRAG.qmlc, but I have not yet tried to do so. -- George Koehler <kern...@gmail.com>