Bug 28676

Summary: blocks client software builds
Product: Sisyphus Reporter: Michael Shigorin <mike>
Component: libmysqlclient18Assignee: Michael Shigorin <mike>
Status: CLOSED FIXED QA Contact: Andrey Cherepanov <cas>
Severity: blocker    
Priority: P3 CC: aen, amike, boyarsh, dubrsl, ldv, lnkvisitor.ts, rider
Version: unstable   
Hardware: all   
OS: Linux   
Bug Depends on:    
Bug Blocks: 27685, 28737    

Description Michael Shigorin 2013-03-13 14:59:20 MSK
В сизифе уже несколько месяцев представлены два провайдера libmysqlclient.so.18 (из MySQL и mariadb версий 5.5); из обсуждения майнтейнерами у нас и по другим дистрибутивам на сегодня можно сделать вывод, что предпочтительной реализацией для поддержки в сизифе и следующем стабильном бранче является mariadb.

Вследствие этого в MySQL.spec отключается упаковка клиентской библиотеки и библиотечных заголовков; требуется по возможности всесторонняя проверка.
Comment 1 AEN 2013-03-13 15:08:00 MSK
Давайте обсудим в devel@. Важны возражающие, а не согласные.
Comment 2 Anton Farygin 2013-03-13 15:14:39 MSK
я использую MySQL и на MariaDB переходить не планирую. Если с точки зрения протоколов/API они друг с другом полностью совместимы, то нет смысла держать две библиотеки. Достаточно оставить один libmysqlclient из MySQL, дабы не делать лишнюю работу по пересборке и тестированию. Если же совместимость нарушена, то надо делать libmariadbclient.so.18 и линковать отдельно её клиентов.
Comment 3 Dmitry V. Levin 2013-03-13 15:32:18 MSK
На данный момент мейнтейнеры обеих альтернатив libmysqlclient.so.18 проделали работу по синхронизации ABI, так что на данный момент они являются взаимозаменяемыми.  Самое неочевидное в этой ситуации - сделать обоснованный выбор в пользу одной из альтернатив.
Comment 4 Anton Farygin 2013-03-13 15:42:44 MSK
ну почему же неочевидно ? Явно же если уже слинкованы с libMySQL, то надо и дальше линковаться с ней.
Comment 5 Dmitry V. Levin 2013-03-13 15:53:56 MSK
(In reply to comment #4)
> ну почему же неочевидно ? Явно же если уже слинкованы с libMySQL, то надо и
> дальше линковаться с ней.

Это не libMySQL, а libmysqlclient, у нее есть две реализации с общей историей, и без разглядывания исходного кода и патчей к нему нет оснований делать выбор в пользу одной из них.  По этой причине, насколько я понимаю, вопрос так долго решался.
Comment 6 Michael Shigorin 2013-03-13 17:13:23 MSK
Судя по http://git.altlinux.org/tasks/92472/, придётся придумать, как быть с
именованием пакета с заголовками, и адаптировать mariadb. 

(В ответ на комментарий №2)
> я использую MySQL и на MariaDB переходить не планирую.
О, а посмотришь 5.6, если соберу?  Говорят, довольно много сделали в плане производительности.

> Если с точки зрения протоколов/API они друг с другом полностью совместимы
Сравнение производили и остаточную разницу в три символа урегулировали version script'ом.

> Достаточно оставить один libmysqlclient из MySQL
В том-то и дело, что Fedora с openSUSE даже довольно поздно в релизном цикле собрались сматывать удочки с MySQL как основной реализации в пользу MariaDB: http://lwn.net/Articles/534204/

Мы оочень долго колебались и оттягивали этот шаг, но его всё-таки лучше сделать.

При всём этом я думаю продолжать сопровождать MySQL по мере возможности, но в дистрибутивы рекомендовать класть MariaDB.

Разумеется, соображения и патчи приветствуются.
Comment 7 Dmitry V. Levin 2013-03-18 01:42:18 MSK
К сведению:
[builder@localhost BUILD]$ find * -name libmysql
mariadb-5.5.28a/build/libmysql
mariadb-5.5.28a/libmysql
mysql-5.5.30/libmysql
[builder@localhost BUILD]$ ls mariadb-5.5.28a/build/libmysql/
libmysql.version
[builder@localhost BUILD]$ ln mariadb-5.5.28a/build/libmysql/libmysql.version mariadb-5.5.28a/libmysql/
[builder@localhost BUILD]$ diff -ur mysql-5.5.30/libmysql mariadb-5.5.28a/libmysql |diffstat
 mariadb-5.5.28a/libmysql/CMakeLists.txt      |   14 +-------
 mariadb-5.5.28a/libmysql/CMakeLists.txt.orig |   14 +-------
 mariadb-5.5.28a/libmysql/get_password.c      |   47 +++++++++++----------------
 mariadb-5.5.28a/libmysql/libmysql.c          |   36 +++++++++++++++++---
 mariadb-5.5.28a/libmysql/libmysql.def        |    1 
 mysql-5.5.30/libmysql/authentication_win     |only
 6 files changed, 55 insertions(+), 57 deletions(-)

Уважаемые мейнтейнеры, посмотрите этот diff, примите обоснованное решение и реализуйте его поскорее!
Comment 8 Michael Shigorin 2013-03-18 15:48:40 MSK
(В ответ на комментарий №7)
> Уважаемые мейнтейнеры, посмотрите этот diff, примите обоснованное решение
> и реализуйте его поскорее!
Дим, лучше посмотри сам и посоветуй.  Мне решения разглядыванием сишных диффов обосновывать возможно, но крайне времяёмко.  Славе -- думаю, аналогично.

Повторюсь, как тактический вариант -- могу попробовать собрать MySQL-5.6 с отключенным -devel, они должны разъехаться по soname.
Comment 9 Anton Farygin 2013-03-18 18:54:26 MSK
Слушай, чего вы рассуждаете ?

libMySQL должна быть из пакета MySQL.
libMariaDB должна быть из пакета mariadb
lib<хрень> должна быть из пакета <хрень>

Переименуйте библиотеку в mariadb и радуйтесь жизни. Кому надо - пусть пересобирается и линкуется.
Comment 10 Dmitry V. Levin 2013-03-18 18:57:49 MSK
(In reply to comment #9)
> Слушай, чего вы рассуждаете ?
> 
> libMySQL должна быть из пакета MySQL.
> libMariaDB должна быть из пакета mariadb
> lib<хрень> должна быть из пакета <хрень>
> 
> Переименуйте библиотеку в mariadb и радуйтесь жизни. Кому надо - пусть
> пересобирается и линкуется.

Антон, ты не в теме, libMySQL не должно быть вообще.
libmysqlclient - это единый интерфейс к разным реализациям mysqld, в том числе расположенным на других хостах.
Comment 11 Anton Farygin 2013-03-18 19:00:42 MSK
Отлично, но каким боком тут MariaDB ?

Если сейчас она поддерживает протокол MySQL, то это не значит, что она будет его поддерживать через год или два. Верно ?
Comment 12 Dmitry V. Levin 2013-03-18 19:09:33 MSK
(In reply to comment #11)
> Отлично, но каким боком тут MariaDB ?
> 
> Если сейчас она поддерживает протокол MySQL, то это не значит, что она будет
> его поддерживать через год или два. Верно ?

Я не знаю, что у них там будет через год или два.
Сейчас у них библиотека с одинаковым soname libmysqlclient.so.18 и одинаковым ELF symbol versioning.  Поэтому пакет libmysqlclient18 должен быть один.  Желательно из того пакета, который мы будем регулярно обновлять, поддерживать и продвигать в дистрибутивы.
Comment 13 AEN 2013-03-18 19:14:57 MSK
(В ответ на комментарий №11)
> Отлично, но каким боком тут MariaDB ?
> 
> Если сейчас она поддерживает протокол MySQL, то это не значит, что она будет
> его поддерживать через год или два. Верно ?

И наоборот тоже верно.
На самом деле, решение Fedora и Opensuse -- довольно весомый аргумент. Скорее Oracle забросит MySQL. 
Но. 2ldv@: насколько я понимаю, сборка mariadb не в чруте?
Comment 14 Slava Dubrovskiy 2013-03-18 19:23:07 MSK
(In reply to comment #13)
> Но. 2ldv@: насколько я понимаю, сборка mariadb не в чруте?

Нет. Я вытаскивал специально из чрута когда-то, т.к. mmm нормально в нем не работал. http://lists.altlinux.org/pipermail/sisyphus/2012-April/357311.html
Comment 15 AEN 2013-03-18 19:29:27 MSK
(В ответ на комментарий №14)
> (In reply to comment #13)
> > Но. 2ldv@: насколько я понимаю, сборка mariadb не в чруте?
> 
> Нет. Я вытаскивал специально из чрута когда-то, т.к. mmm нормально в нем не
> работал. http://lists.altlinux.org/pipermail/sisyphus/2012-April/357311.html

2ldv@: если чрут для нас важен как и раньше, то это аргумент в пользу MySQL как основного. Согласны?
Comment 16 Anton Farygin 2013-03-18 19:32:25 MSK
Oracle вовсю продвигает MySQL. И в России в том числе. Сходи на их конференцию и спроси - забросят ли.
Comment 17 AEN 2013-03-18 19:36:38 MSK
(В ответ на комментарий №16)
> Oracle вовсю продвигает MySQL. И в России в том числе. Сходи на их конференцию
> и спроси - забросят ли.

Они, конечно, признаются, что забросят. Ты помнишь, что они говорили про OpenOffice после покупки Sun? Давай не будем верить на слово.
Comment 18 Michael Shigorin 2013-03-18 21:45:53 MSK
(В ответ на комментарий №8)
> [...] собрать MySQL-5.6 с отключенным -devel, они должны разъехаться по soname.
Нет, посмотрел в официальной сборке 5.6.10 -- тоже .so.18.

(В ответ на комментарий №11)
> Если сейчас она поддерживает протокол MySQL, то это не значит, что она будет
> его поддерживать через год или два. Верно ?
Заголовок mariadb.org: "MariaDB An enhanced, drop-in replacement for MySQL."

"drop-in" означает пригодность для замены MySQL на месте.  Они могут отказаться от этого намерения или не справиться с реализацией в какой-то момент, но пока на это непохоже.

Как ещё один вариант -- сдвинуть библиотеку одного из пакетов в подкаталог, чтобы в ближайшие год-два при острой необходимости (например, обнаружении разницы в поведении) было просто и быстро переключиться именно на "родную" сборку.

(В ответ на комментарий №15)
> > Нет. Я вытаскивал специально из чрута когда-то
Возможно ли разумными усилиями в обозримое время сделать наш пакет mariadb-server такой же заменой на месте нашему пакету MySQL-server?

> 2ldv@: если чрут для нас важен как и раньше, то это аргумент в пользу MySQL
> как основного. Согласны?
Насколько понимаю (но не как реальный пользователь), для многонодовых конфигураций сейчас стоит посмотреть на Galera: http://www.opennet.ru/opennews/art.shtml?num=36337 -- а локальный mysqld я бы всё-таки держал в чруте, доводы от Pg не подходят вместе со скриптовыми расширениями от Pg. :-)

(В ответ на комментарий №17)
> Давай не будем верить на слово.
Скажем так -- по печёночным ощущениям (и packagers@mysql) мне не кажется, что они его собираются забрасывать, но и тенденция к коммерциализации вполне чёткая.  Момент истины может наступить вместе с искуственно задерживаемым исправлением критичной уязвимости, уже доступным коммерческим клиентам.

Уже происшедшие сужение видимости багтрекера и скрытие части регресс-тестов по нам прямо не бьют в силу отсутствия _разработчиков_ кодовой базы MySQL, но косвенно тоже задевают -- негде тырить патчи.

Говорю же, ситуация совсем не однозначная и правильный выбор сделать сложно.  Поэтому огромное спасибо за обсуждение и соображения -- например, про чрут я забыл.
Comment 19 Michael Shigorin 2013-03-19 02:04:07 MSK
О патчах: перетащил в нулевом приближении наши и используемые федорины на 5.6.10 (при этом почти все федорины поотваливались, нередко по ерундовым причинам); пока застрял на chroot:

/usr/src/RPM/BUILD/mysql-5.6.10/libmysqld/../sql/mysqld.cc:8744:3: error: 'user_info' was not declared in this scope
/usr/src/RPM/BUILD/mysql-5.6.10/libmysqld/../sql/mysqld.cc:8744:37: error: cannot convert 'char*' to 'THD*' for argument '1' to 'int check_user(THD*, enum_server_command, const char*, uint, const char*, bool)'

Несобирающийся srpm: http://fly.osdn.org.ua/~mike/tmp/MySQL-5.6.10-alt1.src.rpm

(надо заметить, что SMP-сборка сломалась -- вылетает в разных местах, один раз даже ICE по причине недостающего ожидаемого конца строки в сгенерированном куске был)

О перспективах:

---
LXF: Did Oracle want to buy MySQL simply to stop people using it?

MW: Yeah. They wanted to have control, but by buying MySQL they also had to agree in some sense to the European Union that for five years they would continue developing it. They also said that they would spend $20 million a year in development.
[...]
And they also lost control of the source code, because they don't have people who understand it, so they know they're doing strange things which causes problems for us when they do a merge because we can't accept all their changes. We have to basically redo a lot. 
--- http://www.techradar.com/news/software/how-the-co-creator-of-mysql-came-to-love-databases-1130829
Comment 20 AEN 2013-03-19 02:13:47 MSK
2mike: bugzilla не место для пропаганды. И уж тем более не место для худшего ее вида, -- ссылок на чужое заведомо пристрастное мнение.
Comment 21 Michael Shigorin 2013-03-19 02:27:20 MSK
Посмотрев, что в F18/F19 и openSUSE 12.3 оставили 5.5.30 -- пожалуй, больше время на 5.6 тратить до p7 не буду, чтоб не вляпаться в поддержку своими силами.

Выложил FTBFS как http://git.altlinux.org/people/mike/packages/?p=MySQL-5.6.git

(В ответ на комментарий №20)
> 2mike: bugzilla не место для пропаганды. И уж тем более не место для худшего
> ее вида, -- ссылок на чужое заведомо пристрастное мнение.
Да при чём тут пропаганда, вроде все люди взрослые.  Понятно, что пристрастное, но с наблюдениями скорее коррелирует -- поэтому и решил процитировать кусок, который имеет отношение к оценке вариантов развития ситуации (а сам про те тёрки Oracle с ЕС насчёт MySQL уже тоже успел подзабыть).
Comment 22 Dmitry V. Levin 2013-03-19 14:31:28 MSK
Собрать сервер mariadb как полагается, в чруте, конечно, тоже нужно, но это немного другая тема.  Для начала нужно собрать подпакеты по имени libmysqlclient{18,-devel} из mariadb, а из mysql одноименные подпакеты убрать.  Кого я могу попросить выполнить эту нехитрую работу?
Comment 23 Michael Shigorin 2013-03-19 14:47:43 MSK
(В ответ на комментарий №22)
> Кого я могу попросить выполнить эту нехитрую работу?
Меня, видимо (заодно обновить mariadb тоже до 5.5.30) -- если Слава не будет возражать; нависать на него с относительно срочным не вижу возможности.

Принимаются советы и загодя сделанные исправления Requires: пакетов, упоминаемых в http://git.altlinux.org/tasks/92472/logs/events.1.1.log
Comment 24 Slava Dubrovskiy 2013-03-19 15:46:46 MSK
(In reply to comment #23)
> (В ответ на комментарий №22)
> > Кого я могу попросить выполнить эту нехитрую работу?
> Меня, видимо (заодно обновить mariadb тоже до 5.5.30) -- если Слава не будет
> возражать;
Ну конечно. Там и уязвимость нужно исправить...

> нависать на него с относительно срочным не вижу возможности.
Ребята, я прекрасно понимаю, что это ключевой пакет и если кто-то возьмется за него как надо я только за. На тот момент когда я его собирал у меня была необходимость и время.
Сейчас, видимо, я не могу уделить столько времени сколько нужно. Скорее всего только в выходные, т.к. есть основная работа, а там другие задачи сейчас и еще нужно спать.

> 
> Принимаются советы и загодя сделанные исправления Requires: пакетов,
> упоминаемых в http://git.altlinux.org/tasks/92472/logs/events.1.1.log

Еще недавно высказывал желание попилить марию - Dmitry Kulik lnkvisitor.ts[at]gmail.com
Скоординируйтесь.
Comment 25 Kulik Dmitriy 2013-03-19 17:46:28 MSK
(В ответ на комментарий №24)
> Еще недавно высказывал желание попилить марию - Dmitry Kulik
> lnkvisitor.ts[at]gmail.com
> Скоординируйтесь.

Уперся в время а потом в технологии. Пришлось на неопределенный срок переехать на форточки.

ЗЫ Поддержка systemd в федоре вполне адекватная. Вдруг что.
Comment 26 Repository Robot 2013-04-01 22:11:31 MSK
MySQL-5.5.30-alt3 -> sisyphus:

* Mon Apr 01 2013 Michael Shigorin <mike@altlinux> 5.5.30-alt3
- made subpackages with client libraries and devel headers optional,
  turned these off by default since mariadb provides them and looks
  more maintainable based on current consensus (closes: #28676)
- dropped explicit library requirements (set-versions should suffice)