Hello *,
I'm the maintainer of the qmapshack package in Gentoo. I wanted to update
it to 1.15.0, but found that it does not compile with the current Qt,
which is 5.15. I suppose that older versions of qmapshack also don't
compile, and now all versions of qmapshack in Gentoo (1.14.0, 1.14.1) are
broken.
Qt-5.15 has rearranged its include files, thus breaking a lot of Qt-based
software. For example, qwt (https://sourceforge.net/p/qwt/bugs/314/),
rpcs3 (https://github.com/RPCS3/rpcs3/pull/7832), nextcloud-client
(https://bugs.gentoo.org/727474) and many others. In
https://sourceforge.net/p/qwt/bugs/314/ I read:
There are many places where '#include qpainterpath.h' is missing. The
problem has been introduced with Qt 5.15-Beta2 and was not there with
Beta1. As this probably breaks application code in many, many projects I
filed a bug report: https://bugreports.qt.io/browse/QTBUG-83159
Nevertheless I have added the missing includes where needed in all
branches >= 6.2. I did not decide about what to do with 6.1 - waiting for
the decisision being made downstream for 5.15 final.
The Qt bug https://bugreports.qt.io/browse/QTBUG-83159 has been closed as
Won't Do.
In qmapshack-1.15, I get
/var/tmp/portage/sci-geosciences/qmapshack-1.15.0/work/qmapshack-V_1.14.0/src/qmapshack/helpers/CDraw.cpp:210:18:
error: aggregate ‘QPainterPath bubblePath’ has incomplete type and cannot
be defined
210 | QPainterPath bubblePath;
| ^~~~~~~~~~
/var/tmp/portage/sci-geosciences/qmapshack-1.15.0/work/qmapshack-V_1.14.0/src/qmapshack/helpers/CDraw.cpp:240:22:
error: aggregate ‘QPainterPath pointerPath’ has incomplete type and cannot
be defined
240 | QPainterPath pointerPath;
| ^~~~~~~~~~~
Some extra #include's are now needed. According to
https://doc.qt.io/qt-5/qpainterpath.html, for using the QPainterPath class
#include <QPainterPath>
is needed. I inserted it into CDraw.cpp after other #include's, but this
has not fixed the problem.
As an example, I attach the Gentoo patch for qwt-6.1.4. Something similar
(probably, shorter) is needed for qmapshack. But, as I said, my first
attempt has failed. And I have no idea know what else to #include.
C++ and Qt experts out here, could you please help? Currently we have no
working qmapshack in Gentoo.
I tried to search other distros. Debian (even unstable) has some ancient
Qt. Even Fedora has no Qt-5.15. Arch has Qt-5.15, but its qmapshack
package is older than Qt; they will face the same problem soon.
Hope to your help,
Andrey
From a5bdaa3b3a34b8a018fe67dfdd34bf8c890de2fa Mon Sep 17 00:00:00 2001
From: Andreas Sturmlechner <ast...@gentoo.org>
Date: Fri, 22 May 2020 17:56:55 +0200
Subject: [PATCH] Fix build with Qt 5.15 (missing headers)
Signed-off-by: Andreas Sturmlechner <ast...@gentoo.org>
---
examples/dials/attitude_indicator.cpp | 1 +
examples/itemeditor/editor.cpp | 2 ++
examples/sinusplot/sinusplot.cpp | 1 +
playground/graphicscale/mainwindow.h | 1 +
playground/symbols/symbols.cpp | 1 +
src/qwt_compass_rose.cpp | 1 +
src/qwt_dial_needle.cpp | 1 +
src/qwt_graphic.h | 1 +
src/qwt_null_paintdevice.cpp | 1 +
src/qwt_null_paintdevice.h | 1 +
src/qwt_painter.cpp | 1 +
src/qwt_painter.h | 2 ++
src/qwt_painter_command.h | 2 ++
src/qwt_plot_canvas.cpp | 1 +
src/qwt_plot_canvas.h | 1 +
src/qwt_plot_glcanvas.cpp | 1 +
src/qwt_plot_glcanvas.h | 2 ++
src/qwt_plot_panner.cpp | 2 ++
src/qwt_plot_renderer.cpp | 1 +
src/qwt_plot_shapeitem.cpp | 3 +++
src/qwt_symbol.h | 2 ++
src/qwt_widget_overlay.cpp | 1 +
22 files changed, 30 insertions(+)
diff --git a/examples/dials/attitude_indicator.cpp
b/examples/dials/attitude_indicator.cpp
index ea0d5ab..a01611e 100644
--- a/examples/dials/attitude_indicator.cpp
+++ b/examples/dials/attitude_indicator.cpp
@@ -3,6 +3,7 @@
#include <qwt_round_scale_draw.h>
#include <qevent.h>
#include <qpainter.h>
+#include <qpainterpath.h>
#include <qpolygon.h>
AttitudeIndicatorNeedle::AttitudeIndicatorNeedle( const QColor &color )
diff --git a/examples/itemeditor/editor.cpp b/examples/itemeditor/editor.cpp
index bd06372..c741b01 100644
--- a/examples/itemeditor/editor.cpp
+++ b/examples/itemeditor/editor.cpp
@@ -4,6 +4,8 @@
#include <qwt_scale_map.h>
#include <qwt_plot_shapeitem.h>
#include <qevent.h>
+#include <qpainter.h>
+#include <qpainterpath.h>
class Overlay: public QwtWidgetOverlay
{
diff --git a/examples/sinusplot/sinusplot.cpp b/examples/sinusplot/sinusplot.cpp
index 119fa4a..6a9bfe7 100644
--- a/examples/sinusplot/sinusplot.cpp
+++ b/examples/sinusplot/sinusplot.cpp
@@ -1,5 +1,6 @@
#include <qapplication.h>
#include <qlayout.h>
+#include <qpainterpath.h>
#include <qwt_plot.h>
#include <qwt_plot_marker.h>
#include <qwt_plot_curve.h>
diff --git a/playground/graphicscale/mainwindow.h
b/playground/graphicscale/mainwindow.h
index d284413..3b544de 100644
--- a/playground/graphicscale/mainwindow.h
+++ b/playground/graphicscale/mainwindow.h
@@ -2,6 +2,7 @@
#define MAIN_WINDOW_H
#include <qmainwindow.h>
+#include <qpainterpath.h>
class Canvas;
class QPainterPath;
diff --git a/playground/symbols/symbols.cpp b/playground/symbols/symbols.cpp
index f7b2ed6..5b9f56d 100644
--- a/playground/symbols/symbols.cpp
+++ b/playground/symbols/symbols.cpp
@@ -1,5 +1,6 @@
#include <qapplication.h>
#include <qpainter.h>
+#include <qpainterpath.h>
#include <qbuffer.h>
#ifdef QT_SVG_LIB
#include <qsvggenerator.h>
diff --git a/src/qwt_compass_rose.cpp b/src/qwt_compass_rose.cpp
index 05f7039..fbd30fe 100644
--- a/src/qwt_compass_rose.cpp
+++ b/src/qwt_compass_rose.cpp
@@ -11,6 +11,7 @@
#include "qwt_point_polar.h"
#include "qwt_painter.h"
#include <qpainter.h>
+#include <qpainterpath.h>
static QPointF qwtIntersection(
QPointF p11, QPointF p12, QPointF p21, QPointF p22 )
diff --git a/src/qwt_dial_needle.cpp b/src/qwt_dial_needle.cpp
index 49dd44a..d98f68c 100644
--- a/src/qwt_dial_needle.cpp
+++ b/src/qwt_dial_needle.cpp
@@ -13,6 +13,7 @@
#include "qwt_painter.h"
#include <qapplication.h>
#include <qpainter.h>
+#include <qpainterpath.h>
#if QT_VERSION < 0x040601
#define qFastSin(x) qSin(x)
diff --git a/src/qwt_graphic.h b/src/qwt_graphic.h
index cbd41f9..6881ea9 100644
--- a/src/qwt_graphic.h
+++ b/src/qwt_graphic.h
@@ -14,6 +14,7 @@
#include "qwt_null_paintdevice.h"
#include <qmetatype.h>
#include <qimage.h>
+#include <qpainterpath.h>
#include <qpixmap.h>
class QwtPainterCommand;
diff --git a/src/qwt_null_paintdevice.cpp b/src/qwt_null_paintdevice.cpp
index 3baf0e9..468a838 100644
--- a/src/qwt_null_paintdevice.cpp
+++ b/src/qwt_null_paintdevice.cpp
@@ -9,6 +9,7 @@
#include "qwt_null_paintdevice.h"
#include <qpaintengine.h>
+#include <qpainterpath.h>
#include <qpixmap.h>
class QwtNullPaintDevice::PrivateData
diff --git a/src/qwt_null_paintdevice.h b/src/qwt_null_paintdevice.h
index e4e9cad..b804429 100644
--- a/src/qwt_null_paintdevice.h
+++ b/src/qwt_null_paintdevice.h
@@ -13,6 +13,7 @@
#include "qwt_global.h"
#include <qpaintdevice.h>
#include <qpaintengine.h>
+#include <qpainterpath.h>
/*!
\brief A null paint device doing nothing
diff --git a/src/qwt_painter.cpp b/src/qwt_painter.cpp
index 7959fe5..626677f 100644
--- a/src/qwt_painter.cpp
+++ b/src/qwt_painter.cpp
@@ -17,6 +17,7 @@
#include <qframe.h>
#include <qrect.h>
#include <qpainter.h>
+#include <qpainterpath.h>
#include <qpalette.h>
#include <qpaintdevice.h>
#include <qpixmap.h>
diff --git a/src/qwt_painter.h b/src/qwt_painter.h
index c0a0ff7..bcbe289 100644
--- a/src/qwt_painter.h
+++ b/src/qwt_painter.h
@@ -16,6 +16,8 @@
#include <qrect.h>
#include <qpen.h>
#include <qline.h>
+#include <qpainter.h>
+#include <qpainterpath.h>
#include <qpalette.h>
class QPainter;
diff --git a/src/qwt_painter_command.h b/src/qwt_painter_command.h
index a2f509a..a49ee52 100644
--- a/src/qwt_painter_command.h
+++ b/src/qwt_painter_command.h
@@ -12,6 +12,8 @@
#include "qwt_global.h"
#include <qpaintengine.h>
+#include <qpainter.h>
+#include <qpainterpath.h>
#include <qpixmap.h>
#include <qimage.h>
#include <qpolygon.h>
diff --git a/src/qwt_plot_canvas.cpp b/src/qwt_plot_canvas.cpp
index 9438f15..bfe660d 100644
--- a/src/qwt_plot_canvas.cpp
+++ b/src/qwt_plot_canvas.cpp
@@ -13,6 +13,7 @@
#include "qwt_math.h"
#include "qwt_plot.h"
#include <qpainter.h>
+#include <qpainterpath.h>
#include <qstyle.h>
#include <qstyleoption.h>
#include <qpaintengine.h>
diff --git a/src/qwt_plot_canvas.h b/src/qwt_plot_canvas.h
index c79e4e4..90a32ce 100644
--- a/src/qwt_plot_canvas.h
+++ b/src/qwt_plot_canvas.h
@@ -12,6 +12,7 @@
#include "qwt_global.h"
#include <qframe.h>
+#include <qpainter.h>
#include <qpainterpath.h>
class QwtPlot;
diff --git a/src/qwt_plot_glcanvas.cpp b/src/qwt_plot_glcanvas.cpp
index 996c0ad..6975863 100644
--- a/src/qwt_plot_glcanvas.cpp
+++ b/src/qwt_plot_glcanvas.cpp
@@ -12,6 +12,7 @@
#include "qwt_painter.h"
#include <qevent.h>
#include <qpainter.h>
+#include <qpainterpath.h>
#include <qdrawutil.h>
#include <qstyle.h>
#include <qstyleoption.h>
diff --git a/src/qwt_plot_glcanvas.h b/src/qwt_plot_glcanvas.h
index 7ca9b5a..a6c01e0 100644
--- a/src/qwt_plot_glcanvas.h
+++ b/src/qwt_plot_glcanvas.h
@@ -13,6 +13,8 @@
#include "qwt_global.h"
#include <qframe.h>
#include <qgl.h>
+#include <qpainter.h>
+#include <qpainterpath.h>
class QwtPlot;
diff --git a/src/qwt_plot_panner.cpp b/src/qwt_plot_panner.cpp
index b7daa05..2f31d05 100644
--- a/src/qwt_plot_panner.cpp
+++ b/src/qwt_plot_panner.cpp
@@ -14,6 +14,8 @@
#include <qbitmap.h>
#include <qstyle.h>
#include <qstyleoption.h>
+#include <qpainter.h>
+#include <qpainterpath.h>
#if QT_VERSION >= 0x050000
#if QT_VERSION < 0x050100
diff --git a/src/qwt_plot_renderer.cpp b/src/qwt_plot_renderer.cpp
index 549c4bc..71cadec 100644
--- a/src/qwt_plot_renderer.cpp
+++ b/src/qwt_plot_renderer.cpp
@@ -20,6 +20,7 @@
#include "qwt_math.h"
#include <qpainter.h>
+#include <qpainterpath.h>
#include <qtransform.h>
#include <qprinter.h>
#include <qfiledialog.h>
diff --git a/src/qwt_plot_shapeitem.cpp b/src/qwt_plot_shapeitem.cpp
index db7896b..09efd95 100644
--- a/src/qwt_plot_shapeitem.cpp
+++ b/src/qwt_plot_shapeitem.cpp
@@ -13,6 +13,9 @@
#include "qwt_curve_fitter.h"
#include "qwt_clipper.h"
+#include <qpainter.h>
+#include <qpainterpath.h>
+
static QPainterPath qwtTransformPath( const QwtScaleMap &xMap,
const QwtScaleMap &yMap, const QPainterPath &path, bool doAlign )
{
diff --git a/src/qwt_symbol.h b/src/qwt_symbol.h
index 538778d..2961ebe 100644
--- a/src/qwt_symbol.h
+++ b/src/qwt_symbol.h
@@ -11,6 +11,8 @@
#define QWT_SYMBOL_H
#include "qwt_global.h"
+#include <qpainter.h>
+#include <qpainterpath.h>
#include <qpolygon.h>
class QPainter;
diff --git a/src/qwt_widget_overlay.cpp b/src/qwt_widget_overlay.cpp
index 5974413..fa6da48 100644
--- a/src/qwt_widget_overlay.cpp
+++ b/src/qwt_widget_overlay.cpp
@@ -10,6 +10,7 @@
#include "qwt_widget_overlay.h"
#include "qwt_painter.h"
#include <qpainter.h>
+#include <qpainterpath.h>
#include <qpaintengine.h>
#include <qimage.h>
#include <qevent.h>
--
2.26.2
_______________________________________________
Qlandkartegt-users mailing list
Qlandkartegt-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/qlandkartegt-users