<div dir="ltr"><div>Hello,</div><div><br></div><div>I recently wanted to test out Calibre with a newer Kindle Fire tablet. It turns out that I ran into many of the issues mentioned with the broken 4.99.4+dfsg+really4.12.0-1build1 package version.  I was able to get this old version of Calibre working to identify the tablet on Focal with an updated version of libmtp.  This is in my PPA here: <a href="https://launchpad.net/~trinitronx/+archive/ubuntu/calibre">https://launchpad.net/~trinitronx/+archive/ubuntu/calibre</a></div><div><br></div><div>So, knowing some packaging tricks for Ubuntu & Debian, I decided to try and create an updated Calibre package in a PPA for Focal / 20.04.1.  I ran into the issue of first needing to backport all the build dependencies.  I started out by using the same version of Calibre ( 5.6.0+dfsg ) from the source package in Ubuntu groovy, and then after reading this thread trying to backport the versions from Debian bullseye & sid.  So far I've been able to backport the following:</div><div><br></div><div><ul><li><span style="color:rgb(51,51,51);font-family:Ubuntu,"Bitstream Vera Sans","DejaVu Sans",Tahoma,sans-serif;font-size:12px">pyqt-builder  </span>1.4.0+dfsg-1 and 1.6.0+dfsg-1<br></li><li><span style="color:rgb(51,51,51);font-family:Ubuntu,"Bitstream Vera Sans","DejaVu Sans",Tahoma,sans-serif;font-size:12px">sip4  </span>4.19.24+dfsg-1</li><li><span style="color:rgb(51,51,51);font-family:Ubuntu,"Bitstream Vera Sans","DejaVu Sans",Tahoma,sans-serif;font-size:12px">sip5  </span>5.3.0+dfsg-2  and <span style="color:rgb(0,0,0)">5.5.0+dfsg-1</span><br></li><li><span style="color:rgb(0,0,0)">pyqt5-sip 12.8.1-1<br></span></li></ul></div><div>Note: I also backported <span style="color:rgb(51,51,51);font-family:Ubuntu,"Bitstream Vera Sans","DejaVu Sans",Tahoma,sans-serif;font-size:12px">debhelper 13.2 in that PPA, but ended up not using it because strict build-depends on "debhelper (=12)" is on most of the other packages in Focal, and Soyuz / pbuilder will fail on that build dependency.  Instead, I just switched back to "debhelper (=12)" in the source package's debian/control files.</span></div><div>These are in this PPA: <a href="https://launchpad.net/~trinitronx/+archive/ubuntu/focal-backport-buildeps">https://launchpad.net/~trinitronx/+archive/ubuntu/focal-backport-buildeps</a><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><pre style="font-family:courier,"courier new",monospace;font-size:14px;white-space:pre-wrap;margin-top:0px;margin-bottom:0px;color:rgb(0,0,0)">Most packages I mentioned will need a rebuild and a patch to use a different
location for PyQt5 *.sip files.
</pre></blockquote><div><br></div><div>This explains exactly the issues I ran into for the main Calibre package! 😊</div><div>So far I have tried two routes to resolve the build dependency:</div><div><br></div><div><ul><li>sip4 4.19.24+dfsg-1 + pyqt-builder 1.4.0+dfsg-1</li><ul><li>Patched Calibre's setup.py to use Python3</li><li>Patched Calibre's setup/build.py to use sip-module = "sip" </li><li>Ran into issues with python3-sipbuilder</li><ul><li>It could not find the package path, as you described:<br><span style="color:rgb(0,0,0)">SIPing 3 files...
</span><br>/usr/bin/python3.8 -c import os; os.chdir('/media/terabyte/src/pub/calibre-debian/calibre/build/pyqt/pictureflow'); from sipbuild.tools.build import main; main(); --verbose --no-make --qmake /usr/bin/qmake
<br>Querying qmake about your Qt installation...
<br>/usr/bin/qmake -query
<br>These bindings will be built: pictureflow.
<br>Generating the pictureflow bindings...
<br>-c: Unable to find file "QtWidgets/QtWidgetsmod.sip"<br><br></li><li>There was a problem with how python3-sipbuilder's "get_package_dir" function was working.<br>The "sip_parts" result of the split only had 1 array item: ["sip"]<br>The code discards the last array item, assuming it's a filename extension.<br>Therefore, it creates an empty array that gets passed to: <span style="color:rgb(0,0,0)">os.path.join()</span></li></ul></ul><li>sip5 5.3.0+dfsg-2  + pyqt-builder 1.4.0+dfsg-1 + pyqt5-dev <span style="color:rgb(0,0,0)">5.14.1+dfsg-3build1</span><br></li><ul><li>This option required just patching Calibre's setup.py to use Python3</li><li>Tried downgrading Build-Depends to pyqt5-dev (>= 5.14.1+dfsg-3build1)<br></li><li>I became blocked at first on backporting the build dependencies for the pyqt5-sip / PyQt5.sip and many other pyqt5 packages.  Not sure what the issue was (I've never seen or used PyQt5 or SIP before this... seemed like a large rabbit hole)</li></ul><li> sip5 5.5.0+dfsg-1 + pyqt-builder / python3-pyqtbuild 1.6.0+dfsg-1<br> + pyqt5-sip / <span style="color:rgb(0,0,0)">python3-pyqt5.sip<br> 12.8.1-1 + pyqt5 </span><span style="color:rgb(0,0,0)">5.15.2+dfsg-1 (all backported)</span><br></li><ul><li><font color="#000000">Again, just added the patch Calibre's setup.py to use Python3</font></li><li><font color="#000000">This time it's missing a package: python3-pyqt5.qtwebengine<br><br>dpkg-checkbuilddeps: error: Unmet build dependencies: python3-pyqt5.qtwebengine (>= 5.12.1-4+b1)</font> </li></ul></ul></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><pre style="font-family:courier,"courier new",monospace;font-size:14px;white-space:pre-wrap;margin-top:0px;margin-bottom:0px;color:rgb(0,0,0)">You can see this in Debian: after I uploaded new PyQt5 (built with SIP 5) to
unstable, immediately some packages started to fail to build from source:

