Re: [debian-mysql] Introducing default-mysql-* metapackages

2016-09-07 Thread Ondřej Surý
Robie,

I have no idea why are you talking about -compat packages and mariadb
shipping libmysqlclient.

The initial email stated:

> Packages built against default-mysqlclient-dev and link using
> "-lmysqlclient" will end up with a shared library dependency on either
> libmysqlclient.so.X or libmariadbclient.so.X depending on the default
> defined by the release team at build time. These will be provided by
> the libmysqlclient18 (soon to be libmysqlclient20) and
> libmariadbclient18 packages, which will be co-installable. Packages
> which require particular functionality available from only one of the
> forks may Build-Depend directly on libmysqlclient-dev or
> libmariadbclient-dev and then link using "-lmysqlclient" or
> "-lmariadbclient" respectively. Again, please get in touch if this
> applies to you.

But I don't care that much to continue this discussion as you clearly
seem to have strong opinion about that.

You (as the pkg-mysql team) are the one who will be clearing the mess in
the release, so it's definitely up to you how you want to handle this. I
expressed my opinion and I will not pursue this discussion further.

Cheers,
-- 
Ondřej Surý 
Knot DNS (https://www.knot-dns.cz/) – a high-performance DNS server
Knot Resolver (https://www.knot-resolver.cz/) – secure, privacy-aware,
fast DNS(SEC) resolver
Vše pro chleba (https://vseprochleba.cz) – Potřeby pro pečení chleba
všeho druhu

On Wed, Sep 7, 2016, at 12:09, Robie Basak wrote:
> On Tue, Sep 06, 2016 at 09:00:37AM +0200, Ondřej Surý wrote:
> > So again I urge you to revert the decision to introduce yet another
> > change in the Build-Depends for >= 300 packages and just use the
> > libmysqlclient-dev package to be the "default".
> 
> Sorry, I disagree. The situation with MariaDB needing to ship
> libmysqlclient.so is broken. I'd prefer to restrict this insanity to the
> -compat package only.
> 
> This way:
> 
>   * The insanity only slips further to the defaults- package but no
>   further.
> 
>   * Packages that don't have to be involved don't get dragged in.
> 
>   * The "shoulds" in package naming in Debian policy (8.1/8.4) are met.
> 
> Robie
> 



Re: [debian-mysql] Introducing default-mysql-* metapackages

2016-09-07 Thread Robie Basak
On Tue, Sep 06, 2016 at 09:00:37AM +0200, Ondřej Surý wrote:
> So again I urge you to revert the decision to introduce yet another
> change in the Build-Depends for >= 300 packages and just use the
> libmysqlclient-dev package to be the "default".

Sorry, I disagree. The situation with MariaDB needing to ship
libmysqlclient.so is broken. I'd prefer to restrict this insanity to the
-compat package only.

This way:

  * The insanity only slips further to the defaults- package but no further.

  * Packages that don't have to be involved don't get dragged in.

  * The "shoulds" in package naming in Debian policy (8.1/8.4) are met.

Robie



Re: [debian-mysql] Introducing default-mysql-* metapackages

2016-09-06 Thread Ondřej Surý
Robie,

there's exactly similar situation with libjpeg62. There's a default
libjpeg-dev package that depends on libjpeg62-turbo-dev

ondrej@yugen:~$ apt-file show libjpeg62-turbo
libjpeg62-turbo: /usr/lib/x86_64-linux-gnu/libjpeg.so.62
libjpeg62-turbo: /usr/lib/x86_64-linux-gnu/libjpeg.so.62.2.0
[...]
ondrej@yugen:~$ apt-file show libjpeg62-turbo-dev
libjpeg62-turbo-dev: /usr/lib/x86_64-linux-gnu/libjpeg.a
libjpeg62-turbo-dev: /usr/lib/x86_64-linux-gnu/libjpeg.so
[...]

I still think that the right solution would be to change the
libmysqlclient-dev to empty dependency package depending on
libmysqlclientXX-dev or libmariadbclientXX-dev and not to force all >=
300 packages to change Build-Depends in the debian/control.

> Having a package build depend on libmysqlclient-dev, link with
> "-lmysqlclient" and then up with with a binary dependency on
> libmariadbclient.so.18 would be wrong, IMHO.

Here I disagree, exactly because what you write here:

> We then have the need for a "default" package, libmysqlclient-dev is
> already taken, and default-libmysqlclient-dev follows the same pattern
> as the others. It is perhaps a little confusing because as long as the
> default is MariaDB, packages using it will end up with a binary
> dependency on libmariadbclient.so.18 from libmariadbclient-dev instead,
> but I think that all the other options we've considered are worse.

You'll end up with the exactly same situation. And I suspect nobody
really care about the client library used as long as it works. And it
would be substantially less work for other people to fix the few
packages that will break.

I did some big library transitions in the past and I think it is your
responsibility as a maintainer to test such a change.

So again I urge you to revert the decision to introduce yet another
change in the Build-Depends for >= 300 packages and just use the
libmysqlclient-dev package to be the "default".

Cheers,
-- 
Ondřej Surý 
Knot DNS (https://www.knot-dns.cz/) – a high-performance DNS server
Knot Resolver (https://www.knot-resolver.cz/) – secure, privacy-aware,
fast DNS(SEC) resolver
Vše pro chleba (https://vseprochleba.cz) – Potřeby pro pečení chleba
všeho druhu

On Mon, Sep 5, 2016, at 19:59, Robie Basak wrote:
> Hi Ondřej,
> 
> On Mon, Sep 05, 2016 at 08:57:57AM +0200, Ondřej Surý wrote:
> > could you elaborate a bit more why you are forcing all Build-RDeps to
> > change B-D to default-libmysqlclient-dev instead of just changing the
> > semantics of libmysqlclient-dev?
> 
> MySQL ships the soname libmysqlclient.so.20 (in experimental currently,
> 18 in unstable and testing) and continues to be maintained in Debian. So
> the expected package names to get libmysqlclient.so.20 are
> libmysqlclient20 and libmysqlclient-dev, according to Debian policy
> sections 8.1 and 8.4. libmysqlclient-dev should result in a link against
> MySQL's libmysqlclient.so.
> 
> MariaDB upstream do also ship libmysqlclient.so.18 (forked from an older
> MySQL), but clearly it would be insane to ship this in Debian in the
> same way because of the soname conflict. I understand why MariaDB
> upstream have done it this way, but their expected use case is that a
> user would pick MariaDB and drop everything MySQL. Since we're not doing
> that in Debian, this cannot work. So instaed, it makes sense for us to
> ship separate sonames, so we are patching MariaDB to build
> libmariadbclient.so.18 instead.
> 
> Having a package build depend on libmysqlclient-dev, link with
> "-lmysqlclient" and then up with with a binary dependency on
> libmariadbclient.so.18 would be wrong, IMHO.
> 
> That's why I want to leave libmysqlclient-dev alone, and why we're
> moving this necessary insanity to libmariadbclient-dev-compat instead.
> Then it's clear.
> 
> We then have the need for a "default" package, libmysqlclient-dev is
> already taken, and default-libmysqlclient-dev follows the same pattern
> as the others. It is perhaps a little confusing because as long as the
> default is MariaDB, packages using it will end up with a binary
> dependency on libmariadbclient.so.18 from libmariadbclient-dev instead,
> but I think that all the other options we've considered are worse.
> 
> At least this way the insanity is limited to the -compat package, and by
> extension the default- package, but everything else will appear as
> normal.
> 
> Robie



Re: [debian-mysql] Introducing default-mysql-* metapackages

2016-09-05 Thread Clint Byrum
Excerpts from Robie Basak's message of 2016-09-05 18:59:39 +0100:
> Hi Ondřej,
> 
> On Mon, Sep 05, 2016 at 08:57:57AM +0200, Ondřej Surý wrote:
> > could you elaborate a bit more why you are forcing all Build-RDeps to
> > change B-D to default-libmysqlclient-dev instead of just changing the
> > semantics of libmysqlclient-dev?
> 
> MySQL ships the soname libmysqlclient.so.20 (in experimental currently,
> 18 in unstable and testing) and continues to be maintained in Debian. So
> the expected package names to get libmysqlclient.so.20 are
> libmysqlclient20 and libmysqlclient-dev, according to Debian policy
> sections 8.1 and 8.4. libmysqlclient-dev should result in a link against
> MySQL's libmysqlclient.so.
> 
> MariaDB upstream do also ship libmysqlclient.so.18 (forked from an older
> MySQL), but clearly it would be insane to ship this in Debian in the
> same way because of the soname conflict. I understand why MariaDB
> upstream have done it this way, but their expected use case is that a
> user would pick MariaDB and drop everything MySQL. Since we're not doing
> that in Debian, this cannot work. So instaed, it makes sense for us to
> ship separate sonames, so we are patching MariaDB to build
> libmariadbclient.so.18 instead.
> 

I don't think we should gloss over this activity by MariaDB.  They're
completely aware of the fact that they're breaking with all norms by
shipping a _forked_ API with the same soname as an established one.

There's simply no reason for this to be entertained as anything other
than aggressive anti-mysql activity. They could easily ship the original
libmysqlclient API in a wrapper, and then build any new functionality
into a mariadbclient so that users who link to the new one know they
are dependent on MariaDB's new functionality.

IMO, until they stop doing this, I don't think Debian should help them
subvert MySQL by shipping this API under mysqlclient's soname.



Re: [debian-mysql] Introducing default-mysql-* metapackages

2016-09-05 Thread Robie Basak
Hi Ondřej,

On Mon, Sep 05, 2016 at 08:57:57AM +0200, Ondřej Surý wrote:
> could you elaborate a bit more why you are forcing all Build-RDeps to
> change B-D to default-libmysqlclient-dev instead of just changing the
> semantics of libmysqlclient-dev?

MySQL ships the soname libmysqlclient.so.20 (in experimental currently,
18 in unstable and testing) and continues to be maintained in Debian. So
the expected package names to get libmysqlclient.so.20 are
libmysqlclient20 and libmysqlclient-dev, according to Debian policy
sections 8.1 and 8.4. libmysqlclient-dev should result in a link against
MySQL's libmysqlclient.so.

MariaDB upstream do also ship libmysqlclient.so.18 (forked from an older
MySQL), but clearly it would be insane to ship this in Debian in the
same way because of the soname conflict. I understand why MariaDB
upstream have done it this way, but their expected use case is that a
user would pick MariaDB and drop everything MySQL. Since we're not doing
that in Debian, this cannot work. So instaed, it makes sense for us to
ship separate sonames, so we are patching MariaDB to build
libmariadbclient.so.18 instead.

Having a package build depend on libmysqlclient-dev, link with
"-lmysqlclient" and then up with with a binary dependency on
libmariadbclient.so.18 would be wrong, IMHO.

That's why I want to leave libmysqlclient-dev alone, and why we're
moving this necessary insanity to libmariadbclient-dev-compat instead.
Then it's clear.

We then have the need for a "default" package, libmysqlclient-dev is
already taken, and default-libmysqlclient-dev follows the same pattern
as the others. It is perhaps a little confusing because as long as the
default is MariaDB, packages using it will end up with a binary
dependency on libmariadbclient.so.18 from libmariadbclient-dev instead,
but I think that all the other options we've considered are worse.

At least this way the insanity is limited to the -compat package, and by
extension the default- package, but everything else will appear as
normal.

Robie



Re: Introducing default-mysql-* metapackages

2016-09-05 Thread Otto Kekäläinen
Hello!

2016-09-05 9:57 GMT+03:00 Ondřej Surý :
> could you elaborate a bit more why you are forcing all Build-RDeps to
> change B-D to default-libmysqlclient-dev instead of just changing the
> semantics of libmysqlclient-dev?
>
> I understand the default-mysql-client and default-mysql-server, but I
> don't understand the change from libmysqlclient-dev to
> default-libmysqlclient-dev.
>
> We have a couple of similar cases that doesn't require that much work
> (f.e. libjpeg-dev) and renaming the original libmysqlclient-dev to
> libmysqlclient-oracle-dev and adding Provides: libmysqlclient-dev to
> libmariadbclient-dev would achieve the same thing and require a
> substantially less work on the other people side.

Thanks for the suggestion. This method was not discussed earlier when
the pkg-mysql-maint team designed the new mysql-defaults metapackages.
I would be fine by doing what you suggest. What does Robie and others
who are more vested in maintaining Oracle packages think about this?

- Otto



Re: Introducing default-mysql-* metapackages

2016-09-04 Thread Ondřej Surý
Folks,

could you elaborate a bit more why you are forcing all Build-RDeps to
change B-D to default-libmysqlclient-dev instead of just changing the
semantics of libmysqlclient-dev?

I understand the default-mysql-client and default-mysql-server, but I
don't understand the change from libmysqlclient-dev to
default-libmysqlclient-dev.

We have a couple of similar cases that doesn't require that much work
(f.e. libjpeg-dev) and renaming the original libmysqlclient-dev to
libmysqlclient-oracle-dev and adding Provides: libmysqlclient-dev to
libmariadbclient-dev would achieve the same thing and require a
substantially less work on the other people side.

Cheers,
-- 
Ondřej Surý 
Knot DNS (https://www.knot-dns.cz/) – a high-performance DNS server
Knot Resolver (https://www.knot-resolver.cz/) – secure, privacy-aware,
fast DNS(SEC) resolver
Vše pro chleba (https://vseprochleba.cz) – Potřeby pro pečení chleba
všeho druhu

On Sun, Sep 4, 2016, at 09:14, Otto Kekäläinen wrote:
> Hello maintainers of packages that depend in MySQL/MariaDB!
> 
> TL;DR;
> 
> Please update packages that depend on MySQL or MariaDB as follows:
> 
> BEFORE: Build-Depends: libmysqlclient-dev
> AFTER: Build-Depends: default-libmysqlclient-dev
> 
> BEFORE: Depends: mysql-server | virtual-mysql-server
> OR Depends: mariadb-server | virtual-mysql-server
> AFTER: Depends: default-mysql-server | virtual-mysql-server
> 
> BEFORE: Depends: mysql-client | virtual-mysql-client
> OR Depends: mariadb-client | virtual-mariadb-client
> AFTER: Depends: default-mysql-client | virtual-mysql-client
> 
> 
> Details follow:
> 
> The release team decided earlier in the spring that MariaDB should be
> made the default MySQL variant in Debian. The release team also wished
> to have a facility that allows easy switching of the default.
> 
> Therefore we have introduced the following metapackages
> from the mysql-defaults source package:
> - default-mysql-server
> - default-mysql-server-core
> - default-mysql-client
> - default-mysql-client-core
> - default-libmysqlclient-dev
> 
> All maintainers of packages that currently depend directly on
> mysql-server, mariadb-server, or any of the other packages in these
> series, shall update the dependencies in their packages to point to
> default-mysql-* instead.
> 
> Installing the metapackage default-mysql-server will pull in
> mariadb-server-10.0. Users who had mysql-server-5.6 will have it
> removed and replaced by the MariaDB equivalent on upgrade. Note that
> once you have switched to MariaDB, it might not possible to convert
> your in-place database files back to MySQL automatically, since Oracle
> does not maintain tools to convert possible MariaDB features present
> in the binary format. Please back up your data first if you wish to
> switch or experiment. Manual dump/import is the most reliable way to
> import data from one installation to another.
> 
> A virtual package scheme virtual-mysql-* already exists since 2013,
> and will continue to exist. All MySQL variants in Debian (and outside
> in 3rd party repositories too) have Provides for these virtual-mysql-*
> packages. Maintainers can must use "Depends: default-mysql-server |
> virtual-mysql-server" if their package can be satisfied by any MySQL
> variant (Oracle, MariaDB, Percona, mysql-wsrep).
> 
> The first dependency should be default-mysql-*, which is a
> metapackage, that in turn depends on exactly one option, which for now
> is MariaDB.
> 
> If a maintainer knows that his/her package only works with one
> variant, then the package can depend directly on that package and not
> use the default-mysql-* (matches one) or virtual-mysql-* (matches any)
> schemes. Please get in touch if this applies to you. At the moment
> there should be no such packages, but in the future cases like this
> can arise when MySQL and MariaDB develop diverging feature sets.
> 
> Packages built against default-mysqlclient-dev and link using
> "-lmysqlclient" will end up with a shared library dependency on either
> libmysqlclient.so.X or libmariadbclient.so.X depending on the default
> defined by the release team at build time. These will be provided by
> the libmysqlclient18 (soon to be libmysqlclient20) and
> libmariadbclient18 packages, which will be co-installable. Packages
> which require particular functionality available from only one of the
> forks may Build-Depend directly on libmysqlclient-dev or
> libmariadbclient-dev and then link using "-lmysqlclient" or
> "-lmariadbclient" respectively. Again, please get in touch if this
> applies to you.
> 
> Users that want to rebuild packages against a different variant of
> lib*client-dev for experimenting and testing locally should prefer
> using a locally modified default-libmysqlclient-dev over modifying
> each client application source package individually.
> 
> The default-mysql-* metapackages have been available in experimental
> since July, and since also in unstable and testing, and we are
> confident there are no regressio

Re: [debian-mysql] Introducing default-mysql-* metapackages

2016-08-16 Thread Rene Engelhard
Hi,

On Tue, Aug 16, 2016 at 11:36:15AM +0300, Otto Kekäläinen wrote:
> Yes, this scheme is very flexible and in cases like   
> > mysql-connector-c++ the package can depend explicitly on the MySQL  
>   > package and not the default package.

OK.

> > Or we keep a working version with MariaDB, but then again there's other
> > packages like mysql-workbench also wanting 1.1.7 (and thus MySQL 5.7)...
> 
> I think mysql-workbench works just fine with MariaDB, it only
> complains about the version string not being what it assumes as it
> thinks 10.0 < 5.x and it requires 5.x or later. Somebody should patch
> mysql-workbench to do proper version string comparison.

Sure, but TTBOMK it wants Connector/C >= 1.1.7 which then in turn needs
libmysqlclient-dev 5.7. That was the point.

I also think it should be able to _connect_ to a MariaDB then...

Regards,

Rene



Re: [debian-mysql] Introducing default-mysql-* metapackages

2016-08-16 Thread Otto Kekäläinen
Hello!

2016-08-16 7:44 GMT+03:00 Rene Engelhard :
> On Sun, Jul 10, 2016 at 05:22:22PM +0300, Otto Kekäläinen wrote:
>> Hello maintainers of packages that depend in MySQL/MariaDB!
>
> Not everyone is required to read -devel. Mailing them where they read
> it (and be it Cc'ing them) would be better.
>
> I am subscribed to -devel but still missed this mail (though I knew there
> was something ongoing)

That is why we'll send a mail about this to debian-devel-announce soon
to get more visibility.

>> BEFORE: Build-Depends: libmysqlclient-dev
>> AFTER: Build-Depends: default-libmysqlclient-dev
>>
>> BEFORE: Depends: mysql-server | virtual-mysql-server OR Depends:
>> mariadb-server | virtual-mysql-server
>> AFTER: Depends: default-mysql-server | virtual-mysql-server
>>
>> BEFORE: Depends: mysql-client | virtual-mysql-client OR Depends:
>> mariadb-client | virtual-mariadb-client
>> AFTER: Depends: default-mysql-client | default-mysql-client
>  
> ITYM virtual-mysql-client :)

Yes, sorry for the typo.

>> If a maintainer knows that his/her package only works with one
>> variant, then the package can depend directly on that package and not
>> use the default-mysql-* (matches one) or virtual-mysql-* (matches any)
>> schemes. Please get in touch if this applies to you. At the moment
>> there should be no such packages, but in the future cases like this
>> can arise when MySQL and MariaDB develop diverging feature sets.
>
> Well, I know of packages needing MySQL 5.7 and/or failing to build against
> MariaDB for other reasons. e.g. mysql-connector-c++. Upstream is Oracle,
> so they obviously won't care about MariaDB..

Yes, this scheme is very flexible and in cases like
mysql-connector-c++ the package can depend explicitly on the MySQL
package and not the default package. The same applies also for some
packages that use features available in MariaDB but not available in
MySQL.

>> Packages built against default-mysqlclient-dev and link using
>> "-lmysqlclient" will end up with a shared library dependency on either
>> libmysqlclient.so.X or libmariadbclient.so.X depending on the default
>> defined by the release team at build time. These will be provided by
>> the libmysqlclient18 (soon to be libmysqlclient20) and
>> libmariadbclient18 packages, which will be co-installable. Packages
>> which require particular functionality available from only one of the
>> forks may Build-Depend directly on libmysqlclient-dev or
>> libmariadbclient-dev and then link using "-lmysqlclient" or
>> "-lmariadbclient" respectively. Again, please get in touch if this
>> applies to you.
>
> See above.
>
> So this one could still use libmysqlclient-dev?

Yes

> Or we keep a working version with MariaDB, but then again there's other
> packages like mysql-workbench also wanting 1.1.7 (and thus MySQL 5.7)...

I think mysql-workbench works just fine with MariaDB, it only
complains about the version string not being what it assumes as it
thinks 10.0 < 5.x and it requires 5.x or later. Somebody should patch
mysql-workbench to do proper version string comparison.

>> The default-mysql-* metapackages will be uploaded to Experimental soon
>> and to Unstable once we are confident there are no regressions. Once
>> they are available in Unstable, we will announce this on
>
> I have seen those accepted in unstable this morning so.. :)

Yes, it was uploaded 12 hours ago. I didn't have time to announce it
just yet. Stay tuned :)



Re: Introducing default-mysql-* metapackages

2016-08-15 Thread Rene Engelhard
Hi,

On Sun, Jul 10, 2016 at 05:22:22PM +0300, Otto Kekäläinen wrote:
> Hello maintainers of packages that depend in MySQL/MariaDB!

Not everyone is required to read -devel. Mailing them where they read
it (and be it Cc'ing them) would be better.

I am subscribed to -devel but still missed this mail (though I knew there
was something ongoing)

> BEFORE: Build-Depends: libmysqlclient-dev
> AFTER: Build-Depends: default-libmysqlclient-dev
> 
> BEFORE: Depends: mysql-server | virtual-mysql-server OR Depends:
> mariadb-server | virtual-mysql-server
> AFTER: Depends: default-mysql-server | virtual-mysql-server
> 
> BEFORE: Depends: mysql-client | virtual-mysql-client OR Depends:
> mariadb-client | virtual-mariadb-client
> AFTER: Depends: default-mysql-client | default-mysql-client
 
ITYM virtual-mysql-client :)

> If a maintainer knows that his/her package only works with one
> variant, then the package can depend directly on that package and not
> use the default-mysql-* (matches one) or virtual-mysql-* (matches any)
> schemes. Please get in touch if this applies to you. At the moment
> there should be no such packages, but in the future cases like this
> can arise when MySQL and MariaDB develop diverging feature sets.

Well, I know of packages needing MySQL 5.7 and/or failing to build against
MariaDB for other reasons. e.g. mysql-connector-c++. Upstream is Oracle,
so they obviously won't care about MariaDB..

> Packages built against default-mysqlclient-dev and link using
> "-lmysqlclient" will end up with a shared library dependency on either
> libmysqlclient.so.X or libmariadbclient.so.X depending on the default
> defined by the release team at build time. These will be provided by
> the libmysqlclient18 (soon to be libmysqlclient20) and
> libmariadbclient18 packages, which will be co-installable. Packages
> which require particular functionality available from only one of the
> forks may Build-Depend directly on libmysqlclient-dev or
> libmariadbclient-dev and then link using "-lmysqlclient" or
> "-lmariadbclient" respectively. Again, please get in touch if this
> applies to you.

See above.

So this one could still use libmysqlclient-dev?

Or we keep a working version with MariaDB, but then again there's other
packages like mysql-workbench also wanting 1.1.7 (and thus MySQL 5.7)...

> The default-mysql-* metapackages will be uploaded to Experimental soon
> and to Unstable once we are confident there are no regressions. Once
> they are available in Unstable, we will announce this on

I have seen those accepted in unstable this morning so.. :)

Regards,

Rene



Introducing default-mysql-* metapackages

2016-07-10 Thread Otto Kekäläinen
Hello maintainers of packages that depend in MySQL/MariaDB!


TL;DR;

We will soon ask you to change packages that depend on MySQL or
MariaDB as follows:

BEFORE: Build-Depends: libmysqlclient-dev
AFTER: Build-Depends: default-libmysqlclient-dev

BEFORE: Depends: mysql-server | virtual-mysql-server OR Depends:
mariadb-server | virtual-mysql-server
AFTER: Depends: default-mysql-server | virtual-mysql-server

BEFORE: Depends: mysql-client | virtual-mysql-client OR Depends:
mariadb-client | virtual-mariadb-client
AFTER: Depends: default-mysql-client | default-mysql-client

You can already test this in experimental. We will announce when you
should do this in unstable.



Details follow:

The release team decided earlier in the spring that MariaDB should be
made the default MySQL variant in Debian. The release team also wished
to have a facility that allows easy switching of the default.

Therefore we are now about to introduce the following metapackages
from the mysql-defaults source package:
- default-mysql-server
- default-mysql-server-core
- default-mysql-client
- default-mysql-client-core
- default-libmysqlclient-dev

All maintainers of packages that currently depend directly on
mysql-server, mariadb-server, or any of the other packages in these
series, will at a later time be asked to update the dependencies in
their packages to point to default-mysql-* instead.

Installing the metapackage default-mysql-server will pull in
mariadb-server-10.0. Users who had mysql-server-5.6 will have it
removed and replaced by the MariaDB equivalent on upgrade. Note that
once you have switched to MariaDB, it might not possible to convert
your in-place database files back to MySQL automatically, since Oracle
does not maintain tools to convert possible MariaDB features present
in the binary format. Please back up your data first if you wish to
switch or experiment. Manual dump/import is the most reliable way to
import data from one installation to another.

A virtual package scheme virtual-mysql-* already exists since 2013,
and will continue to exist. All MySQL variants in Debian (and outside
in 3rd party repositories too) have Provides for these virtual-mysql-*
packages. Maintainers can must use "Depends: default-mysql-server |
virtual-mysql-server" if their package can be satisfied by any MySQL
variant (Oracle, MariaDB, Percona, mysql-wsrep).

The first dependency should be default-mysql-*, which is a
metapackage, that in turn depends on exactly one option, which for now
is MariaDB.

If a maintainer knows that his/her package only works with one
variant, then the package can depend directly on that package and not
use the default-mysql-* (matches one) or virtual-mysql-* (matches any)
schemes. Please get in touch if this applies to you. At the moment
there should be no such packages, but in the future cases like this
can arise when MySQL and MariaDB develop diverging feature sets.

Packages built against default-mysqlclient-dev and link using
"-lmysqlclient" will end up with a shared library dependency on either
libmysqlclient.so.X or libmariadbclient.so.X depending on the default
defined by the release team at build time. These will be provided by
the libmysqlclient18 (soon to be libmysqlclient20) and
libmariadbclient18 packages, which will be co-installable. Packages
which require particular functionality available from only one of the
forks may Build-Depend directly on libmysqlclient-dev or
libmariadbclient-dev and then link using "-lmysqlclient" or
"-lmariadbclient" respectively. Again, please get in touch if this
applies to you.

Users that want to rebuild packages against a different variant of
lib*client-dev for experimenting and testing locally should prefer
using a locally modified default-libmysqlclient-dev over modifying
each client application source package individually.

The default-mysql-* metapackages will be uploaded to Experimental soon
and to Unstable once we are confident there are no regressions. Once
they are available in Unstable, we will announce this on
debian-devel-announce@ officially and later mass file bugs for
packages that have not updated their dependencies in a reasonable time
otherwise.

If you wish to participate in testing or finalizing this scheme,
please reply to this thread or write to pkg-mysql-maint@.


On behalf ot the pkg-mysql team,

- Otto