[Git][debian-gis-team/qgis][master] Add patches by Dmitry Shachnev to fix sip5 support.
Bas Couwenberg
gitlab at salsa.debian.org
Mon Sep 21 15:37:47 BST 2020
Bas Couwenberg pushed to branch master at Debian GIS Project / qgis
Commits:
89973f43 by Bas Couwenberg at 2020-09-21T16:37:23+02:00
Add patches by Dmitry Shachnev to fix sip5 support.
- - - - -
4 changed files:
- debian/changelog
- + debian/patches/pr37842.patch
- + debian/patches/pr37901.patch
- debian/patches/series
Changes:
=====================================
debian/changelog
=====================================
@@ -1,3 +1,9 @@
+qgis (3.10.10+dfsg-2) UNRELEASED; urgency=medium
+
+ * Add patches by Dmitry Shachnev to fix sip5 support.
+
+ -- Bas Couwenberg <sebastic at debian.org> Mon, 21 Sep 2020 16:33:45 +0200
+
qgis (3.10.10+dfsg-1) unstable; urgency=medium
* Update symbols for other architectures.
=====================================
debian/patches/pr37842.patch
=====================================
@@ -0,0 +1,343 @@
+Description: Get rid of SIP deprecated functions
+Author: Dmitry Shachnev <mitya57 at gmail.com>
+Origin: https://github.com/qgis/QGIS/pull/37842
+Bug: https://github.com/qgis/QGIS/issues/37542
+Bug-Debian: https://bugs.debian.org/964132
+
+--- a/python/core/auto_generated/geometry/qgsgeometry.sip.in
++++ b/python/core/auto_generated/geometry/qgsgeometry.sip.in
+@@ -1502,7 +1502,7 @@ is null, a ValueError will be raised.
+ }
+ else
+ {
+- const sipMappedType *qvector_type = sipFindMappedType( "QVector<QgsPointXY>" );
++ const sipTypeDef *qvector_type = sipFindType( "QVector<QgsPointXY>" );
+ sipRes = sipConvertFromNewType( new QVector< QgsPointXY >( sipCpp->randomPointsInPolygon( a0, a1 ) ), qvector_type, Py_None );
+ }
+ %End
+@@ -1616,7 +1616,7 @@ will be raised.
+ }
+ else
+ {
+- const sipMappedType *qvector_type = sipFindMappedType( "QVector< QgsPointXY >" );
++ const sipTypeDef *qvector_type = sipFindType( "QVector< QgsPointXY >" );
+ sipRes = sipConvertFromNewType( new QgsPolylineXY( sipCpp->asPolyline() ), qvector_type, Py_None );
+ }
+ %End
+@@ -1647,7 +1647,7 @@ will be raised.
+ }
+ else
+ {
+- const sipMappedType *qvector_type = sipFindMappedType( "QVector<QVector<QgsPointXY>>" );
++ const sipTypeDef *qvector_type = sipFindType( "QVector<QVector<QgsPointXY>>" );
+ sipRes = sipConvertFromNewType( new QgsPolygonXY( sipCpp->asPolygon() ), qvector_type, Py_None );
+ }
+ %End
+@@ -1677,7 +1677,7 @@ will be raised.
+ }
+ else
+ {
+- const sipMappedType *qvector_type = sipFindMappedType( "QVector< QgsPointXY >" );
++ const sipTypeDef *qvector_type = sipFindType( "QVector< QgsPointXY >" );
+ sipRes = sipConvertFromNewType( new QgsPolylineXY( sipCpp->asMultiPoint() ), qvector_type, Py_None );
+ }
+ %End
+@@ -1708,7 +1708,7 @@ will be raised.
+ }
+ else
+ {
+- const sipMappedType *qvector_type = sipFindMappedType( "QVector<QVector<QgsPointXY>>" );
++ const sipTypeDef *qvector_type = sipFindType( "QVector<QVector<QgsPointXY>>" );
+ sipRes = sipConvertFromNewType( new QgsMultiPolylineXY( sipCpp->asMultiPolyline() ), qvector_type, Py_None );
+ }
+ %End
+@@ -1739,7 +1739,7 @@ will be raised.
+ }
+ else
+ {
+- const sipMappedType *qvector_type = sipFindMappedType( "QVector<QVector<QVector<QgsPointXY>>>" );
++ const sipTypeDef *qvector_type = sipFindType( "QVector<QVector<QVector<QgsPointXY>>>" );
+ sipRes = sipConvertFromNewType( new QgsMultiPolygonXY( sipCpp->asMultiPolygon() ), qvector_type, Py_None );
+ }
+ %End
+--- a/python/core/conversions.sip
++++ b/python/core/conversions.sip
+@@ -41,7 +41,7 @@ template <TYPE>
+ if ((l = PyList_New(sipCpp->size())) == NULL)
+ return NULL;
+
+- const sipMappedType *qvector_type = sipFindMappedType("QVector<TYPE>");
++ const sipTypeDef *qvector_type = sipFindType("QVector<TYPE>");
+
+ // Set the list elements.
+ for (int i = 0; i < sipCpp->size(); ++i)
+@@ -62,7 +62,7 @@ template <TYPE>
+ %End
+
+ %ConvertToTypeCode
+- const sipMappedType *qvector_type = sipFindMappedType("QVector<TYPE>");
++ const sipTypeDef *qvector_type = sipFindType("QVector<TYPE>");
+
+ // Check the type if that is all that is required.
+ if (sipIsErr == NULL)
+@@ -71,7 +71,7 @@ template <TYPE>
+ return 0;
+
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+- if (!sipCanConvertToMappedType(PyList_GET_ITEM(sipPy, i), qvector_type, SIP_NOT_NONE))
++ if (!sipCanConvertToType(PyList_GET_ITEM(sipPy, i), qvector_type, SIP_NOT_NONE))
+ return 0;
+
+ return 1;
+@@ -84,16 +84,16 @@ template <TYPE>
+ {
+ int state;
+ //TYPE *t = reinterpret_cast<TYPE *>(sipConvertToType(PyList_GET_ITEM(sipPy, i), sipType_TYPE, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr));
+- QVector<TYPE> *t = reinterpret_cast< QVector<TYPE> * >(sipConvertToMappedType(PyList_GET_ITEM(sipPy, i), qvector_type, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr));
++ QVector<TYPE> *t = reinterpret_cast< QVector<TYPE> * >(sipConvertToType(PyList_GET_ITEM(sipPy, i), qvector_type, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr));
+
+ if (*sipIsErr)
+ {
+- sipReleaseMappedType(t, qvector_type, state);
++ sipReleaseType(t, qvector_type, state);
+ delete ql;
+ return 0;
+ }
+ ql->append(*t);
+- sipReleaseMappedType(t, qvector_type, state);
++ sipReleaseType(t, qvector_type, state);
+ }
+
+ *sipCppPtr = ql;
+@@ -118,7 +118,7 @@ template <TYPE>
+ if ((l = PyList_New(sipCpp->size())) == NULL)
+ return NULL;
+
+- const sipMappedType *qvector_type = sipFindMappedType("QVector<QVector<TYPE> >");
++ const sipTypeDef *qvector_type = sipFindType("QVector<QVector<TYPE> >");
+
+ // Set the list elements.
+ for (int i = 0; i < sipCpp->size(); ++i)
+@@ -139,7 +139,7 @@ template <TYPE>
+
+ %ConvertToTypeCode
+
+- const sipMappedType *qvector_type = sipFindMappedType("QVector<QVector<TYPE> >");
++ const sipTypeDef *qvector_type = sipFindType("QVector<QVector<TYPE> >");
+
+ // Check the type if that is all that is required.
+ if (sipIsErr == NULL)
+@@ -148,7 +148,7 @@ template <TYPE>
+ return 0;
+
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+- if (!sipCanConvertToMappedType(PyList_GET_ITEM(sipPy, i), qvector_type, SIP_NOT_NONE))
++ if (!sipCanConvertToType(PyList_GET_ITEM(sipPy, i), qvector_type, SIP_NOT_NONE))
+ return 0;
+
+ return 1;
+@@ -161,16 +161,16 @@ template <TYPE>
+ {
+ int state;
+ //TYPE *t = reinterpret_cast<TYPE *>(sipConvertToType(PyList_GET_ITEM(sipPy, i), sipType_TYPE, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr));
+- QVector<QVector<TYPE> > *t = reinterpret_cast< QVector< QVector<TYPE> > * >(sipConvertToMappedType(PyList_GET_ITEM(sipPy, i), qvector_type, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr));
++ QVector<QVector<TYPE> > *t = reinterpret_cast< QVector< QVector<TYPE> > * >(sipConvertToType(PyList_GET_ITEM(sipPy, i), qvector_type, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr));
+
+ if (*sipIsErr)
+ {
+- sipReleaseMappedType(t, qvector_type, state);
++ sipReleaseType(t, qvector_type, state);
+ delete ql;
+ return 0;
+ }
+ ql->append(*t);
+- sipReleaseMappedType(t, qvector_type, state);
++ sipReleaseType(t, qvector_type, state);
+ }
+
+ *sipCppPtr = ql;
+@@ -194,7 +194,7 @@ template <TYPE>
+ if ((l = PyList_New(sipCpp->size())) == NULL)
+ return NULL;
+
+- const sipMappedType *qlist_type = sipFindMappedType("QList<TYPE>");
++ const sipTypeDef *qlist_type = sipFindType("QList<TYPE>");
+
+ // Set the list elements.
+ for (int i = 0; i < sipCpp->size(); ++i)
+@@ -215,7 +215,7 @@ template <TYPE>
+ %End
+
+ %ConvertToTypeCode
+- const sipMappedType *qlist_type = sipFindMappedType("QList<TYPE>");
++ const sipTypeDef *qlist_type = sipFindType("QList<TYPE>");
+
+ // Check the type if that is all that is required.
+ if (sipIsErr == NULL)
+@@ -224,7 +224,7 @@ template <TYPE>
+ return 0;
+
+ for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
+- if (!sipCanConvertToMappedType(PyList_GET_ITEM(sipPy, i), qlist_type, SIP_NOT_NONE))
++ if (!sipCanConvertToType(PyList_GET_ITEM(sipPy, i), qlist_type, SIP_NOT_NONE))
+ return 0;
+
+ return 1;
+@@ -237,16 +237,16 @@ template <TYPE>
+ {
+ int state;
+ //TYPE *t = reinterpret_cast<TYPE *>(sipConvertToType(PyList_GET_ITEM(sipPy, i), sipType_TYPE, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr));
+- QList<TYPE> *t = reinterpret_cast< QList<TYPE> * >(sipConvertToMappedType(PyList_GET_ITEM(sipPy, i), qlist_type, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr));
++ QList<TYPE> *t = reinterpret_cast< QList<TYPE> * >(sipConvertToType(PyList_GET_ITEM(sipPy, i), qlist_type, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr));
+
+ if (*sipIsErr)
+ {
+- sipReleaseMappedType(t, qlist_type, state);
++ sipReleaseType(t, qlist_type, state);
+ delete ql;
+ return 0;
+ }
+ ql->append(*t);
+- sipReleaseMappedType(t, qlist_type, state);
++ sipReleaseType(t, qlist_type, state);
+ }
+
+ *sipCppPtr = ql;
+@@ -462,7 +462,7 @@ template<TYPE>
+ if ((d = PyDict_New()) == NULL)
+ return NULL;
+
+- const sipMappedType *qmap2 = sipFindMappedType("QMap<int, TYPE>");
++ const sipTypeDef *qmap2 = sipFindType("QMap<int, TYPE>");
+
+ // Set the list elements.
+ for (QMap<qint64, QMap<int, TYPE> >::iterator it = sipCpp->begin(); it != sipCpp->end(); ++it)
+@@ -531,7 +531,7 @@ template<TYPE>
+ {
+ qint64 k = PyLong_AsLongLong(kobj);
+
+- // using sipConvertToMappedType to convert directly to QMap<int, TYPE> doesn't work
++ // using sipConvertToType to convert directly to QMap<int, TYPE> doesn't work
+ // and ends with a segfault
+
+ QMap<int, TYPE> qm2;
+@@ -1025,7 +1025,7 @@ template<TYPE2>
+ Py_ssize_t i = 0;
+
+
+- const sipMappedType *qlist_type = sipFindMappedType("QList<TYPE2>");
++ const sipTypeDef *qlist_type = sipFindType("QList<TYPE2>");
+
+
+ // Check the type if that is all that is required.
+@@ -1051,7 +1051,7 @@ template<TYPE2>
+
+ QString *t1 = reinterpret_cast<QString *>(sipConvertToType(t1obj, sipType_QString, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr));
+
+- QList<TYPE2> *t2 = reinterpret_cast< QList<TYPE2> * >(sipConvertToMappedType(t2obj, qlist_type, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr));
++ QList<TYPE2> *t2 = reinterpret_cast< QList<TYPE2> * >(sipConvertToType(t2obj, qlist_type, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr));
+ if (*sipIsErr)
+ {
+ sipReleaseType(t2, sipType_TYPE2, state);
+--- a/src/core/geometry/qgsgeometry.h
++++ b/src/core/geometry/qgsgeometry.h
+@@ -1521,7 +1521,7 @@ class CORE_EXPORT QgsGeometry
+ }
+ else
+ {
+- const sipMappedType *qvector_type = sipFindMappedType( "QVector<QgsPointXY>" );
++ const sipTypeDef *qvector_type = sipFindType( "QVector<QgsPointXY>" );
+ sipRes = sipConvertFromNewType( new QVector< QgsPointXY >( sipCpp->randomPointsInPolygon( a0, a1 ) ), qvector_type, Py_None );
+ }
+ % End
+@@ -1662,7 +1662,7 @@ class CORE_EXPORT QgsGeometry
+ }
+ else
+ {
+- const sipMappedType *qvector_type = sipFindMappedType( "QVector< QgsPointXY >" );
++ const sipTypeDef *qvector_type = sipFindType( "QVector< QgsPointXY >" );
+ sipRes = sipConvertFromNewType( new QgsPolylineXY( sipCpp->asPolyline() ), qvector_type, Py_None );
+ }
+ % End
+@@ -1706,7 +1706,7 @@ class CORE_EXPORT QgsGeometry
+ }
+ else
+ {
+- const sipMappedType *qvector_type = sipFindMappedType( "QVector<QVector<QgsPointXY>>" );
++ const sipTypeDef *qvector_type = sipFindType( "QVector<QVector<QgsPointXY>>" );
+ sipRes = sipConvertFromNewType( new QgsPolygonXY( sipCpp->asPolygon() ), qvector_type, Py_None );
+ }
+ % End
+@@ -1748,7 +1748,7 @@ class CORE_EXPORT QgsGeometry
+ }
+ else
+ {
+- const sipMappedType *qvector_type = sipFindMappedType( "QVector< QgsPointXY >" );
++ const sipTypeDef *qvector_type = sipFindType( "QVector< QgsPointXY >" );
+ sipRes = sipConvertFromNewType( new QgsPolylineXY( sipCpp->asMultiPoint() ), qvector_type, Py_None );
+ }
+ % End
+@@ -1792,7 +1792,7 @@ class CORE_EXPORT QgsGeometry
+ }
+ else
+ {
+- const sipMappedType *qvector_type = sipFindMappedType( "QVector<QVector<QgsPointXY>>" );
++ const sipTypeDef *qvector_type = sipFindType( "QVector<QVector<QgsPointXY>>" );
+ sipRes = sipConvertFromNewType( new QgsMultiPolylineXY( sipCpp->asMultiPolyline() ), qvector_type, Py_None );
+ }
+ % End
+@@ -1836,7 +1836,7 @@ class CORE_EXPORT QgsGeometry
+ }
+ else
+ {
+- const sipMappedType *qvector_type = sipFindMappedType( "QVector<QVector<QVector<QgsPointXY>>>" );
++ const sipTypeDef *qvector_type = sipFindType( "QVector<QVector<QVector<QgsPointXY>>>" );
+ sipRes = sipConvertFromNewType( new QgsMultiPolygonXY( sipCpp->asMultiPolygon() ), qvector_type, Py_None );
+ }
+ % End
+--- a/python/core/auto_generated/geometry/qgspoint.sip.in
++++ b/python/core/auto_generated/geometry/qgspoint.sip.in
+@@ -87,8 +87,7 @@ based on the following rules:
+ ( a0 == Py_None || PyFloat_AsDouble( a0 ) != -1.0 || !PyErr_Occurred() ) &&
+ ( a1 == Py_None || PyFloat_AsDouble( a1 ) != -1.0 || !PyErr_Occurred() ) &&
+ ( a2 == Py_None || PyFloat_AsDouble( a2 ) != -1.0 || !PyErr_Occurred() ) &&
+- ( a3 == Py_None || PyFloat_AsDouble( a3 ) != -1.0 || !PyErr_Occurred() ) &&
+- ( a4 == Py_None || sipCanConvertToEnum( a4, sipType_QgsWkbTypes_Type ) ) )
++ ( a3 == Py_None || PyFloat_AsDouble( a3 ) != -1.0 || !PyErr_Occurred() ) )
+ {
+ double x = a0 == Py_None ? std::numeric_limits<double>::quiet_NaN() : PyFloat_AsDouble( a0 );
+ double y = a1 == Py_None ? std::numeric_limits<double>::quiet_NaN() : PyFloat_AsDouble( a1 );
+--- a/src/core/geometry/qgspoint.h
++++ b/src/core/geometry/qgspoint.h
+@@ -109,8 +109,7 @@ class CORE_EXPORT QgsPoint: public QgsAb
+ ( a0 == Py_None || PyFloat_AsDouble( a0 ) != -1.0 || !PyErr_Occurred() ) &&
+ ( a1 == Py_None || PyFloat_AsDouble( a1 ) != -1.0 || !PyErr_Occurred() ) &&
+ ( a2 == Py_None || PyFloat_AsDouble( a2 ) != -1.0 || !PyErr_Occurred() ) &&
+- ( a3 == Py_None || PyFloat_AsDouble( a3 ) != -1.0 || !PyErr_Occurred() ) &&
+- ( a4 == Py_None || sipCanConvertToEnum( a4, sipType_QgsWkbTypes_Type ) ) )
++ ( a3 == Py_None || PyFloat_AsDouble( a3 ) != -1.0 || !PyErr_Occurred() ) )
+ {
+ double x = a0 == Py_None ? std::numeric_limits<double>::quiet_NaN() : PyFloat_AsDouble( a0 );
+ double y = a1 == Py_None ? std::numeric_limits<double>::quiet_NaN() : PyFloat_AsDouble( a1 );
+--- a/python/core/auto_generated/raster/qgsrasterpipe.sip.in
++++ b/python/core/auto_generated/raster/qgsrasterpipe.sip.in
+@@ -54,7 +54,7 @@ if connection would fail, the interface
+ // if insertion failed transfer ownership back to python
+ PyObject *o = sipGetPyObject( a1, sipType_QgsRasterInterface );
+ if ( o )
+- sipTransferBreak( o );
++ sipTransferTo( o, NULL );
+ }
+ %End
+
+--- a/src/core/raster/qgsrasterpipe.h
++++ b/src/core/raster/qgsrasterpipe.h
+@@ -83,7 +83,7 @@ class CORE_EXPORT QgsRasterPipe
+ // if insertion failed transfer ownership back to python
+ PyObject *o = sipGetPyObject( a1, sipType_QgsRasterInterface );
+ if ( o )
+- sipTransferBreak( o );
++ sipTransferTo( o, NULL );
+ }
+ % End
+ #endif
=====================================
debian/patches/pr37901.patch
=====================================
@@ -0,0 +1,184 @@
+Description: Add support for SIP v5 to the build system
+Author: Dmitry Shachnev <mitya57 at gmail.com>
+Origin: https://github.com/qgis/QGIS/pull/37901
+Bug: https://github.com/qgis/QGIS/issues/37542
+Bug-Debian: https://bugs.debian.org/964132
+
+--- a/cmake/FindSIP.py
++++ b/cmake/FindSIP.py
+@@ -30,17 +30,31 @@
+ # Redistribution and use is allowed according to the terms of the BSD license.
+ # For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+
+-import sipconfig
++try:
++ import sipbuild
++except ImportError: # Code for SIP v4
++ import sipconfig
+
+-sipcfg = sipconfig.Configuration()
+-print("sip_version:%06.0x" % sipcfg.sip_version)
+-print("sip_version_num:%d" % sipcfg.sip_version)
+-print("sip_version_str:%s" % sipcfg.sip_version_str)
+-print("sip_bin:%s" % sipcfg.sip_bin)
+-print("default_sip_dir:%s" % sipcfg.default_sip_dir)
+-print("sip_inc_dir:%s" % sipcfg.sip_inc_dir)
+-# SIP 4.19.10+ has new sipcfg.sip_module_dir
+-if hasattr(sipcfg, "sip_module_dir"):
+- print("sip_module_dir:%s" % sipcfg.sip_module_dir)
+-else:
+- print("sip_module_dir:%s" % sipcfg.sip_mod_dir)
++ sipcfg = sipconfig.Configuration()
++ print("sip_version:%06.0x" % sipcfg.sip_version)
++ print("sip_version_num:%d" % sipcfg.sip_version)
++ print("sip_version_str:%s" % sipcfg.sip_version_str)
++ print("sip_bin:%s" % sipcfg.sip_bin)
++ print("default_sip_dir:%s" % sipcfg.default_sip_dir)
++ print("sip_inc_dir:%s" % sipcfg.sip_inc_dir)
++ # SIP 4.19.10+ has new sipcfg.sip_module_dir
++ if hasattr(sipcfg, "sip_module_dir"):
++ print("sip_module_dir:%s" % sipcfg.sip_module_dir)
++ else:
++ print("sip_module_dir:%s" % sipcfg.sip_mod_dir)
++else: # Code for SIP v5
++ print("sip_version:%06.0x" % sipbuild.version.SIP_VERSION)
++ print("sip_version_num:%d" % sipbuild.version.SIP_VERSION)
++ print("sip_version_str:%s" % sipbuild.version.SIP_VERSION_STR)
++
++ import shutil
++ print("sip_bin:%s" % shutil.which("sip5"))
++
++ from distutils.sysconfig import get_python_lib
++ python_modules_dir = get_python_lib(plat_specific=1)
++ print("default_sip_dir:%s" % python_modules_dir)
+--- a/cmake/FindSIP.cmake
++++ b/cmake/FindSIP.cmake
+@@ -40,8 +40,12 @@ ELSE(SIP_VERSION)
+ STRING(REGEX REPLACE ".*\nsip_version_str:([^\n]+).*$" "\\1" SIP_VERSION_STR ${sip_config})
+ STRING(REGEX REPLACE ".*\nsip_bin:([^\n]+).*$" "\\1" SIP_BINARY_PATH ${sip_config})
+ STRING(REGEX REPLACE ".*\ndefault_sip_dir:([^\n]+).*$" "\\1" SIP_DEFAULT_SIP_DIR ${sip_config})
+- STRING(REGEX REPLACE ".*\nsip_inc_dir:([^\n]+).*$" "\\1" SIP_INCLUDE_DIR ${sip_config})
+- STRING(REGEX REPLACE ".*\nsip_module_dir:([^\n]+).*$" "\\1" SIP_MODULE_DIR ${sip_config})
++ IF(${SIP_VERSION_STR} VERSION_LESS 5)
++ STRING(REGEX REPLACE ".*\nsip_inc_dir:([^\n]+).*$" "\\1" SIP_INCLUDE_DIR ${sip_config})
++ STRING(REGEX REPLACE ".*\nsip_module_dir:([^\n]+).*$" "\\1" SIP_MODULE_DIR ${sip_config})
++ ELSE(${SIP_VERSION_STR} VERSION_LESS 5)
++ FIND_PROGRAM(SIP_MODULE_EXECUTABLE sip-module)
++ ENDIF(${SIP_VERSION_STR} VERSION_LESS 5)
+ SET(SIP_FOUND TRUE)
+ ENDIF(sip_config)
+
+--- a/python/CMakeLists.txt
++++ b/python/CMakeLists.txt
+@@ -84,6 +84,12 @@ INCLUDE_DIRECTORIES(SYSTEM
+ ${SQLITE3_INCLUDE_DIR}
+ )
+
++IF (${SIP_VERSION_STR} VERSION_LESS 5)
++ INCLUDE_DIRECTORIES(SYSTEM
++ ${SIP_INCLUDE_DIR}
++ )
++ENDIF (${SIP_VERSION_STR} VERSION_LESS 5)
++
+ IF (WITH_GUI)
+ INCLUDE_DIRECTORIES(SYSTEM
+ ${QSCINTILLA_INCLUDE_DIR}
+--- a/cmake/SIPMacros.cmake
++++ b/cmake/SIPMacros.cmake
+@@ -121,6 +121,12 @@ MACRO(GENERATE_SIP_PYTHON_MODULE_CODE MO
+ DEPENDS ${SIP_EXTRA_FILES_DEPEND}
+ VERBATIM
+ )
++ IF (SIP_MODULE_EXECUTABLE)
++ ADD_CUSTOM_COMMAND(
++ OUTPUT ${_sip_output_files} APPEND
++ COMMAND ${SIP_MODULE_EXECUTABLE} --target-dir ${CMAKE_CURRENT_BINARY_DIR}/${_module_path} --sip-h ${PYQT5_SIP_IMPORT}
++ )
++ ENDIF (SIP_MODULE_EXECUTABLE)
+
+ ADD_CUSTOM_TARGET(generate_sip_${MODULE_NAME}_cpp_files DEPENDS ${_sip_output_files})
+
+--- a/cmake/FindPyQt5.py
++++ b/cmake/FindPyQt5.py
+@@ -30,14 +30,15 @@
+ # Redistribution and use is allowed according to the terms of the BSD license.
+ # For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+
++import os.path
++import PyQt5.QtCore
++
+ try:
+- import PyQt5.pyqtconfig
+- pyqtcfg = PyQt5.pyqtconfig.Configuration()
++ __import__('sipbuild')
+ except ImportError:
+- import PyQt5.QtCore
+- import sipconfig # won't work for SIP v5
+- import os.path
++ import sipconfig # won't work for SIP v5
+ import sys
++
+ cfg = sipconfig.Configuration()
+ sip_dir = cfg.default_sip_dir
+ if sys.platform.startswith('freebsd'):
+@@ -50,39 +51,47 @@ except ImportError:
+ if os.path.exists(os.path.join(p, "QtCore", "QtCoremod.sip")):
+ sip_dir = p
+ break
++ else:
++ sys.exit(1)
+ cfg = {
+- 'pyqt_version': PyQt5.QtCore.PYQT_VERSION,
+- 'pyqt_version_str': PyQt5.QtCore.PYQT_VERSION_STR,
+- 'pyqt_sip_flags': PyQt5.QtCore.PYQT_CONFIGURATION['sip_flags'],
+ 'pyqt_mod_dir': os.path.join(cfg.default_mod_dir, "PyQt5"),
+ 'pyqt_sip_dir': sip_dir,
+ 'pyqt_bin_dir': cfg.default_bin_dir,
+ }
+- pyqtcfg = sipconfig.Configuration([cfg])
++else: # Code for SIP v5
++ from distutils.sysconfig import get_python_lib
++ import shutil
++ cfg = {
++ 'pyqt_mod_dir': os.path.dirname(PyQt5.__file__),
++ 'pyqt_sip_dir': os.path.join(get_python_lib(plat_specific=1), "PyQt5", "bindings"),
++ 'pyqt_bin_dir': os.path.dirname(shutil.which("pyuic5")),
++ }
+
+-print("pyqt_version:%06.0x" % pyqtcfg.pyqt_version)
+-print("pyqt_version_num:%d" % pyqtcfg.pyqt_version)
+-print("pyqt_version_str:%s" % pyqtcfg.pyqt_version_str)
++print("pyqt_version:%06.0x" % PyQt5.QtCore.PYQT_VERSION)
++print("pyqt_version_num:%d" % PyQt5.QtCore.PYQT_VERSION)
++print("pyqt_version_str:%s" % PyQt5.QtCore.PYQT_VERSION_STR)
+
+ pyqt_version_tag = ""
+ in_t = False
+-for item in pyqtcfg.pyqt_sip_flags.split(' '):
++pyqt_config_list = PyQt5.QtCore.PYQT_CONFIGURATION["sip_flags"].split(' ')
++for item in pyqt_config_list:
+ if item == "-t":
+ in_t = True
+ elif in_t:
+- if item.startswith("Qt_4"):
++ if item.startswith("Qt_5"):
+ pyqt_version_tag = item
+ else:
+ in_t = False
+ print("pyqt_version_tag:%s" % pyqt_version_tag)
+
+-print("pyqt_mod_dir:%s" % pyqtcfg.pyqt_mod_dir)
+-print("pyqt_sip_dir:%s" % pyqtcfg.pyqt_sip_dir)
+-print("pyqt_sip_flags:%s" % pyqtcfg.pyqt_sip_flags)
+-print("pyqt_bin_dir:%s" % pyqtcfg.pyqt_bin_dir)
++print("pyqt_mod_dir:%s" % cfg['pyqt_mod_dir'])
++print("pyqt_sip_dir:%s" % cfg['pyqt_sip_dir'])
++print("pyqt_sip_flags:%s" % PyQt5.QtCore.PYQT_CONFIGURATION['sip_flags'])
++print("pyqt_bin_dir:%s" % cfg['pyqt_bin_dir'])
+
+ try:
+ import PyQt5.sip
++
+ print("pyqt_sip_module:PyQt5.sip")
+ except:
+ print("pyqt_sip_module:sip")
=====================================
debian/patches/series
=====================================
@@ -3,3 +3,5 @@ developersmap-use-debian-package.patch
exclude-elvensword-resources.patch
grass78.patch
spelling-errors.patch
+pr37842.patch
+pr37901.patch
View it on GitLab: https://salsa.debian.org/debian-gis-team/qgis/-/commit/89973f430f8ee8b1c657bcea92ed4396da29bbb3
--
View it on GitLab: https://salsa.debian.org/debian-gis-team/qgis/-/commit/89973f430f8ee8b1c657bcea92ed4396da29bbb3
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-grass-devel/attachments/20200921/4190197f/attachment-0001.html>
More information about the Pkg-grass-devel
mailing list