Bug#1025823: qt6-base FTBFS on Alpha; Unknown Q_PROCESSOR_xxx macro
On Sat, Jan 28, 2023 at 01:55:00PM -0300, Lisandro Damian Nicanor Perez Meyer wrote:
> On viernes, 9 de diciembre de 2022 22:19:16 -03 Michael Cree wrote:
> > Source: qt6-base
> > Version: 6.3.1+dfsg-10
> > Severity: important
> > Tags: patch ftbfs
> > Justification: fails to build from source (but built successfully in the
> > past)
> >
> > The build fails with:
> > /<<PKGBUILDDIR>>/src/corelib/plugin/qelfparser_p.cpp:178:4: error: #error
> > "Unknown Q_PROCESSOR_xxx macro, please update."
> >
> > Full log at:
> > https://buildd.debian.org/status/fetch.php?pkg=qt6-base&arch=alpha&ver=6.3.1
> > %2Bdfsg-10&stamp=1664652510&raw=0
> >
> > Attached is patch to provide the Q_PROCESSOR defines for Alpha. With
> > that qt6-base builds successfully.
>
> This really sounds like a patch that should go upstream. Normally such patchs
> would need to be sent by the creator. Would you mind doing that? Please ping
> me if you need help here.
There is already a patch upstream at:
https://codereview.qt-project.org/c/qt/qtbase/+/437349
I have taken that and refreshed against Debian 6.4.2+dfsg-1 and
attach here.
With that qt6-base 6.4.2+dfsg-1 builds to completion on Alpha.
Regards,
Michael.
Index: qt6-base-6.4.2+dfsg~rc1/src/corelib/global/qprocessordetection.h
===================================================================
--- qt6-base-6.4.2+dfsg~rc1.orig/src/corelib/global/qprocessordetection.h 2023-01-31 21:33:53.000000000 +1300
+++ qt6-base-6.4.2+dfsg~rc1/src/corelib/global/qprocessordetection.h 2023-01-31 21:34:47.220042095 +1300
@@ -48,8 +48,8 @@
Alpha is bi-endian, use endianness auto-detection implemented below.
*/
-// #elif defined(__alpha__) || defined(_M_ALPHA)
-// # define Q_PROCESSOR_ALPHA
+#if defined(__alpha__) || defined(_M_ALPHA)
+# define Q_PROCESSOR_ALPHA
// Q_BYTE_ORDER not defined, use endianness auto-detection
/*
@@ -58,7 +58,7 @@
ARM is bi-endian, detect using __ARMEL__ or __ARMEB__, falling back to
auto-detection implemented below.
*/
-#if defined(__arm__) || defined(__TARGET_ARCH_ARM) || defined(_M_ARM) || defined(_M_ARM64) || defined(__aarch64__) || defined(__ARM64__)
+#elif defined(__arm__) || defined(__TARGET_ARCH_ARM) || defined(_M_ARM) || defined(_M_ARM64) || defined(__aarch64__) || defined(__ARM64__)
# if defined(__aarch64__) || defined(__ARM64__) || defined(_M_ARM64)
# define Q_PROCESSOR_ARM_64
# define Q_PROCESSOR_WORDSIZE 8
Index: qt6-base-6.4.2+dfsg~rc1/src/corelib/plugin/qelfparser_p.cpp
===================================================================
--- qt6-base-6.4.2+dfsg~rc1.orig/src/corelib/plugin/qelfparser_p.cpp 2023-01-31 21:33:53.000000000 +1300
+++ qt6-base-6.4.2+dfsg~rc1/src/corelib/plugin/qelfparser_p.cpp 2023-01-31 21:34:47.221018875 +1300
@@ -112,6 +112,8 @@
static const Elf32_Half ExpectedMachine =
#if 0
// nothing
+#elif defined(Q_PROCESSOR_ALPHA)
+ EM_ALPHA
#elif defined(Q_PROCESSOR_ARM_32)
EM_ARM
#elif defined(Q_PROCESSOR_ARM_64)
@@ -380,6 +382,7 @@
switch (r.machine) {
// list definitely not exhaustive!
case EM_NONE: d << ", no machine"; break;
+ case EM_ALPHA: d << ", Alpha"; break;
case EM_68K: d << ", MC68000"; break;
case EM_ARM: d << ", ARM"; break;
case EM_AARCH64: d << ", AArch64"; break;
Reply to: