Hello, 

Thanks a lot for the patch. I was in the process of making something similar, 
but it was not as neat as what you sent ! I have also realised that what I 
wrote before was inaccurate, as I confused the default backends and the built 
backends in the somewhat misleading messages during configuration. The sqlite 
backend is thus always built as it is a dependency, even though it is not 
necessary the default one. 

> This looks like akonadi is building a qt4 sql plugin driver and places it in 
> a different path then the qt4-mac-*sql*-plugin ports. Does akonadi really 
> need to do this?
> 
> Can akonadi use the qt4-mac-*sql*-plugin plugins?

I tested akonadi with the akonadiconsole application provided by kdepim4 port, 
and I can confirm that it requires the qt4-mac-*-plugin ports in order to work, 
at least for the mysql driver. Furthermore, it never installs its own plugin 
for something else than sqlite. What you propose seem therefore correct, where 
akonadi uses the qt4-mac plugins, apart from the case of sqlite where it also 
installs its own library.

> variant mysql51 \
>    conflicts sqlite mysql5 mysql55 mariadb percona \
>    description {build with mysql51 port} {
> 
>    depends_lib-append      port:qt4-mac-mysql51-plugin
>    configure.args-append   -DDATABASE_BACKEND=MYSQL
> }
In addition to this, I seems to me that it is necessary to add also an argument 
like -DMYSQLD_EXECUTABLE=${prefix}/lib/mysql51/bin/mysqld in order to ensure 
that akonadi links to the proper mysql executable. 

> I wonder if akonadi can be built without committing to a DATABASE_BACKEND?


>From the cmake files, it seems that if no DATABASE_BACKEND is provided, it 
>defaults to MYSQL, so that it is anyway required. 

Cheers, 

Nicolas

On Dec 8, 2012, at 8:54 AM, Bradley Giesbrecht <[email protected]> wrote:

