Bug report #16071

SIP 4.19 breaks QGIS build

Added by vince - over 2 years ago. Updated almost 2 years ago.

Status:Closed
Priority:Normal
Assignee:-
Category:Unknown
Affected QGIS version:2.18.2 Regression?:No
Operating System:MacOS Easy fix?:No
Pull Request or Patch supplied:No Resolution:
Crashes QGIS or corrupts data:No Copied to github as #:23986

Description

It seems that QGIS is incompatible with the newest SIP 4.19 release:

:info:build /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_gis_qgis/QGIS/work/QGIS-2_18_2/build/python/core/sip_corepart1.cpp:86260:9: error: virtual function 'dataType' has a different return type ('int') than the function it overrides (which has return type 'QGis::DataType')
:info:build     int dataType(int) const;
:info:build     ~~~ ^
:info:build /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_gis_qgis/QGIS/work/QGIS-2_18_2/python/../src/core/raster/qgsrasterprojector.h:101:20: note: overridden virtual function is here
:info:build     QGis::DataType dataType( int bandNo ) const override;
:info:build     ~~~~~~~~~~~~~~ ^
:info:build Loaded 182/183 from /opt/local/share/gdal/vertcs.csv
:info:build Loaded 153/154 from /opt/local/share/gdal/compdcs.csv
:info:build Loaded 148/149 from /opt/local/share/gdal/geoccs.csv
:info:build Loading epsg.wkt
:info:build Loading esri_extra.wkt
:info:build 6063 WKTs loaded
:info:build make[2]: Entering directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_gis_qgis/QGIS/work/QGIS-2_18_2/build'
:info:build make[2]: Nothing to be done for `src/gui/CMakeFiles/qgis_gui.dir/build'.
:info:build make[2]: Leaving directory `/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_gis_qgis/QGIS/work/QGIS-2_18_2/build'
:info:build [ 59%] Built target qgis_gui
:info:build /Applications/Xcode.app/Contents/Developer/usr/bin/make -f src/auth/basic/CMakeFiles/basicauthmethod.dir/build.make src/auth/basic/CMakeFiles/basicauthmethod.dir/depend
:info:build /Applications/Xcode.app/Contents/Developer/usr/bin/make -f src/auth/identcert/CMakeFiles/identcertauthmethod.dir/build.make src/auth/identcert/CMakeFiles/identcertauthmethod.dir/depend
:info:build /Applications/Xcode.app/Contents/Developer/usr/bin/make -f src/auth/pkipaths/CMakeFiles/pkipathsauthmethod.dir/build.make src/auth/pkipaths/CMakeFiles/pkipathsauthmethod.dir/depend
:info:build /Applications/Xcode.app/Contents/Developer/usr/bin/make -f src/auth/pkipkcs12/CMakeFiles/pkcs12authmethod.dir/build.make src/auth/pkipkcs12/CMakeFiles/pkcs12authmethod.dir/depend
:info:build /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_gis_qgis/QGIS/work/QGIS-2_18_2/build/python/core/sip_corepart2.cpp:130799:27: error: call to implicitly-deleted copy constructor of '::QgsVectorLayerFeatureIterator'
:info:build             sipCpp = new  ::QgsVectorLayerFeatureIterator(*a0);
:info:build                           ^                               ~~~
:info:build /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_gis_qgis/QGIS/work/QGIS-2_18_2/python/../src/core/qgsvectorlayerfeatureiterator.h:196:42: note: copy constructor of 'QgsVectorLayerFeatureIterator' is implicitly deleted because field 'mExpressionContext' has an inaccessible copy constructor
:info:build     QScopedPointer<QgsExpressionContext> mExpressionContext;
:info:build                                          ^
:info:build /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_gis_qgis/QGIS/work/QGIS-2_18_2/python/core/qgsexception.sip:8:19: error: use of undeclared identifier 'sipExportedExceptions__core'
:info:build   PyErr_SetString(sipException_QgsCsException, sipExceptionRef.what().toUtf8().constData() );
:info:build                   ^
:info:build /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_gis_qgis/QGIS/work/QGIS-2_18_2/build/python/core/sipAPI_core.h:20150:37: note: expanded from macro 'sipException_QgsCsException'
:info:build #define sipException_QgsCsException sipExportedExceptions__core[0]
:info:build                                  ^

I’m not sure, however, whether this is a bug in SIP or something in QGIS. Any help would be appreciated.
TiA,
Vincent

Associated revisions

Revision 718581ff
Added by Jürgen Fischer over 2 years ago

adapt bindings to sip 4.19 (fixes #16071)

Revision 70f51aee
Added by Jürgen Fischer over 2 years ago

adapt bindings to sip 4.19 (fixes #16071)

(cherry picked from commit 718581ffb12b723f9a3c0ae01b7ec2d8aed9d4bb)

Revision 2efb2a38
Added by Sandro Mani over 2 years ago

Fix build against recent sip/PyQt4:

qgsfiledownloader.sip:33:0:
src/gui/qgsfiledownloader.h:94:5: error: overriding non-deleted function 'virtual QgsFileDownloader::~QgsFileDownloader()'

RuntimeError: qgis._core cannot import type 'QList<QVariant>' from PyQt4.QtCore
(cherry picked from commit 85a0db24f32351f6096cd8282f03ad5c2f4e6ef5)

fixes #16071

Revision 7e4345a9
Added by Jürgen Fischer about 2 years ago

remove sip workaround (fixes #17038, refs #16071)

Revision 91171370
Added by Jürgen Fischer about 2 years ago

remove sip workaround (fixes #17038, refs #16071)

History

#1 Updated by Donovan Cameron over 2 years ago

Here's the error trying to build from QGIS git repo for 2.18 release on Linux with sip 4.19:

[ 97%] Generating gui/sip_guipart0.cpp, gui/sip_guipart1.cpp, gui/sip_guipart2.cpp, gui/sip_guipart3.cpp

sip: Deprecation warning: /tmp/makepkg/qgis/src/qgis/python/gui/gui.sip:2: %Module version numbers are deprecated and ignored
sip: Deprecation warning: /tmp/makepkg/qgis/src/qgis/python/core/core.sip:2: %Module version numbers are deprecated and ignored
sip: Deprecation warning: /tmp/makepkg/qgis/src/qgis/python/core/conversions.sip:750: /DocType/ is deprecated

sip: Deprecation warning: /tmp/makepkg/qgis/src/qgis/python/core/conversions.sip:1876: /DocType/ is deprecated

sip: Deprecation warning: /tmp/makepkg/qgis/src/qgis/python/core/qgsfeature.sip:7: /DocType/ is deprecated

sip: Deprecation warning: /tmp/makepkg/qgis/src/qgis/python/core/qgspallabeling.sip:2: /DocType/ is deprecated

Scanning dependencies of target python_module_qgis__gui
[ 97%] Building CXX object python/CMakeFiles/python_module_qgis__gui.dir/gui/sip_guipart0.cpp.o
/tmp/makepkg/qgis/src/qgis/build/python/gui/sip_guipart0.cpp: In member function ‘virtual void sipQgsSpinBox::fixup(QString&) const’:
/tmp/makepkg/qgis/src/qgis/build/python/gui/sip_guipart0.cpp:11721:25: error: ‘sipName_QString’ was not declared in this scope
     if (!sipMeth)
                         ^              
/tmp/makepkg/qgis/src/qgis/build/python/gui/sip_guipart0.cpp:11729:25: error: ‘sipName_QString’ was not declared in this scope
     sipVH__gui_1(sipGILState, 0, sipPySelf, sipMeth, a0);
                         ^~~~~~~~~~~~~~~
/tmp/makepkg/qgis/src/qgis/build/python/gui/sip_guipart0.cpp: In member function ‘virtual void sipQgsDoubleSpinBox::fixup(QString&) const’:
/tmp/makepkg/qgis/src/qgis/build/python/gui/sip_guipart0.cpp:22066:25: error: ‘sipName_QString’ was not declared in this scope

                         ^              
/tmp/makepkg/qgis/src/qgis/build/python/gui/sip_guipart0.cpp:22074:25: error: ‘sipName_QString’ was not declared in this scope
     sip_gilstate_t sipGILState;
                         ^~~~~~~        
/tmp/makepkg/qgis/src/qgis/build/python/gui/sip_guipart0.cpp: In member function ‘virtual void sipQgsDateTimeEdit::fixup(QString&) const’:
/tmp/makepkg/qgis/src/qgis/build/python/gui/sip_guipart0.cpp:26183:25: error: ‘sipName_QString’ was not declared in this scope
     if (!sipMeth)
                         ^              
/tmp/makepkg/qgis/src/qgis/build/python/gui/sip_guipart0.cpp:26191:25: error: ‘sipName_QString’ was not declared in this scope
 int sipQgsDateTimeEdit::metric( ::QPaintDevice::PaintDeviceMetric a0) const
                         ^~~~~~~~~~~~~~~
/tmp/makepkg/qgis/src/qgis/build/python/gui/sip_guipart0.cpp: In member function ‘virtual QValidator::State sipQgsDateTimeEdit::validate(QString&, int&) const’:
/tmp/makepkg/qgis/src/qgis/build/python/gui/sip_guipart0.cpp:26212:25: error: ‘sipName_QString’ was not declared in this scope

                         ^              
/tmp/makepkg/qgis/src/qgis/build/python/gui/sip_guipart0.cpp:26219:25: error: ‘sipName_QString’ was not declared in this scope
 }
                         ^              
make[2]: *** [python/CMakeFiles/python_module_qgis__gui.dir/build.make:647: python/CMakeFiles/python_module_qgis__gui.dir/gui/sip_guipart0.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:3866: python/CMakeFiles/python_module_qgis__gui.dir/all] Error 2

#2 Updated by Jürgen Fischer over 2 years ago

Should be fixed in master with 6a56cb0

#3 Updated by Donovan Cameron over 2 years ago

Ah! If it were to happen, it's gonna be a little bit of work to cherry pick and get it back ported.

Can downgrade pyqt4 and sip packages for now =P

#4 Updated by vince - over 2 years ago

Jürgen Fischer wrote:

Should be fixed in master with 6a56cb0

It’s better, but I get a missing “qgis_python.h” error message later. Is that related?

Thanks,
Vincent

#5 Updated by Xavier Corredor Llano over 2 years ago

Jürgen Fischer wrote:

Should be fixed in master with 6a56cb0

Hi Jurgen, the master branch compiles well with the sip 4.19 but the patch is only for the master branch, is possible to provide a patch for the 2.18 branch?

Thanks!

#6 Updated by vince - over 2 years ago

Xavier Corredor Llano wrote:

Hi Jurgen, the master branch compiles well with the sip 4.19 but the patch is only for the master branch, is possible to provide a patch for the 2.18 branch?

It still does not compile on MacOS. I get a missing “qgis_python.h” file message.
Where does that file stem from?

#7 Updated by Xavier Corredor Llano over 2 years ago

vince - wrote:

Xavier Corredor Llano wrote:

Hi Jurgen, the master branch compiles well with the sip 4.19 but the patch is only for the master branch, is possible to provide a patch for the 2.18 branch?

It still does not compile on MacOS. I get a missing “qgis_python.h” file message.
Where does that file stem from?

I don't know, I tested on Archlinux

#8 Updated by Drei Eck over 2 years ago

Making the stable and the long term support relese usable would be really nice and important, for production use.

I also cannot use QGIS right now because of this, old binary also not usable anymore due to library incompatibilities after system upgrade.

(I have also arch linux and am going to use 2.18 release.)

#9 Updated by Xavier Corredor Llano over 2 years ago

  • Target version set to Version 2.18

Hi @vince, please add Linux platform and it would be good to increase the priority, the stable version of Qgis is unusable with this problem for all OS with sip 4.19

#10 Updated by Jürgen Fischer over 2 years ago

  • Status changed from Open to Closed

#11 Updated by Drei Eck over 2 years ago

  • % Done changed from 0 to 100

Thank you, much appreciated.

#12 Updated by Doug Newgard over 2 years ago

  • Status changed from Closed to Reopened

A fix for 2.14 LTS would be appreciated as well.

#13 Updated by Drei Eck over 2 years ago

  • Target version changed from Version 2.18 to Version 2.14
  • % Done changed from 100 to 50

#14 Updated by Jürgen Fischer over 2 years ago

  • Status changed from Reopened to Closed

#15 Updated by Donovan Cameron over 2 years ago

  • Status changed from Closed to Reopened
  • Target version changed from Version 2.14 to Version 2.18

sip 4.19.1 breaks build again for 2.18.3:

[ 97%] Building CXX object python/CMakeFiles/python_module_qgis__gui.dir/gui/sip_guipart3.cpp.o
/tmp/makepkg/qgis/src/qgis/build/python/gui/sip_guipart3.cpp:5798:7: error: deleted function ‘virtual sipQgsFileDownloader::~sipQgsFileDownloader()’
}
^
In file included from /tmp/makepkg/qgis/src/qgis/python/gui/qgsfiledownloader.sip:33:0:
/tmp/makepkg/qgis/src/qgis/python/../src/gui/qgsfiledownloader.h:94:5: error: overriding non-deleted function ‘virtual QgsFileDownloader::~QgsFileDownloader()’
~QgsFileDownloader();
^
/tmp/makepkg/qgis/src/qgis/build/python/gui/sip_guipart3.cpp:5798:7: note: ‘virtual sipQgsFileDownloader::~sipQgsFileDownloader()’ is implicitly deleted because the default definition would be ill-formed:
}
^
/tmp/makepkg/qgis/src/qgis/build/python/gui/sip_guipart3.cpp:5798:7: error: ‘virtual QgsFileDownloader::~QgsFileDownloader()’ is private within this context
In file included from /tmp/makepkg/qgis/src/qgis/python/gui/qgsfiledownloader.sip:33:0:
/tmp/makepkg/qgis/src/qgis/python/../src/gui/qgsfiledownloader.h:94:5: note: declared private here
~QgsFileDownloader();
^
/tmp/makepkg/qgis/src/qgis/build/python/gui/sip_guipart3.cpp: In constructor ‘sipQgsFileDownloader::sipQgsFileDownloader(QUrl, QString, bool)’:
/tmp/makepkg/qgis/src/qgis/build/python/gui/sip_guipart3.cpp:5830:122: error: ‘QgsFileDownloader::~QgsFileDownloader()’ is private within this context
bool sipQgsFileDownloader::eventFilter( ::QObject*a0, ::QEvent*a1)
^
In file included from /tmp/makepkg/qgis/src/qgis/python/gui/qgsfiledownloader.sip:33:0:
/tmp/makepkg/qgis/src/qgis/python/../src/gui/qgsfiledownloader.h:94:5: note: declared private here
~QgsFileDownloader();
^
/tmp/makepkg/qgis/src/qgis/build/python/gui/sip_guipart3.cpp: In function ‘void release_QgsFileDownloader(void*, int)’:
/tmp/makepkg/qgis/src/qgis/build/python/gui/sip_guipart3.cpp:6028:64: error: use of deleted function ‘virtual sipQgsFileDownloader::~sipQgsFileDownloader()’
return NULL;
^
make[2]: *** [python/CMakeFiles/python_module_qgis__gui.dir/build.make:719: python/CMakeFiles/python_module_qgis__gui.dir/gui/sip_guipart3.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:3866: python/CMakeFiles/python_module_qgis__gui.dir/all] Error 2
make: *** [Makefile:150: all] Error 2

#16 Updated by Bruno Friedmann over 2 years ago

Donovan what's your build env ?
At least qgis and qgis-ltr still build here at openSUSE with sip-4.19.1

#17 Updated by Donovan Cameron over 2 years ago

I'm building on Arch Linux 64-bit.

Just tried building QGIS 2.18.3.r77.g7800ee83dd but still get the same error.

Thought it was a long tail dependency issue with SIP, attempted to re-compile pyqt4 and qscintilla but didn't help.

#18 Updated by Xavier Corredor Llano over 2 years ago

Confirmed problems while building using Qgis 2.18.4 with python2-sip and sip 4.19.1 in Archlinux:

[ 90%] Building CXX object src/app/CMakeFiles/qgis_app.dir/openstreetmap/qgsosmexportdialog.cpp.o
/Tmp_build/qgis/src/qgis-2.18.4/build/python/gui/sip_guipart3.cpp:5798:7: error: deleted function ‘virtual sipQgsFileDownloader::~sipQgsFileDownloader()’
}
^                   
In file included from /Tmp_build/qgis/src/qgis-2.18.4/python/gui/qgsfiledownloader.sip:33:0:
/Tmp_build/qgis/src/qgis-2.18.4/python/../src/gui/qgsfiledownloader.h:94:5: error: overriding non-deleted function ‘virtual QgsFileDownloader::~QgsFileDownloader()’
~QgsFileDownloader();
^
/Tmp_build/qgis/src/qgis-2.18.4/build/python/gui/sip_guipart3.cpp:5798:7: note: ‘virtual sipQgsFileDownloader::~sipQgsFileDownloader()’ is implicitly deleted because the default definition would be ill-formed:
}
^                   
/Tmp_build/qgis/src/qgis-2.18.4/build/python/gui/sip_guipart3.cpp:5798:7: error: ‘virtual QgsFileDownloader::~QgsFileDownloader()’ is private within this context
In file included from /Tmp_build/qgis/src/qgis-2.18.4/python/gui/qgsfiledownloader.sip:33:0:
/Tmp_build/qgis/src/qgis-2.18.4/python/../src/gui/qgsfiledownloader.h:94:5: note: declared private here
~QgsFileDownloader();
^
/Tmp_build/qgis/src/qgis-2.18.4/build/python/gui/sip_guipart3.cpp: In constructor ‘sipQgsFileDownloader::sipQgsFileDownloader(QUrl, QString, bool)’:
/Tmp_build/qgis/src/qgis-2.18.4/build/python/gui/sip_guipart3.cpp:5830:122: error: ‘QgsFileDownloader::~QgsFileDownloader()’ is private within this context
bool sipQgsFileDownloader::eventFilter( ::QObject*a0, ::QEvent*a1)
^
In file included from /Tmp_build/qgis/src/qgis-2.18.4/python/gui/qgsfiledownloader.sip:33:0:
/Tmp_build/qgis/src/qgis-2.18.4/python/../src/gui/qgsfiledownloader.h:94:5: note: declared private here
~QgsFileDownloader();
^
/Tmp_build/qgis/src/qgis-2.18.4/build/python/gui/sip_guipart3.cpp: In function ‘void release_QgsFileDownloader(void*, int)’:
/Tmp_build/qgis/src/qgis-2.18.4/build/python/gui/sip_guipart3.cpp:6028:64: error: use of deleted function ‘virtual sipQgsFileDownloader::~sipQgsFileDownloader()’
return NULL;

