Opened 7 years ago

Closed 6 years ago

#13031 closed Bug Report - General (Won't Fix)

Fails to compile on Arch Arm

Reported by: eliteforce82nd@… Owned by: Stuart Auchterlonie
Priority: major Milestone: 0.28.2
Component: MythTV - General Version: 0.28.1
Severity: medium Keywords: Archlinux Arch Arm
Cc: Ticket locked: no

Description

Unable to compile on Raspberry pi 3 using Arch Arm and git fixes/0.28 (latest commit at the time e26a33c) Seems to be in 0.28 release and 0.28.1 as well, most likely to be an enviroment setup issue, but I have no idea what package or library it needs, perhaps a configure phase issue?

make[2]: Leaving directory '/home/alarm/mythtv/mythtv/libs/libmythmpeg2'
cd libmythui/ && ( test -e Makefile || /usr/bin/qmake-qt5 -o Makefile /home/alarm/mythtv/mythtv/libs/libmythui/libmythui.pro QMAKE=/usr/bin/qmake-qt5 ) && make -f Makefile 
make[2]: Entering directory '/home/alarm/mythtv/mythtv/libs/libmythui'
g++ -c -pipe -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -DPIC -march=armv7-a -DNDEBUG -fomit-frame-pointer -fPIC -DQT_DISABLE_DEPRECATED_BEFORE=0x050000 -pthread -g -Wall -Wpointer-arith -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -fvisibility-inlines-hidden -Wmissing-declarations -Wno-switch -Woverloaded-virtual -funit-at-a-time -fvisibility=hidden -std=gnu++11 -D_REENTRANT -fPIC -Dusing_libcec -D_GNU_SOURCE -DUSING_X11 -DUSING_DBUS -DUSE_JOYSTICK_MENU -DUSE_LIRC -DUSING_LIBCEC -DUSING_XRANDR -DUSING_QTWEBKIT -DMUI_API -DQT_OPENGL_LIB -DQT_WEBKITWIDGETS_LIB -DQT_WIDGETS_LIB -DQT_WEBKIT_LIB -DQT_GUI_LIB -DQT_XML_LIB -DQT_SQL_LIB -DQT_NETWORK_LIB -DQT_DBUS_LIB -DQT_CORE_LIB -I. -isystem /usr/include/libxml2 -isystem /usr/include/X11 -I../libmythbase -I../.. -I.. -I../../external/FFmpeg -isystem /usr/include/qt -isystem /usr/include/qt/QtOpenGL -isystem /usr/include/qt/QtWebKitWidgets -isystem /usr/include/qt/QtWidgets -isystem /usr/include/qt/QtWebKit -isystem /usr/include/qt/QtGui -isystem /usr/include/qt/QtXml -isystem /usr/include/qt/QtSql -isystem /usr/include/qt/QtNetwork -isystem /usr/include/qt/QtDBus -isystem /usr/include/qt/QtCore -I. -I/usr/lib/qt/mkspecs/linux-g++ -o mythrender_opengl1.o mythrender_opengl1.cpp
mythrender_opengl1.cpp: In member function 'virtual void MythRenderOpenGL1::Init2DState()':
mythrender_opengl1.cpp:33:18: error: 'GL_FLAT' was not declared in this scope
     glShadeModel(GL_FLAT);
                  ^~~~~~~
mythrender_opengl1.cpp:33:25: error: 'glShadeModel' was not declared in this scope
     glShadeModel(GL_FLAT);
                         ^
mythrender_opengl1.cpp:34:15: error: 'GL_POLYGON_SMOOTH' was not declared in this scope
     glDisable(GL_POLYGON_SMOOTH);
               ^~~~~~~~~~~~~~~~~
mythrender_opengl1.cpp:35:15: error: 'GL_LINE_SMOOTH' was not declared in this scope
     glDisable(GL_LINE_SMOOTH);
               ^~~~~~~~~~~~~~
mythrender_opengl1.cpp:36:15: error: 'GL_POINT_SMOOTH' was not declared in this scope
     glDisable(GL_POINT_SMOOTH);
               ^~~~~~~~~~~~~~~