> On Dec 7, 2012, at 5:17 AM, Nicolas Pavillon wrote:
> 
>> Hello, 
>> 
>> I just took maintainership of akonadi, so I did not yet take the time to 
>> look much at the port.
>> 
>>> The akonadi port should provide variants to let the user choose which of 
>>> the many mysql ports should be used to satisfy the mysql dependency—as 
>>> should any other ports depending on mysql. 
>> 
>> I will look into this, in particular since mariadb for instance is also 
>> explicitly referenced as a viable substitute for mysql. 
>> 
>>>> $ port contents mysql55 | grep mysqld
>>>> …
>>>> /opt/macports-test/lib/mysql55/bin/mysqld
>> 
>> The variants to be made should also take care of the paths problems, 
>> especially since they appear to change depending on the version:
>> 
>> $ port contents mysql5 | grep mysqld
>> 
>> /opt/local/libexec/mysqld
>> (among other things). 
>> Akonadi is anyway presently announced as depending on mysql5. So mysql55 
>> should have no links with this issue. 
>> 
>>>> In port akonadi one finds
>>>> ---
>>>> depends_run-append  path:libexec/mysqld:mysql5-server
>>>> configure.args-append  -DDATABASE_BACKEND=MYSQL
>> 
>> Finally, by looking at it, I realised these instructions are outdated. As 
>> for now, the port builds for sqlite anyway because of misconfiguration. The 
>> port will need rewrite anyway. 
>> 
>> Cheers, 
>> 
>> Nicolas
>> 
>> On Dec 7, 2012, at 9:54 PM, Ryan Schmidt <[email protected]> wrote:
>> 
>>> 
>>> On Dec 6, 2012, at 11:52, [email protected] wrote:
>>> 
>>>> On Dec 5, 2012, at 9:53 AM, Bradley Giesbrecht wrote:
>>>>>>  $ port installed mysql*
>>>>>>  The following ports are currently installed:
>>>>>>  mysql5 @5.1.66_2 (active)
>>>>>>  mysql5-server @5.1.66_1 (active)
>>>>>>  mysql55 @5.5.28_2 (active)
>>>>> 
>>>>> It looks like mysql55 is installed?
>>>>> Are you suggesting the qt4-mac-mysql55-plugin should depend on 
>>>>> mysql55-server instead of mysql55??
>>>> 
>>>> Hmm, well, I just didn't expect to see mysql5-server 5.1.66…
>>>> 
>>>> But it looks like akonadi is responsible for this:
>>>> ---
>>>> $ port dependents mysql5-server
>>>> akonadi depends on mysql5-server
>>>> ---
>>>> 
>>>> In port akonadi one finds
>>>> ---
>>>> depends_run-append  path:libexec/mysqld:mysql5-server
>>>> configure.args-append  -DDATABASE_BACKEND=MYSQL
>>>> ---
>>>> which means that only if path:libexec/mysqld can't be found mysql5-server 
>>>> would be installed.
>>>> 
>>>> But mysql55 supplies mysqld at a different location:
>>>> ---
>>>> $ port contents mysql55 | grep mysqld
>>>> …
>>>> /opt/macports-test/lib/mysql55/bin/mysqld
>>>> …
>>>> ---
>>>> which would require a different path, i.e. path:lib/mysql55/bin/mysqld…
>>>> 
>>>> I wonder how such a case could be handled. It looks like the akonadi port 
>>>> needs an update here!!!
>>> 
>>> The akonadi port should provide variants to let the user choose which of 
>>> the many mysql ports should be used to satisfy the mysql dependency—as 
>>> should any other ports depending on mysql. 
> 
> $ port provides /opt/local/{lib,share}/qt4/plugins/sqldrivers/lib*
> /opt/local/lib/qt4/plugins/sqldrivers/libqsqlite3.dylib is provided by: 
> akonadi
> /opt/local/share/qt4/plugins/sqldrivers/libqsqlite.dylib is provided by: 
> qt4-mac-sqlite3-plugin
> /opt/local/share/qt4/plugins/sqldrivers/libqsqlmysql.dylib is provided by: 
> qt4-mac-mysql5-plugin
> /opt/local/share/qt4/plugins/sqldrivers/libqsqlpsql.dylib is provided by: 
> qt4-mac-postgresql90-plugin
> 
> This looks like akonadi is building a qt4 sql plugin driver and places it in 
> a different path then the qt4-mac-*sql*-plugin ports. Does akonadi really 
> need to do this?
> 
> Can akonadi use the qt4-mac-*sql*-plugin plugins?
> 
> After building the demos/sqlbrowser in qt4 sources I am able to connect to 
> and browser the MacPorts sqlite registry.db with both the QSQLITE plugin 
> provided by qt4-mac-sqlite3-plugin and the QSQLITE3 plugin provided by 
> akonadi.
> 
> I think it would be super if akonadi could use what ever sql qt4-mac can use.
> 
> Here is what I'm trying to test with akonadi currently:
> ......................................................................................................
> variant sqlite \
>    conflicts mysql5 mysql51 mysql55 mariadb percona \
>    description {Use sqlite backend instead of MySQL} {
> 
>    depends_lib-append      port:qt4-mac-sqlite3-plugin          
>    configure.args-append   -DDATABASE_BACKEND=MYSQL
> }
> 
> variant mysql5 \
>    conflicts sqlite mysql51 mysql55 mariadb percona \
>    description {build with mysql5 port} {
> 
>    depends_lib-append      port:qt4-mac-mysql5-plugin
>    configure.args-append   -DDATABASE_BACKEND=MYSQL
> }
> 
> variant mysql51 \
>    conflicts sqlite mysql5 mysql55 mariadb percona \
>    description {build with mysql51 port} {
> 
>    depends_lib-append      port:qt4-mac-mysql51-plugin
>    configure.args-append   -DDATABASE_BACKEND=MYSQL
> }
> 
> variant mysql55 \
>    conflicts sqlite mysql5 mysql51 mariadb percona \
>    description {build with mysql55 port} {
> 
>    depends_lib-append      port:qt4-mac-mysql55-plugin
>    configure.args-append   -DDATABASE_BACKEND=MYSQL
> }
> 
> variant mariadb \
>    conflicts sqlite mysql5 mysql51 mysql55 percona \
>    description {build with mariadb port} {
> 
>    depends_lib-append      port:qt4-mac-mariadb-plugin
>    configure.args-append   -DDATABASE_BACKEND=MYSQL
> }
> 
> variant percona \
>    conflicts sqlite mysql5 mysql51 mysql55 mariadb \
>    description {build with percona port} {
> 
>    depends_lib-append      port:qt4-mac-percona-plugin
>    configure.args-append   -DDATABASE_BACKEND=MYSQL
> }
> ......................................................................................................
> 
> I wonder if akonadi can be built without committing to a DATABASE_BACKEND?
> 
> 
> Regards,
> Bradley Giesbrecht (pixilla)
> 

_______________________________________________
macports-dev mailing list
[email protected]
http://lists.macosforge.org/mailman/listinfo/macports-dev

Reply via email to