Wednesday, 23 December 2020

Re: Ubuntu Focal update of broken Calibre package

Hi James!

On Tue, Dec 22, 2020 at 06:11:15PM -0700, James Cuzella wrote:
> Yes! Qt5 is indeed a very large project too! I'm sure there is a Lord of
> the Rings meme that applies here like: "One does not simply backport Qt5" 😄

This is true :)

> Simply using the backportpackage tool on qtwebengine-opensource-src started
> a build dependency hunt that resulted in finding a massive set of Qt5
> packages that needed to be backported (without relaxing version
> constraints).
> A lot of these eventually resolved into being blocked on circular
> dependency chains.
> I was able to spend a few hours on this to visually represent what I found
> (See Gist linked below):
> I'm not sure how the Debian or Ubuntu teams build and backport Qt5 packages
> when so many build dependencies resolve circularly.
> I suppose they must bootstrap this dependency chain somehow, but it seems
> like more work than I have time to figure out at the moment.

Yes, in Ubuntu we bootstrap the packages manually for every new Qt release.

If you build packages locally, you can follow the instruction in qtbase's
debian/README.source (I have just pushed a minor update for it):

If you are pushing packages to a PPA, you can use the following procedure:

- Push qtbase and qtdeclarative where the -doc and -doc-html packages, and
also all Build-Depends-Indep are removed.

- Push qttools with the same change, and additionally remove libqt5webkit5-dev
build-dependency and make qwebview_archs empty in debian/rules.

- Wait until qttools builds on amd64, then push the normal versions of all

In Debian this bootstrapping happens automatically because Debian does
separate builds for "amd64" (arch-dependent) and "all" (arch-indep)

Also keep in mind that if you update Qt, you will also need to do no-change
rebuilds of packages that depend on qtbase-abi-5-x-y virtual package or on
qtdeclarative-abi-5-x-y (usually these are packages that use private ABI).
Otherwise they can stop working.

Dmitry Shachnev