mythrender_opengl1.cpp:37:37: error: 'glColor4f' was not declared in this scope
     glColor4f(0.0f, 0.0f, 0.0f, 0.0f);
                                     ^
mythrender_opengl1.cpp: In member function 'virtual void MythRenderOpenGL1::SetColor(int, int, int, int)':
mythrender_opengl1.cpp:112:57: error: 'glColor4f' was not declared in this scope
     glColor4f(r / 255.0, g / 255.0, b / 255.0, a / 255.0);
                                                         ^
mythrender_opengl1.cpp: In member function 'virtual uint MythRenderOpenGL1::CreateHelperTexture()':
mythrender_opengl1.cpp:250:34: error: 'GL_RGBA16' was not declared in this scope
                                  GL_RGBA16, GL_NEAREST, GL_REPEAT);
                                  ^~~~~~~~~
mythrender_opengl1.cpp: In member function 'virtual void MythRenderOpenGL1::SetMatrixView()':
mythrender_opengl1.cpp:291:18: error: 'GL_PROJECTION' was not declared in this scope
     glMatrixMode(GL_PROJECTION);
                  ^~~~~~~~~~~~~
mythrender_opengl1.cpp:291:31: error: 'glMatrixMode' was not declared in this scope
     glMatrixMode(GL_PROJECTION);
                               ^
mythrender_opengl1.cpp:292:20: error: 'glLoadIdentity' was not declared in this scope
     glLoadIdentity();
                    ^
mythrender_opengl1.cpp:294:76: error: 'glOrtho' was not declared in this scope
             m_viewport.top() + m_viewport.height(), m_viewport.top(), 1, -1);
                                                                            ^
mythrender_opengl1.cpp:295:18: error: 'GL_MODELVIEW' was not declared in this scope
     glMatrixMode(GL_MODELVIEW);
                  ^~~~~~~~~~~~
mythrender_opengl1.cpp: In member function 'virtual void MythRenderOpenGL1::PushTransformation(const UIEffects&, QPointF&)':
mythrender_opengl1.cpp:302:18: error: 'glPushMatrix' was not declared in this scope
     glPushMatrix();
                  ^
mythrender_opengl1.cpp:303:45: error: 'glTranslatef' was not declared in this scope
     glTranslatef(center.x(), center.y(), 0.0);
                                             ^
mythrender_opengl1.cpp:304:37: error: 'glScalef' was not declared in this scope
     glScalef(fx.hzoom, fx.vzoom, 1.0);
                                     ^
mythrender_opengl1.cpp:305:32: error: 'glRotatef' was not declared in this scope
     glRotatef(fx.angle, 0, 0, 1);
                                ^
mythrender_opengl1.cpp: In member function 'virtual void MythRenderOpenGL1::PopTransformation()':
mythrender_opengl1.cpp:313:17: error: 'glPopMatrix' was not declared in this scope
     glPopMatrix();
                 ^
mythrender_opengl1.cpp: In member function 'virtual void MythRenderOpenGL1::DrawBitmapPriv(uint, const QRect*, const QRect*, uint, int, int, int, int)':
mythrender_opengl1.cpp:337:25: error: 'GL_VERTEX_ARRAY' was not declared in this scope
     glEnableClientState(GL_VERTEX_ARRAY);
                         ^~~~~~~~~~~~~~~
mythrender_opengl1.cpp:337:40: error: 'glEnableClientState' was not declared in this scope
     glEnableClientState(GL_VERTEX_ARRAY);
                                        ^
mythrender_opengl1.cpp:338:25: error: 'GL_TEXTURE_COORD_ARRAY' was not declared in this scope
     glEnableClientState(GL_TEXTURE_COORD_ARRAY);
                         ^~~~~~~~~~~~~~~~~~~~~~
mythrender_opengl1.cpp:342:66: error: 'glVertexPointer' was not declared in this scope
     glVertexPointer(2, GL_FLOAT, 0, m_textures[tex].m_vertex_data);
                                                                  ^