- <a rel="nofollow" href="https://bugs.debian.org/971173" style="color:rgb(160,30,30)">https://bugs.debian.org/971173</a> (krita)
- <a rel="nofollow" href="https://bugs.debian.org/971217" style="color:rgb(160,30,30)">https://bugs.debian.org/971217</a> (python-poppler-qt5)
- <a rel="nofollow" href="https://bugs.debian.org/971172" style="color:rgb(160,30,30)">https://bugs.debian.org/971172</a> (veusz)

And packages that were not rebuilt got runtime errors:

- <a rel="nofollow" href="https://bugs.debian.org/971538" style="color:rgb(160,30,30)">https://bugs.debian.org/971538</a> (qgis)
- <a rel="nofollow" href="https://bugs.debian.org/970921" style="color:rgb(160,30,30)">https://bugs.debian.org/970921</a> (calibre)

So what I said is true: this requires simultaneous changes in many packages,
even if it's just a rebuild for some of them.</pre></blockquote><div><br></div><div><br></div><div>I think if I or someone else here can figure out how to get python3-pyqt5.qtwebengine to build, then Calibre may also be able to build with this set of dependencies.  Note, I'm not an "official" Debian or Ubuntu developer and have not gone through the onboarding / mentorship process to become one.  So for now, these efforts are for a Focal targeted PPA only.  However, with some help this could be the first step towards getting an official set into focal-backports.</div><div><br></div><div>I would appreciate any help with figuring out how to get that last python3-pyqt5.qtwebengine package to be generated from the pyqt5 source package.  I'm assuming this is where it comes from, given that all the other similarly named ones were generated from that one.  Also, the Debian package site shows this as the source package: <a href="https://packages.debian.org/stretch/python3-pyqt5.qtwebengine">https://packages.debian.org/stretch/python3-pyqt5.qtwebengine</a></div><div><br></div><div>Thanks,</div><div>- James Cuzella</div></div>