Bug 28676 - blocks client software builds
: blocks client software builds
Status: CLOSED FIXED
: Sisyphus
(All bugs in Sisyphus/libmysqlclient18)
: unstable
: all Linux
: P3 blocker
Assigned To:
:
:
:
:
: 27685 28737
  Show dependency tree
 
Reported: 2013-03-13 14:59 by
Modified: 2013-04-01 22:11 (History)


Attachments


Note

You need to log in before you can comment on or make changes to this bug.


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

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

Это не libMySQL, а libmysqlclient, у нее есть две реализации с общей историей,
и без разглядывания исходного кода и патчей к нему нет оснований делать выбор в
пользу одной из них.  По этой причине, насколько я понимаю, вопрос так долго
решался.
------- Comment #6 From 2013-03-13 17:13:23 -------
Судя по 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 From 2013-03-18 01:42:18 -------
К сведению:
[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 From 2013-03-18 15:48:40 -------
(В ответ на комментарий №7)
> Уважаемые мейнтейнеры, посмотрите этот diff, примите обоснованное решение
> и реализуйте его поскорее!
Дим, лучше посмотри сам и посоветуй.  Мне решения разглядыванием сишных диффов
обосновывать возможно, но крайне времяёмко.  Славе -- думаю, аналогично.

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

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

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

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

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

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

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

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

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

Они, конечно, признаются, что забросят. Ты помнишь, что они говорили про
OpenOffice после покупки Sun? Давай не будем верить на слово.
------- Comment #18 From 2013-03-18 21:45:53 -------
(В ответ на комментарий №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 From 2013-03-19 02:04:07 -------
О патчах: перетащил в нулевом приближении наши и используемые федорины на
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 From 2013-03-19 02:13:47 -------
2mike: bugzilla не место для пропаганды. И уж тем более не место для худшего ее
вида, -- ссылок на чужое заведомо пристрастное мнение.
------- Comment #21 From 2013-03-19 02:27:20 -------
Посмотрев, что в 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 From 2013-03-19 14:31:28 -------
Собрать сервер mariadb как полагается, в чруте, конечно, тоже нужно, но это
немного другая тема.  Для начала нужно собрать подпакеты по имени
libmysqlclient{18,-devel} из mariadb, а из mysql одноименные подпакеты убрать. 
Кого я могу попросить выполнить эту нехитрую работу?
------- Comment #23 From 2013-03-19 14:47:43 -------
(В ответ на комментарий №22)
> Кого я могу попросить выполнить эту нехитрую работу?
Меня, видимо (заодно обновить mariadb тоже до 5.5.30) -- если Слава не будет
возражать; нависать на него с относительно срочным не вижу возможности.

Принимаются советы и загодя сделанные исправления Requires: пакетов,
упоминаемых в http://git.altlinux.org/tasks/92472/logs/events.1.1.log
------- Comment #24 From 2013-03-19 15:46:46 -------
(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 From 2013-03-19 17:46:28 -------
(В ответ на комментарий №24)
> Еще недавно высказывал желание попилить марию - Dmitry Kulik
> lnkvisitor.ts[at]gmail.com
> Скоординируйтесь.

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

ЗЫ Поддержка systemd в федоре вполне адекватная. Вдруг что.
------- Comment #26 From 2013-04-01 22:11:31 -------
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)