mythrender_opengl1.cpp:343:81: error: 'glTexCoordPointer' was not declared in this scope
     glTexCoordPointer(2, GL_FLOAT, 0, m_textures[tex].m_vertex_data + TEX_OFFSET);
                                                                                 ^
mythrender_opengl1.cpp:345:48: error: 'glDisableClientState' was not declared in this scope
     glDisableClientState(GL_TEXTURE_COORD_ARRAY);
                                                ^
mythrender_opengl1.cpp: In member function 'virtual void MythRenderOpenGL1::DrawBitmapPriv(uint*, uint, const QRectF*, const QRectF*, uint)':
mythrender_opengl1.cpp:362:25: error: 'GL_VERTEX_ARRAY' was not declared in this scope
     glEnableClientState(GL_VERTEX_ARRAY);
                         ^~~~~~~~~~~~~~~
mythrender_opengl1.cpp:362:40: error: 'glEnableClientState' was not declared in this scope
     glEnableClientState(GL_VERTEX_ARRAY);
                                        ^
mythrender_opengl1.cpp:363:25: error: 'GL_TEXTURE_COORD_ARRAY' was not declared in this scope
     glEnableClientState(GL_TEXTURE_COORD_ARRAY);
                         ^~~~~~~~~~~~~~~~~~~~~~
mythrender_opengl1.cpp:376:68: error: 'glVertexPointer' was not declared in this scope
     glVertexPointer(2, GL_FLOAT, 0, m_textures[first].m_vertex_data);
                                                                    ^
mythrender_opengl1.cpp:377:83: error: 'glTexCoordPointer' was not declared in this scope
     glTexCoordPointer(2, GL_FLOAT, 0, m_textures[first].m_vertex_data + TEX_OFFSET);
                                                                                   ^
mythrender_opengl1.cpp:381:48: error: 'glDisableClientState' was not declared in this scope
     glDisableClientState(GL_TEXTURE_COORD_ARRAY);
                                                ^
mythrender_opengl1.cpp: In member function 'virtual void MythRenderOpenGL1::DrawRectPriv(const QRect&, const QBrush&, const QPen&, int)':
mythrender_opengl1.cpp:391:25: error: 'GL_VERTEX_ARRAY' was not declared in this scope
     glEnableClientState(GL_VERTEX_ARRAY);
                         ^~~~~~~~~~~~~~~
mythrender_opengl1.cpp:391:40: error: 'glEnableClientState' was not declared in this scope
     glEnableClientState(GL_VERTEX_ARRAY);
                                        ^
mythrender_opengl1.cpp:404:49: error: 'glVertexPointer' was not declared in this scope
         glVertexPointer(2, GL_FLOAT, 0, vertices);
                                                 ^
mythrender_opengl1.cpp:417:49: error: 'glVertexPointer' was not declared in this scope
         glVertexPointer(2, GL_FLOAT, 0, vertices);
                                                 ^
mythrender_opengl1.cpp:421:41: error: 'glDisableClientState' was not declared in this scope
     glDisableClientState(GL_VERTEX_ARRAY);
                                         ^
make[2]: *** [Makefile:3023: mythrender_opengl1.o] Error 1
make[2]: Leaving directory '/home/alarm/mythtv/mythtv/libs/libmythui'
make[1]: *** [Makefile:204: sub-libmythui-make_first] Error 2
make[1]: Leaving directory '/home/alarm/mythtv/mythtv/libs'
make: *** [Makefile:67: libs] Error 2

Change History (16)

comment:1 Changed 7 years ago by Peter Bennett

Owner: set to Peter Bennett
Status: newassigned

comment:2 Changed 7 years ago by Peter Bennett

It looks like you have an incorrect gl.h

You can install the dependencies by using ansible

https://github.com/MythTV/ansible

for more instructions on building see here

https://www.mythtv.org/wiki/Build_from_Source

It includes details for Raspberry Pi.

comment:3 Changed 7 years ago by Peter Bennett

Resolution: Invalid
Status: assignedclosed

comment:4 Changed 7 years ago by jplum@…

I would beg to differ. This is the PKGBUILD, and build log from the distribution: https://github.com/archlinuxarm/PKGBUILDs/blob/master/community/mythtv/PKGBUILD https://archlinuxarm.org/builder/in-log/mythtv-0.28.1-6-armv7.log.html.gz

We have mesa 17.1.1, which includes: /usr/include/GL/gl.h /usr/include/GLES/gl.h

The log I have attached is for ARMv7 which is CPU armv7-a, and we have OpenGL/ES enabled (by not explicitly disabling it).

I see this as well, but I have checked inside the build chroot as the package was running to confirm that the various files are indeed in place. If you could give specific feedback as to how the files are inappropriate in some manner, we'll work to resolve that.

comment:5 Changed 7 years ago by Peter Bennett

Resolution: Invalid
Status: closednew

I will reopen the ticket and I can work with you to find what is going wrong. It may be a couple of weeks before I can get to it.

comment:6 Changed 7 years ago by Peter Bennett

Status: newassigned

comment:7 Changed 7 years ago by eliteforce82nd@…

Sorry I haven't been able to contribute much to this ticket or offer an update. I've been having performance problems with arch arm on my PI's. Display manager is choppy and laggy, slow input performance. Also desktop environments suffer the same like Xfce, Mate, LXDE. Plasma and LXQT is the only ones that has somewhat decent performance.

I think this may be related to mesa and X11 since QT based DE and display managers work decently.

Right now I can't get mythfrontend to work on arch arm or xubuntu, so stuck with raspbian for my frontends.

Hindsight, I should have never updated.

comment:8 Changed 7 years ago by Stuart Auchterlonie

Good news is i've build an rpi3 version of this and can reproduce the error.

It's odd though, because the correct headers are in place from the mesa package which define the missing declarations.

comment:9 Changed 7 years ago by Stuart Auchterlonie <stuarta@…>

In 05ad15bab9c11b7f102efc42a435406d7d0157c9/mythtv:

Refs #13031 - Reorganise the OpenGL includes a bit to fix build issues on arch on rpi

comment:10 Changed 7 years ago by Stuart Auchterlonie <stuarta@…>

comment:11 Changed 7 years ago by Stuart Auchterlonie <stuarta@…>

In 6a683aff7834054238413e83b0cf3f832f91cacb/mythtv:

Refs #13031 - Reorganise the OpenGL includes a bit to fix build issues on arch on rpi

(cherry picked from commit 05ad15bab9c11b7f102efc42a435406d7d0157c9)

comment:12 Changed 7 years ago by Stuart Auchterlonie <stuarta@…>

comment:13 Changed 7 years ago by Stuart Auchterlonie

Resolution: Fixed
Status: assignedclosed

Patches merged to fixes/0.28, so this is now resolved.

comment:14 Changed 7 years ago by Stuart Auchterlonie

Milestone: unknown0.28.2
Owner: changed from Peter Bennett to Stuart Auchterlonie

comment:15 Changed 7 years ago by eliteforce82nd@…

Resolution: Fixed
Status: closednew

Still can't compile mythtv on archarm.

Seems to multiple headers being included creating conflict.

make[2]: Leaving directory '/home/alarm/mythtv/mythtv/libs/libmythmpeg2'
cd libmythui/ && ( test -e Makefile || /usr/bin/qmake-qt5 -o Makefile /home/alarm/mythtv/mythtv/libs/libmythui/libmythui.pro QMAKE=/usr/bin/qmake-qt5 ) && make -f Makefile 
make[2]: Entering directory '/home/alarm/mythtv/mythtv/libs/libmythui'
g++ -c -pipe -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -DPIC -march=armv7-a -DNDEBUG -fomit-frame-pointer -fPIC -DQT_DISABLE_DEPRECATED_BEFORE=0x050000 -pthread -g -Wall -Wpointer-arith -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -fvisibility-inlines-hidden -Wmissing-declarations -Wno-switch -Woverloaded-virtual -funit-at-a-time -fvisibility=hidden -std=gnu++11 -D_REENTRANT -fPIC -D_GNU_SOURCE -DUSING_VDPAU -DUSING_X11 -DUSING_DBUS -DUSE_JOYSTICK_MENU -DUSE_LIRC -DUSING_XRANDR -DUSE_OPENGL_PAINTER -DUSING_QTWEBKIT -DMUI_API -DQT_OPENGL_LIB -DQT_WEBKITWIDGETS_LIB -DQT_WIDGETS_LIB -DQT_WEBKIT_LIB -DQT_GUI_LIB -DQT_XML_LIB -DQT_SQL_LIB -DQT_NETWORK_LIB -DQT_DBUS_LIB -DQT_CORE_LIB -I. -isystem /usr/include/libxml2 -isystem /usr/include/X11 -I../libmythbase -I../.. -I.. -I../../external/FFmpeg -isystem /usr/include/qt -isystem /usr/include/qt/QtOpenGL -isystem /usr/include/qt/QtWebKitWidgets -isystem /usr/include/qt/QtWidgets -isystem /usr/include/qt/QtWebKit -isystem /usr/include/qt/QtGui -isystem /usr/include/qt/QtXml -isystem /usr/include/qt/QtSql -isystem /usr/include/qt/QtNetwork -isystem /usr/include/qt/QtDBus -isystem /usr/include/qt/QtCore -I. -I/usr/lib/qt/mkspecs/linux-g++ -o mythrender_opengl.o mythrender_opengl.cpp
In file included from /usr/include/GL/gl.h:2055:0,
                 from mythrender_opengl1.h:7,
                 from mythrender_opengl.cpp:24:
/usr/include/GL/glext.h:468:19: error: conflicting declaration 'typedef ptrdiff_t GLsizeiptr'
 typedef ptrdiff_t GLsizeiptr;
                   ^~~~~~~~~~
In file included from /usr/include/qt/QtGui/qopengl.h:107:0,
                 from /usr/include/qt/QtOpenGL/qgl.h:45,
                 from /usr/include/qt/QtOpenGL/QGLContext:1,
                 from mythrender_opengl.h:11,
                 from mythrender_opengl.cpp:1:
/usr/include/GLES3/gl3.h:73:25: note: previous declaration as 'typedef khronos_ssize_t GLsizeiptr'
 typedef khronos_ssize_t GLsizeiptr;
                         ^~~~~~~~~~
In file included from /usr/include/GL/gl.h:2055:0,
                 from mythrender_opengl1.h:7,
                 from mythrender_opengl.cpp:24:
/usr/include/GL/glext.h:469:19: error: conflicting declaration 'typedef ptrdiff_t GLintptr'
 typedef ptrdiff_t GLintptr;
                   ^~~~~~~~
In file included from /usr/include/qt/QtGui/qopengl.h:107:0,
                 from /usr/include/qt/QtOpenGL/qgl.h:45,
                 from /usr/include/qt/QtOpenGL/QGLContext:1,
                 from mythrender_opengl.h:11,
                 from mythrender_opengl.cpp:1:
/usr/include/GLES3/gl3.h:74:26: note: previous declaration as 'typedef khronos_intptr_t GLintptr'
 typedef khronos_intptr_t GLintptr;
                          ^~~~~~~~
make[2]: *** [Makefile:2823: mythrender_opengl.o] Error 1
make[2]: Leaving directory '/home/alarm/mythtv/mythtv/libs/libmythui'
make[1]: *** [Makefile:206: sub-libmythui-make_first] Error 2
make[1]: Leaving directory '/home/alarm/mythtv/mythtv/libs'
make: *** [Makefile:67: libs] Error 2

comment:16 Changed 6 years ago by Stuart Auchterlonie

Resolution: Won't Fix
Status: newclosed

Closing any remaining tickets for 0.28, if the issue persists, feel free to reopen and align to v29 or master

Note: See TracTickets for help on using tickets.