Opened 3 years ago

Last modified 11 months ago

#12661 new Bug Report - General

mythtv fails to build against anything that's not x86/amd64/armhf

Reported by: superm1@… Owned by:
Priority: minor Milestone: 29.2
Component: MythTV - General Version: Master Head
Severity: medium Keywords:
Cc: Ticket locked: no

Description

configure has a hard time finding qt5. Ubuntu guys had dug into what was going on in configure. Snippet of conversation:

12:36:46 <xnox> cjwatson, superm1 - ok found it. Mythtv plugins are funky and did tricks behind our back with iterating:
12:36:47 <xnox> if [ x"$qmake" = "xqmake" ]; then
12:36:47 <xnox>     CHECK_QMAKE="qmake-qt5 /usr/lib64/qt5/bin/qmake /usr/lib/x86_64-linux-gnu/qt5/bin/qmake /usr/lib/i386-linux-gnu/qt5/bin/qmake /usr/lib/arm-linux-gnueabihf/qt5/bin/qmake /usr/local/lib/qt5/bin/qmake $\
12:36:47 <xnox> qmake qmake-qt4"
12:36:54 <xnox> in case of "qmake" default qmake specified.
12:37:10 <xnox> and thus it "worked" on x86_64, i386, armhf only =)
12:37:21 <xnox> exporting QT_SELECT=5 would have been a better trick.
12:37:34 <xnox> or like querying the triplet from gcc.
12:38:02 <xnox> Mirv, our qt is fine, it's mythtv which is funny.

So the ask would be to explicitly export:

QT_SELECT=5

when running the build for configure to properly find qt5 without looking around all the various paths for every architecture known to man.

We can of course override this at packaging level too, but this should really work properly in the configure script.

Change History (9)

comment:1 Changed 3 years ago by stuartm

The QT_SELECT environmental variable seems to be specific to Ubuntu or Debian based systems because qmake is actually a link to qtchooser in those distributions.

Since it's distribution specific it cannot entirely replace the current check.

comment:2 Changed 3 years ago by superm1@…

Considering that I think this might be a more elegant way of solving the problem:

diff --git a/mythtv/configure b/mythtv/configure
index c539b29..1768bfb 100755
--- a/mythtv/configure
+++ b/mythtv/configure
@@ -5678,10 +5678,11 @@ is_qmake5(){
 }
 
 # qmake-qt5 /usr/lib64/qt5/bin/qmake /usr/lib/x86_64-linux-gnu/qt5/bin/qmake
+TRIPLET=`gcc -print-multiarch`
 if [ x"$qmake" = "xqmake" ]; then
-    CHECK_QMAKE="qmake-qt5 /usr/lib64/qt5/bin/qmake /usr/lib/x86_64-linux-gnu/qt5/bin/qmake /usr/lib/i386-linux-gnu/qt5/bin/qmake /usr/lib/arm-linux-gnueabihf/qt5/bin/qmake /usr/local/lib/qt5/bin/qmake
+    CHECK_QMAKE="qmake-qt5 /usr/lib64/qt5/bin/qmake /usr/lib/$TRIPLET/qt5/bin/qmake /usr/local/lib/qt5/bin/qmake $qmake"
 else
-    CHECK_QMAKE="$qmake qmake-qt5 /usr/lib64/qt5/bin/qmake /usr/lib/x86_64-linux-gnu/qt5/bin/qmake /usr/lib/i386-linux-gnu/qt5/bin/qmake /usr/lib/arm-linux-gnueabihf/qt5/bin/qmake /usr/local/lib/qt5/bi
+    CHECK_QMAKE="$qmake qmake-qt5 /usr/lib64/qt5/bin/qmake /usr/lib/$TRIPLET/qt5/bin/qmake  /usr/local/lib/qt5/bin/qmake"
 fi
 # try to find a qt5 qmake to use
 found_qmake=''

comment:3 in reply to:  2 Changed 3 years ago by Gary Buhrmaster <gary.buhrmaster@…>

Replying to superm1@…:

Considering that I think this might be a more elegant way of solving the problem:

(I have not really worked this through, but) What happens if you do not have gcc installed but are using clang or some other compiler (icc)? You likely need to validate that you are using gcc before following down the gcc path. Of course, I do not like the various hard coded paths either. Rock, meet rock.

comment:4 Changed 3 years ago by superm1@…

I know clang supports outputting something similar. So I guess the first question is going to be: What compilers are supported for MythTV build today? Not theoretical some day it might work, stuff that people use day to day and should keep on working in this setup?

We can probably come up with a way to query triplets on the various ones and identify which one is in use.

comment:5 Changed 3 years ago by Stuart Auchterlonie

Milestone: unknown0.29
Version: UnspecifiedMaster Head

I think to start with, querying the compiler architecture is the best way to go. I knew when I added the search via explicit paths it was a bit of a hack.

Anything else non standard should just explicitly set qmake, and configure will use that.

comment:6 Changed 3 years ago by Stuart Auchterlonie

Milestone: 0.2929.0

Milestone renamed

comment:7 Changed 13 months ago by Stuart Auchterlonie

Milestone: 29.029.1

comment:8 Changed 11 months ago by Stuart Auchterlonie

Milestone: 29.10.28.2

Moving remaining open tickets to 0.28.2 milestone

comment:9 Changed 11 months ago by Stuart Auchterlonie

Milestone: 0.28.229.2

Moving remaining open tickets to 29.2 milestone

Note: See TracTickets for help on using tickets.