title: Issues with building PyQt5 on Ubuntu 14.04
body: <p>I am having some problems building PyQt5 on Ubuntu 14.04. I am working with some code that has a hard dependency on Python 2.7; so, I am unable to use the python3 packages from Ubuntu's repository. Further searches of Ubuntu's packages reveal that there are dev and doc packages for Python 2 pyqt5. But, nothing to install the libraries necessary to write code.</p>
  
  <p>This has led me to creating a custom build for PyQt5. I obtained the source for version 5.5 from here: <a href="https://www.riverbankcomputing.com/software/pyqt/download5" rel="noreferrer">https://www.riverbankcomputing.com/software/pyqt/download5</a> and I am using sip as provided by the Ubuntu repos (installation of kubuntu-desktop requires sip).</p>
  
  <p>I read that its easy to have mismatched versions of sip so I did the following check:</p>
  
  <pre><code>Python 2.7.6 (default, Jun 22 2015, 17:58:13) 
  [GCC 4.8.2] on linux2
  Type "help", "copyright", "credits" or "license" for more information.
  &gt;&gt;&gt; import sip
  &gt;&gt;&gt; print(sip, sip.SIP_VERSION_STR)
  (&lt;module 'sip' from '/usr/lib/python2.7/dist-packages/sip.so'&gt;, '4.16.9')
  </code></pre>
  
  <p>And:</p>
  
  <pre><code>$ sip -V
  4.16.9
  </code></pre>
  
  <p>Also I am using the Qt5 tools provided by the Ubuntu repos. This included installing qtdeclarative5-* (probably overkill) and qt5-default. Here is some information about qmake: </p>
  
  <pre><code>qmake --version
  QMake version 3.0
  Using Qt version 5.2.1 in /usr/lib/x86_64-linux-gnu
  </code></pre>
  
  <p>I currently have PyQt4 installed and read on the installation notes that this would be fine as long as they were both compiled against the same version of sip.</p>
  
  <p>After downloading, I unpacked the tarball and attempted a build as follows:</p>
  
  <pre><code>sudo ln -s  /usr/include/python2.7  /usr/local/include/python2.7
  python configure.py --sip-incdir=/usr/include/python2.7/
  make
  </code></pre>
  
  <p>The configuration output appeared to identify the correct version of sip and I get the following (seemingly) sip related compile errors from make:</p>
  
  <pre><code>make[1]: Entering directory `~/Downloads/PyQt-gpl-5.5/QtWebKit'
  g++ -c -m64 -pipe -fno-exceptions -O2 -Wall -W -D_REENTRANT -fPIC -DSIP_PROTECTED_IS_PUBLIC -Dprotected=public -DQT_NO_DEBUG -DQT_PLUGIN -DQT_WEBKIT_LIB -DQT_NETWORK_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -I. -I. -I/usr/include/python2.7 -I/usr/include/qt5 -I/usr/include/qt5/QtWebKit -I/usr/include/qt5/QtNetwork -I/usr/include/qt5/QtGui -I/usr/include/qt5/QtCore -I. -o sipQtWebKitQWebSecurityOrigin.o sipQtWebKitQWebSecurityOrigin.cpp
  ~/Downloads/PyQt-gpl-5.5/QtWebKit/sipQtWebKitQWebSecurityOrigin.cpp: In function ‘PyObject* meth_QWebSecurityOrigin_addAccessWhitelistEntry(PyObject*, PyObject*)’:
  ~/Downloads/PyQt-gpl-5.5/QtWebKit/sipQtWebKitQWebSecurityOrigin.cpp:384:9: error: ‘SubdomainSetting’ is not a member of ‘QWebSecurityOrigin’
           QWebSecurityOrigin::SubdomainSetting a2;
           ^
  ~/Downloads/PyQt-gpl-5.5/QtWebKit/sipQtWebKitQWebSecurityOrigin.cpp:384:46: error: expected ‘;’ before ‘a2’
           QWebSecurityOrigin::SubdomainSetting a2;
                                                ^
  ~/Downloads/PyQt-gpl-5.5/QtWebKit/sipQtWebKitQWebSecurityOrigin.cpp:387:214: error: ‘a2’ was not declared in this scope
           if (sipParseArgs(&amp;sipParseErr, sipArgs, "BJ1J1E", &amp;sipSelf, sipType_QWebSecurityOrigin, &amp;sipCpp, sipType_QString,&amp;a0, &amp;a0State, sipType_QString,&amp;a1, &amp;a1State, sipType_QWebSecurityOrigin_SubdomainSetting, &amp;a2))
                                                                                                                                                                                                                        ^
  ~/Downloads/PyQt-gpl-5.5/QtWebKit/sipQtWebKitQWebSecurityOrigin.cpp:389:21: error: ‘class QWebSecurityOrigin’ has no member named ‘addAccessWhitelistEntry’
               sipCpp-&gt;addAccessWhitelistEntry(*a0,*a1,a2);
                       ^
  ~/Downloads/PyQt-gpl-5.5/QtWebKit/sipQtWebKitQWebSecurityOrigin.cpp: In function ‘PyObject* meth_QWebSecurityOrigin_removeAccessWhitelistEntry(PyObject*, PyObject*)’:
  ~/Downloads/PyQt-gpl-5.5/QtWebKit/sipQtWebKitQWebSecurityOrigin.cpp:417:9: error: ‘SubdomainSetting’ is not a member of ‘QWebSecurityOrigin’
           QWebSecurityOrigin::SubdomainSetting a2;
           ^
  ~/Downloads/PyQt-gpl-5.5/QtWebKit/sipQtWebKitQWebSecurityOrigin.cpp:417:46: error: expected ‘;’ before ‘a2’
           QWebSecurityOrigin::SubdomainSetting a2;
                                                ^
  ~/Downloads/PyQt-gpl-5.5/QtWebKit/sipQtWebKitQWebSecurityOrigin.cpp:420:214: error: ‘a2’ was not declared in this scope
           if (sipParseArgs(&amp;sipParseErr, sipArgs, "BJ1J1E", &amp;sipSelf, sipType_QWebSecurityOrigin, &amp;sipCpp, sipType_QString,&amp;a0, &amp;a0State, sipType_QString,&amp;a1, &amp;a1State, sipType_QWebSecurityOrigin_SubdomainSetting, &amp;a2))
                                                                                                                                                                                                                        ^
  ~/Downloads/PyQt-gpl-5.5/QtWebKit/sipQtWebKitQWebSecurityOrigin.cpp:422:21: error: ‘class QWebSecurityOrigin’ has no member named ‘removeAccessWhitelistEntry’
               sipCpp-&gt;removeAccessWhitelistEntry(*a0,*a1,a2);
                       ^
  ~/Downloads/PyQt-gpl-5.5/QtWebKit/sipQtWebKitQWebSecurityOrigin.cpp: In function ‘void* init_type_QWebSecurityOrigin(sipSimpleWrapper*, PyObject*, PyObject*, PyObject**, PyObject**, PyObject**)’:
  ~/Downloads/PyQt-gpl-5.5/QtWebKit/sipQtWebKitQWebSecurityOrigin.cpp:477:48: error: no matching function for call to ‘QWebSecurityOrigin::QWebSecurityOrigin(const QUrl&amp;)’
               sipCpp = new QWebSecurityOrigin(*a0);
                                                  ^
  ~/Downloads/PyQt-gpl-5.5/QtWebKit/sipQtWebKitQWebSecurityOrigin.cpp:477:48: note: candidates are:
  In file included from ~/Downloads/PyQt-gpl-5.5/sip/QtWebKit/qwebsecurityorigin.sip:26:0:
  /usr/include/qt5/QtWebKit/qwebsecurityorigin.h:64:5: note: QWebSecurityOrigin::QWebSecurityOrigin(QWebSecurityOriginPrivate*)
       QWebSecurityOrigin(QWebSecurityOriginPrivate* priv);
       ^
  /usr/include/qt5/QtWebKit/qwebsecurityorigin.h:64:5: note:   no known conversion for argument 1 from ‘const QUrl’ to ‘QWebSecurityOriginPrivate*’
  /usr/include/qt5/QtWebKit/qwebsecurityorigin.h:58:5: note: QWebSecurityOrigin::QWebSecurityOrigin(const QWebSecurityOrigin&amp;)
       QWebSecurityOrigin(const QWebSecurityOrigin&amp; other);
       ^
  /usr/include/qt5/QtWebKit/qwebsecurityorigin.h:58:5: note:   no known conversion for argument 1 from ‘const QUrl’ to ‘const QWebSecurityOrigin&amp;’
  ~/Downloads/PyQt-gpl-5.5/QtWebKit/sipQtWebKitQWebSecurityOrigin.cpp: At global scope:
  ~/Downloads/PyQt-gpl-5.5/QtWebKit/sipQtWebKitQWebSecurityOrigin.cpp:516:48: error: ‘AllowSubdomains’ is not a member of ‘QWebSecurityOrigin’
       {sipName_AllowSubdomains, static_cast&lt;int&gt;(QWebSecurityOrigin::AllowSubdomains), 21},
                                                  ^
  ~/Downloads/PyQt-gpl-5.5/QtWebKit/sipQtWebKitQWebSecurityOrigin.cpp:517:51: error: ‘DisallowSubdomains’ is not a member of ‘QWebSecurityOrigin’
       {sipName_DisallowSubdomains, static_cast&lt;int&gt;(QWebSecurityOrigin::DisallowSubdomains), 21},
                                                     ^
  make[1]: *** [sipQtWebKitQWebSecurityOrigin.o] Error 1
  make[1]: Leaving directory `~/Downloads/PyQt-gpl-5.5/QtWebKit'
  make: *** [sub-QtWebKit-make_first-ordered] Error 2
  </code></pre>
  
  <p>The outcome is that I can make install and get some of the functionality that I'd expect; however, I am missing some required functionality with the WebKit widgets. I hope that I have supplied enough information to describe where i'm stuck. I feel just shy of digging into the code; however, I'm assuming that the answer is actually much simpler.</p>
  
  <p>Thanks in advance!</p>