Bug 455233

Summary: digiKam bundles build from Binary Factory with Craft are compiled with Qt 5.15.2, not 5.15.3 or later
Product: [Unmaintained] Craft Reporter: caulier.gilles
Component: BlueprintsAssignee: Hannah von Reth <vonreth>
Status: RESOLVED FIXED    
Severity: major CC: kde-windows, metzpinguin
Priority: NOR    
Version: master   
Target Milestone: ---   
Platform: Other   
OS: Other   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description caulier.gilles 2022-06-14 05:46:41 UTC
Hi,

This problem affect all Craft targets build with the binary factory and all Qt applications compiled, not only digiKam.

As i can see, Qt 5.15.2 is used to compile digiKam with Craft:

https://invent.kde.org/packaging/craft-blueprints-kde/-/blob/master/libs/qt5/version.ini

Qt 5.15.3 is out and must be used instead, as plenty of important bugs are now fixed with this release.

Especially for digiKam, which use QtSQL plugin for Mysql/Mariadb database to host collection metadata, Qt5.15.2 is NOT compatible with stable version of Mysql version > 10.5. If digiKam is used with Synlogy NAS for ex, to host collection and databases as remote drive, digiKam will make a mess and will finally crash at startup. There is no way to fix this problem in application side, as the dysfunction is located in QtSql plugin. We receive plenty of reports about this problem in bugzilla.

Please upgrade Qt to 5.15.3 or later in Craft framework.

Thanks in advance

Gilles Caulier
Comment 1 Hannah von Reth 2022-07-15 10:10:27 UTC
We are now using 5.15.5
Comment 2 caulier.gilles 2022-07-20 07:27:43 UTC
Hi Hannah,

As Qt 5.15.5 is now used in Craft master, I  would expect to found the QtMysql plugin, but in fact no.

Looking in system admin build tool repository, i cannot see a specific option to disable mysql plugin, excepted to MacOS target.

I just check the last digiKam ApppImage, and the bundle as only the sqlite plugin.
Any guidance will help...

Thanks in advance
Gilles Caulier
Comment 3 Hannah von Reth 2022-07-20 08:43:09 UTC
Hi Giles,
As shipping mysql as part of a bundle is basically impossible we build Qt without mysql bindings.
https://invent.kde.org/packaging/craft-blueprints-kde/-/blob/master/libs/qt5/qtbase/qtbase.py#L13
Comment 4 caulier.gilles 2022-07-20 10:49:24 UTC
Hi hannah,

Why it's impossible ? We don't need the whole mysql  package to build the QtMysql plugin.

MXE project use the libmysqlclient to cross compile QtMysql plugin for windows for ex. It work like a charm.

https://dev.mysql.com/downloads/c-api/

I don't talk about the Mysql binaries suite, which can be installed on the client computer by end users. 

At let's if we provide the Qt::Sql plugin for Mysql/Mariadb, this will solve 90% of the problematic (at least for digiKam)

Best

Gilles
Comment 5 Hannah von Reth 2022-07-20 11:02:13 UTC
(In reply to caulier.gilles from comment #4)
> Hi hannah,
> 
> Why it's impossible ? We don't need the whole mysql  package to build the
> QtMysql plugin.
> 
> MXE project use the libmysqlclient to cross compile QtMysql plugin for
> windows for ex. It work like a charm.
> 
> https://dev.mysql.com/downloads/c-api/
> 
> I don't talk about the Mysql binaries suite, which can be installed on the
> client computer by end users. 
> 
> At let's if we provide the Qt::Sql plugin for Mysql/Mariadb, this will solve
> 90% of the problematic (at least for digiKam)
> 
> Best
> 
> Gilles

Previously we shipped the mysql binary with qt on Windows.
We never did that for the other platforms.

The mysql plugin links agains mysql so we would need to deploy (and build) the whole mysql stack on Linux and Mac and ideally we would not use a prebuild mysql on Windows.

How this bundled mysql will then interact with the system daemon mysql I do not know.