summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--gnu-system.am1
-rw-r--r--gnu/packages/patches/qt5-conflicting-typedefs.patch70
-rw-r--r--gnu/packages/qt.scm3
3 files changed, 73 insertions, 1 deletions
diff --git a/gnu-system.am b/gnu-system.am
index b2f5bbe833..2692394519 100644
--- a/gnu-system.am
+++ b/gnu-system.am
@@ -529,6 +529,7 @@ dist_patch_DATA =						\
   gnu/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch \
   gnu/packages/patches/qt4-ldflags.patch			\
   gnu/packages/patches/qt4-tests.patch				\
+  gnu/packages/patches/qt5-conflicting-typedefs.patch		\
   gnu/packages/patches/qt5-runpath.patch			\
   gnu/packages/patches/ratpoison-shell.patch			\
   gnu/packages/patches/readline-link-ncurses.patch		\
diff --git a/gnu/packages/patches/qt5-conflicting-typedefs.patch b/gnu/packages/patches/qt5-conflicting-typedefs.patch
new file mode 100644
index 0000000000..751452c2db
--- /dev/null
+++ b/gnu/packages/patches/qt5-conflicting-typedefs.patch
@@ -0,0 +1,70 @@
+See <https://bugreports.qt.io/browse/QTBUG-45205>.
+
+diff --git a/qtwebengine/src/core/chromium_gpu_helper.cpp b/qtwebengine/src/core/chromium_gpu_helper.cpp
+index c7c97e6..ef574ec 100644
+--- a/qtwebengine/src/core/chromium_gpu_helper.cpp
++++ b/qtwebengine/src/core/chromium_gpu_helper.cpp
+@@ -40,13 +40,15 @@
+ 
+ #include "chromium_gpu_helper.h"
+ 
+-#include "content/common/gpu/gpu_channel_manager.h"
+-#include "content/common/gpu/sync_point_manager.h"
+-#include "content/gpu/gpu_child_thread.h"
++// Including gpu/command_buffer headers before content/gpu headers makes sure that
++// guards are defined to prevent duplicate definition errors with forward declared
++// GL typedefs cascading through content header includes.
+ #include "gpu/command_buffer/service/mailbox_manager.h"
+ #include "gpu/command_buffer/service/texture_manager.h"
+ 
+-#include <QtGlobal> // We need this for the Q_OS_QNX define.
++#include "content/common/gpu/gpu_channel_manager.h"
++#include "content/common/gpu/sync_point_manager.h"
++#include "content/gpu/gpu_child_thread.h"
+ 
+ #ifdef Q_OS_QNX
+ #include "content/common/gpu/stream_texture_qnx.h"
+diff --git a/qtwebengine/src/core/gl_surface_qt.cpp b/qtwebengine/src/core/gl_surface_qt.cpp
+index 4fe2f21..5a27aa9 100644
+--- a/qtwebengine/src/core/gl_surface_qt.cpp
++++ b/qtwebengine/src/core/gl_surface_qt.cpp
+@@ -49,8 +49,6 @@
+ #include "base/logging.h"
+ #include "base/memory/scoped_ptr.h"
+ #include "content/common/gpu/image_transport_surface.h"
+-#include "content/common/gpu/gpu_channel_manager.h"
+-#include "content/common/gpu/gpu_command_buffer_stub.h"
+ #include "ui/gl/egl_util.h"
+ #include "ui/gl/gl_context.h"
+ #include "ui/gl/gl_implementation.h"
+@@ -544,7 +542,9 @@ GLSurface::CreateViewGLSurface(gfx::AcceleratedWidget window)
+ }  // namespace gfx
+ 
+ namespace content {
+-scoped_refptr<gfx::GLSurface> ImageTransportSurface::CreateNativeSurface(GpuChannelManager* manager, GpuCommandBufferStub* stub, const gfx::GLSurfaceHandle& handle)
++class GpuCommandBufferStub;
++class GpuChannelManager;
++scoped_refptr<gfx::GLSurface> ImageTransportSurface::CreateNativeSurface(GpuChannelManager*, GpuCommandBufferStub*, const gfx::GLSurfaceHandle&)
+ {
+     QT_NOT_USED
+     return scoped_refptr<gfx::GLSurface>();
+diff --git a/qtwebengine/src/3rdparty/chromium/gpu/command_buffer/common/gles2_cmd_format.h b/qtwebengine/src/3rdparty/chromium/gpu/command_buffer/common/gles2_cmd_format.h
+index 04a3dc3..506cf00 100644
+--- a/qtwebengine/src/3rdparty/chromium/gpu/command_buffer/common/gles2_cmd_format.h
++++ b/qtwebengine/src/3rdparty/chromium/gpu/command_buffer/common/gles2_cmd_format.h
+@@ -20,6 +20,7 @@
+ #include "gpu/command_buffer/common/cmd_buffer_common.h"
+ #include "gpu/command_buffer/common/gles2_cmd_ids.h"
+ 
++#ifndef GL_VERSION_1_5
+ // GL types are forward declared to avoid including the GL headers. The problem
+ // is determining which GL headers to include from code that is common to the
+ // client and service sides (GLES2 or one of several GL implementations).
+@@ -47,6 +48,7 @@ typedef signed long long int GLsizeiptr;
+ typedef khronos_intptr_t GLintptr;
+ typedef khronos_ssize_t  GLsizeiptr;
+ #endif
++#endif
+ 
+ namespace gpu {
+ namespace gles2 {
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index 8de1ffe398..3bc3145e8d 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -104,7 +104,8 @@ X11 (yet).")
              (sha256
               (base32
                "0q6qzakq8xihw91xv310qi3vyylq7x2bzdkjgy8sqxii2lgbjzhv"))
-             (patches (list (search-patch "qt5-runpath.patch")))
+             (patches (list (search-patch "qt5-conflicting-typedefs.patch")
+                            (search-patch "qt5-runpath.patch")))
              (snippet
               '(begin
                  ;; Remove broken symlinks.