#19 Updated by Bruno Friedmann over 2 years ago

Ok this is also seen in openSUSE build qgis 2.18.3 and sip 4.19.1

[ 658s] [ 87%] Building CXX object python/CMakeFiles/python_module_qgis__gui.dir/gui/sip_guipart3.cpp.o
[ 660s] [ 87%] Linking CXX executable ../../../output/bin/qgis_projectionissues
[ 660s] /home/abuild/rpmbuild/BUILD/temp/python/gui/sip_guipart3.cpp:10952:7: error: deleted function 'virtual sipQgsFileDownloader::~sipQgsFileDownloader()'
[ 660s] sipMeth = sipIsPyMethod(&sipGILState,&sipPyMethods[1],sipPySelf,NULL,sipName_eventFilter);
[ 660s] ^~~~~~~~~~~~~~~~~~~~
[ 660s] In file included from /home/abuild/rpmbuild/BUILD/qgis-2.18.3/python/gui/qgsfiledownloader.sip:33:0:
[ 660s] /home/abuild/rpmbuild/BUILD/qgis-2.18.3/python/../src/gui/qgsfiledownloader.h:94:5: error: overriding non-deleted function 'virtual QgsFileDownloader::~QgsFileDownloader()'
[ 660s] ~QgsFileDownloader();
[ 660s] ^
[ 660s] /home/abuild/rpmbuild/BUILD/temp/python/gui/sip_guipart3.cpp:10952:7: note: 'virtual sipQgsFileDownloader::~sipQgsFileDownloader()' is implicitly deleted because the default definition would be ill-formed:
[ 660s] sipMeth = sipIsPyMethod(&sipGILState,&sipPyMethods[1],sipPySelf,NULL,sipName_eventFilter);
[ 660s] ^~~~~~~~~~~~~~~~~~~~
[ 660s] /home/abuild/rpmbuild/BUILD/temp/python/gui/sip_guipart3.cpp:10952:7: error: 'virtual QgsFileDownloader::~QgsFileDownloader()' is private within this context
[ 660s] In file included from /home/abuild/rpmbuild/BUILD/qgis-2.18.3/python/gui/qgsfiledownloader.sip:33:0:
[ 660s] /home/abuild/rpmbuild/BUILD/qgis-2.18.3/python/../src/gui/qgsfiledownloader.h:94:5: note: declared private here
[ 660s] ~QgsFileDownloader();
[ 660s] ^
[ 660s] /home/abuild/rpmbuild/BUILD/temp/python/gui/sip_guipart3.cpp: In constructor 'sipQgsFileDownloader::sipQgsFileDownloader(QUrl, QString, bool)':
[ 660s] /home/abuild/rpmbuild/BUILD/temp/python/gui/sip_guipart3.cpp:10984:122: error: 'QgsFileDownloader::~QgsFileDownloader()' is private within this context
[ 660s]
[ 660s] ^
[ 660s] In file included from /home/abuild/rpmbuild/BUILD/qgis-2.18.3/python/gui/qgsfiledownloader.sip:33:0:
[ 660s] /home/abuild/rpmbuild/BUILD/qgis-2.18.3/python/../src/gui/qgsfiledownloader.h:94:5: note: declared private here
[ 660s] ~QgsFileDownloader();
[ 660s] ^
[ 660s] /home/abuild/rpmbuild/BUILD/temp/python/gui/sip_guipart3.cpp: In function 'void release_QgsFileDownloader(void*, int)':
[ 660s] /home/abuild/rpmbuild/BUILD/temp/python/gui/sip_guipart3.cpp:11188:64: error: use of deleted function 'virtual sipQgsFileDownloader::~sipQgsFileDownloader()'
[ 660s] {"downloadCompleted()", "\\1downloadCompleted(self)", 0, 0},
[ 660s] ^
[ 662s] [ 87%] Building CXX object src/app/CMakeFiles/qgis_app.dir/qgsdisplayangle.cpp.o
[ 662s] [ 87%] Building CXX object tests/src/gui/CMakeFiles/qgis_dockwidget.dir/qgis_dockwidget_automoc.cpp.o
[ 662s] [ 88%] Linking CXX executable ../../../output/bin/qgis_dockwidget
[ 663s] make[2]: *** [python/CMakeFiles/python_module_qgis__gui.dir/build.make:719: python/CMakeFiles/python_module_qgis__gui.dir/gui/sip_guipart3.cpp.o] Error 1
[ 663s] make[2]: *** Waiting for unfinished jobs....

#20 Updated by Donovan Cameron over 2 years ago

  • Status changed from Reopened to Closed
  • % Done changed from 50 to 100

Looks like the latest 85a0db24f32351f6096cd8282f03ad5c2f4e6ef5 allows compiling with sip 4.19.1 - many thanks!

#21 Updated by Bruno Friedmann over 2 years ago

To definitively fix the things, the same patch should be applied on 2.14 branch so it will not be lost next release.
Thanks for the work

#22 Updated by Jürgen Fischer almost 2 years ago

  • Category set to Unknown

Also available in: Atom PDF