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

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: