Master no longer compiling on Raspberry Pi

Bug #1863440 reported by Evan
14
This bug affects 3 people
Affects Status Importance Assigned to Milestone
Mixxx
High
Daniel Schürmann

Bug Description

The master does not compile on a Raspberry Pi anymore due to this commit:

https://github.com/mixxxdj/mixxx/commit/b7ce2776303716956926e2722e8861a7021c94d2

Specifically, QOpenGLFunctions_2_1 does not exist in QT on Raspbian because QT_OPENGL_ES_2 is defined.

Revision history for this message
Daniel Schürmann (daschuer) wrote :
Download full text (7.2 KiB)

This is the failing output:

```
src/waveform/renderers/glvsynctestrenderer.h:11:40: error: expected class-name before ‘{’ token
         protected QOpenGLFunctions_2_1 {
                                        ^
In file included from src/waveform/renderers/glslwaveformrenderersignal.cpp:3:
src/waveform/renderers/glslwaveformrenderersignal.h:15:40: error: expected class-name before ‘{’ token
         protected QOpenGLFunctions_2_1 {
                                        ^
src/waveform/renderers/glvsynctestrenderer.cpp: In constructor ‘GLVSyncTestRenderer::GLVSyncTestRenderer(WaveformWidgetRenderer*)’:
src/waveform/renderers/glvsynctestrenderer.cpp:12:5: error: ‘initializeOpenGLFunctions’ was not declared in this scope
     initializeOpenGLFunctions();
     ^~~~~~~~~~~~~~~~~~~~~~~~~
src/waveform/renderers/glvsynctestrenderer.cpp: In member function ‘virtual void GLVSyncTestRenderer::draw(QPainter*, QPaintEvent*)’:
src/waveform/renderers/glvsynctestrenderer.cpp:71:14: error: ‘GL_BLEND’ was not declared in this scope
     glEnable(GL_BLEND);
              ^~~~~~~~
src/waveform/renderers/glvsynctestrenderer.cpp:71:5: error: ‘glEnable’ was not declared in this scope
     glEnable(GL_BLEND);
     ^~~~~~~~
src/waveform/renderers/glslwaveformrenderersignal.cpp: In constructor ‘GLSLWaveformRendererSignal::GLSLWaveformRendererSignal(WaveformWidgetRenderer*, bool)’:
src/waveform/renderers/glslwaveformrenderersignal.cpp:18:5: error: ‘initializeOpenGLFunctions’ was not declared in this scope
     initializeOpenGLFunctions();
     ^~~~~~~~~~~~~~~~~~~~~~~~~
src/waveform/renderers/glvsynctestrenderer.cpp:71:5: note: suggested alternative: ‘Paintable’
     glEnable(GL_BLEND);
     ^~~~~~~~
     Paintable
src/waveform/renderers/glvsynctestrenderer.cpp:72:17: error: ‘GL_SRC_ALPHA’ was not declared in this scope
     glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
                 ^~~~~~~~~~~~
src/waveform/renderers/glvsynctestrenderer.cpp:72:31: error: ‘GL_ONE_MINUS_SRC_ALPHA’ was not declared in this scope
     glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
                               ^~~~~~~~~~~~~~~~~~~~~~
src/waveform/renderers/glslwaveformrenderersignal.cpp:18:5: note: suggested alternative: ‘QAbstractOpenGLFunctions’
     initializeOpenGLFunctions();
     ^~~~~~~~~~~~~~~~~~~~~~~~~
     QAbstractOpenGLFunctions
src/waveform/renderers/glvsynctestrenderer.cpp:72:5: error: ‘glBlendFunc’ was not declared in this scope
     glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
     ^~~~~~~~~~~
src/waveform/renderers/glvsynctestrenderer.cpp:76:18: error: ‘GL_PROJECTION’ was not declared in this scope
     glMatrixMode(GL_PROJECTION);
                  ^~~~~~~~~~~~~
src/waveform/renderers/glvsynctestrenderer.cpp:76:5: error: ‘glMatrixMode’ was not declared in this scope
     glMatrixMode(GL_PROJECTION);
     ^~~~~~~~~~~~
src/waveform/renderers/glslwaveformrenderersignal.cpp: In member function ‘void GLSLWaveformRendererSignal::createGeometry()’:
src/waveform/renderers/glslwaveformrenderersignal.cpp:142:18: error: ‘GL_PROJECTION’ was not declared in this scope
     glMatrixMode(GL_PROJECTION);
                  ^~~~~~~~~~~~~
src/waveform/renderers/glvsync...

Read more...

Changed in mixxx:
status: New → In Progress
importance: Undecided → High
assignee: nobody → Daniel Schürmann (daschuer)
milestone: none → 2.3.0
Revision history for this message
Daniel Schürmann (daschuer) wrote :
Revision history for this message
Railgun (railgun-michael) wrote :
Download full text (53.1 KiB)

i have download and test now to compile your branch mixxx-lp1863440
using "scons -j 2 opengles=1 staticlibs=1 optimize=legacy"

this is the result:

src/waveform/renderers/glslwaveformrenderersignal.cpp:13:1: error: ‘GLSLWaveformRendererSignal’ does not name a type; did you mean ‘WaveformRendererAbstract’?
 GLSLWaveformRendererSignal::GLSLWaveformRendererSignal(WaveformWidgetRenderer* waveformWidgetRenderer,
 ^~~~~~~~~~~~~~~~~~~~~~~~~~
 WaveformRendererAbstract
src/waveform/renderers/glslwaveformrenderersignal.cpp:25:1: error: ‘GLSLWaveformRendererSignal’ does not name a type; did you mean ‘WaveformRendererAbstract’?
 GLSLWaveformRendererSignal::~GLSLWaveformRendererSignal() {
 ^~~~~~~~~~~~~~~~~~~~~~~~~~
 WaveformRendererAbstract
src/waveform/renderers/glslwaveformrenderersignal.cpp:35:6: error: ‘GLSLWaveformRendererSignal’ has not been declared
 void GLSLWaveformRendererSignal::debugClick() {
      ^~~~~~~~~~~~~~~~~~~~~~~~~~
src/waveform/renderers/glslwaveformrenderersignal.cpp: In function ‘void debugClick()’:
src/waveform/renderers/glslwaveformrenderersignal.cpp:36:5: error: ‘loadShaders’ was not declared in this scope
     loadShaders();
     ^~~~~~~~~~~
src/waveform/renderers/glslwaveformrenderersignal.cpp:36:5: note: suggested alternative: ‘glIsShader’
     loadShaders();
     ^~~~~~~~~~~
     glIsShader
src/waveform/renderers/glslwaveformrenderersignal.cpp:37:5: error: ‘m_bDumpPng’ was not declared in this scope
     m_bDumpPng = true;
     ^~~~~~~~~~
src/waveform/renderers/glslwaveformrenderersignal.cpp: At global scope:
src/waveform/renderers/glslwaveformrenderersignal.cpp:40:6: error: ‘GLSLWaveformRendererSignal’ has not been declared
 bool GLSLWaveformRendererSignal::loadShaders() {
      ^~~~~~~~~~~~~~~~~~~~~~~~~~
src/waveform/renderers/glslwaveformrenderersignal.cpp: In function ‘bool loadShaders()’:
src/waveform/renderers/glslwaveformrenderersignal.cpp:42:5: error: ‘m_shadersValid’ was not declared in this scope
     m_shadersValid = false;
     ^~~~~~~~~~~~~~
src/waveform/renderers/glslwaveformrenderersignal.cpp:44:9: error: ‘m_frameShaderProgram’ was not declared in this scope
     if (m_frameShaderProgram->isLinked()) {
         ^~~~~~~~~~~~~~~~~~~~
src/waveform/renderers/glslwaveformrenderersignal.cpp:44:9: note: suggested alternative: ‘glCreateShaderProgramv’
     if (m_frameShaderProgram->isLinked()) {
         ^~~~~~~~~~~~~~~~~~~~
         glCreateShaderProgramv
src/waveform/renderers/glslwaveformrenderersignal.cpp:48:5: error: ‘m_frameShaderProgram’ was not declared in this scope
     m_frameShaderProgram->removeAllShaders();
     ^~~~~~~~~~~~~~~~~~~~
src/waveform/renderers/glslwaveformrenderersignal.cpp:48:5: note: suggested alternative: ‘glCreateShaderProgramv’
     m_frameShaderProgram->removeAllShaders();
     ^~~~~~~~~~~~~~~~~~~~
     glCreateShaderProgramv
src/waveform/renderers/glslwaveformrenderersignal.cpp:51:13: error: ‘QGLShader’ has not been declared
             QGLShader::Vertex, ":shaders/passthrough.vert")) {
             ^~~~~~~~~
src/waveform/renderers/glslwaveformrenderersignal.cpp:56:30: error: ‘m_rgbShader’ was not declared in this scope
     QString fragmentShader = m_rgbShader ?
                  ...

Revision history for this message
Daniel Schürmann (daschuer) wrote :

This almost the same posted here:
https://github.com/mixxxdj/mixxx/pull/2504#issuecomment-586807826
Unfortunately it is hard to debug it from remote. Do you have an idea why the
glswaveformrenderesignal.cpp is not skipped but it's *.h file is?

Which Qt version do you use?

Uwe Klotz (uklotzde)
Changed in mixxx:
status: In Progress → Fix Committed
Changed in mixxx:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers