[PyQt] QScintilla2 for Qt4/Qt45 Co-installability

Scott Kitterman debian at kitterman.com
Fri Mar 28 19:28:05 GMT 2014


On Friday, March 28, 2014 00:24:09 Scott Kitterman wrote:
> On Thursday, March 27, 2014 20:47:54 Scott Kitterman wrote:
> > On Sunday, March 09, 2014 17:26:13 Phil Thompson wrote:
> > > On 09-03-2014 4:41 pm, Scott Kitterman wrote:
> > > > Sigh. Phone auto correct. ..
> > > > 
> > > >  Debian/Ubuntu
> > > >  
> > > >  Scott K
> > > > 
> > > > On March 9, 2014 9:48:30 AM EDT, Scott Kitterman
> > > > 
> > > > <debian at kitterman.com> wrote:
> > > >> Ive been investigating extending the Deviant/Unintuitive packages
> > > >> for QScintilla2 to also build for Qt5.
> > > >> 
> > > >> Both the build for Qt4 and Qt5 produce identically named
> > > >> libqscintilla2 so files. I can easily mark the packages as
> > > >> conflicting so they cant be installed at the same time, but that
> > > >> seems less than ideal.
> > > >> 
> > > >> Do you have any suggestions about how to proceed on making the
> > > >> libraries co-installable?
> > > 
> > > The current snapshot installs a qscintilla2.prf file so that is now the
> > > recommended way of adding QScintilla to a .pro file. That then makes it
> > > more acceptable to call the library different names when compiled
> > > against different versions of Qt.
> > 
> > I think I have the library piece of it figured out now.  I am stuck on
> > configuring the Python bindings to build with Qt5.  Here's what I have so
> > far for the Python configure command when I'm trying to build with Qt5
> > (QSciQt5 is the directory where the Qt5 build of the library is done):
> > 
> > python$* ../configure.py -n ../../QSciQt5/ -o ../../QSciQt5 \
> > 
> >    --sip-incdir=/usr/include/python$* -c --pyqt=PyQt5
> >    --qmake=/usr/bin/qmake
> > 
> > \ --destdir=/usr/lib/python$*/dist-packages/PyQt5;
> > 
> > This configures, but not fully for Qt5.  In the generated Qsci.pro file,
> > there is:
> > 
> > api.path = /usr/share/qt4/api/python
> > 
> > Also the Qt include path when compiling the extenstion is still Qt4 (and
> > nothing in the .pro says it should be different.  It looks like setting --
> > pyqt=PyQt5 only affects there the files go by default, not what Qt version
> > is actually used during the build.
> > 
> > How do I pass options to qmake and how do I set api.path?
> 
> Nevermind about that.  I figured it out.  I changed python ... add
> QT_SELECT=qt5 in front of it and now both the includes and the api setting
> is correct.
> 
> New problem.   For Qt4, it builds fine, but for Qt5, I get this error:
> 
> g++ -c -pipe -fno-exceptions -O2 -Wall -W -D_REENTRANT -fPIC -
> DSIP_PROTECTED_IS_PUBLIC -Dprotected=public -DQT_NO_DEBUG -DQT_PLUGIN -
> DQT_GUI_LIB -DQT_CORE_LIB -I/usr/lib/i386-linux-gnu/qt5/mkspecs/linux-g++
> -I. -I../../QSciQt5 -I/usr/include/python3.4m -I/usr/include/python3.4m -
> I/usr/include/qt5 -I/usr/include/qt5/QtGui -I/usr/include/qt5/QtCore -I. -o
> sipQscipart0.o sipQscipart0.cpp
> In file included from ../../QSciQt5/Qsci/qscicommand.h:36:0,
>                  from ../../QSciQt5/Qsci/qsciscintilla.h:42,
>                  from
> /tmp/buildd/qscintilla2-2.8.1/Python/sip/qsciscintilla.sip:29:
> ../../QSciQt5/Qsci/qsciscintillabase.h:35:31: fatal error:
> QAbstractScrollArea: No such file or directory
>  #include <QAbstractScrollArea>
>                                ^
> compilation terminated.
> 
> In Qt4, QAbstractScrollArea is in QtGui and in Qt5 it's in QtWidgets which I
> have installed, but (as you can see) isn't included.  I manually added it
> to the generated Makefile for testing and got past the, to then fail on
> this:
> 
> In file included from
> /tmp/buildd/qscintilla2-2.8.1/Python/sip/qsciprinter.sip:31:0:
> ../../QSciQt5/Qsci/qsciprinter.h:38:22: fatal error: qprinter.h: No such
> file or directory
>  #include <qprinter.h>
>                       ^
> compilation terminated.
> 
> For Qt5, qprinter.h is in QtPrintSupport instead of QtGui.  So I added that
> manually to the Makefile.
> 
> After those two additions, it compiled for Qt5.  Is there a configure option
> I need to add to get those included?

No claims that this is the right way to do it, but the attached patch works.

Scott K
-------------- next part --------------
A non-text attachment was scrubbed...
Name: qt5_includes.patch
Type: text/x-patch
Size: 653 bytes
Desc: not available
URL: <http://www.riverbankcomputing.com/pipermail/pyqt/attachments/20140328/b43769e4/attachment.bin>


More information about the PyQt mailing list