Bug 28199 - Пропали my_malloc и my_free
Summary: Пропали my_malloc и my_free
Status: CLOSED WONTFIX
Alias: None
Product: Sisyphus
Classification: Development
Component: libmysqlclient18 (show other bugs)
Version: unstable
Hardware: all Linux
: P3 major
Assignee: Michael Shigorin
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-12-07 13:45 MSK by real@altlinux.org
Modified: 2012-12-23 19:12 MSK (History)
3 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description real@altlinux.org 2012-12-07 13:45:18 MSK
В хедерах, что в libmysqlclient-devel, они есть и указаны как extern. В библиотеках их нет, они туда почему-то не попали, хотя реально они есть.

my_free:
mysql/mysys/my_malloc.c , строки 124-130

my_malloc:
mysql/mysys/my_malloc.c , строки 28-61.
Comment 1 Michael Shigorin 2012-12-07 17:40:52 MSK
Спасибо, посмотрю; если глянешь mysql-versioning.patch и пришлёшь желаемые доработки, вообще замечательно.
Comment 2 real@altlinux.org 2012-12-07 20:37:48 MSK
"если глянешь mysql-versioning.patch"

Здесь я, увы, не знаток. Знаю, что раньше от них был толк, но с нашим set-versions не будет ли это излишним?
Comment 3 real@altlinux.org 2012-12-07 21:20:10 MSK
"и пришлёшь желаемые доработки"

Тут у меня только грязные хаки выходят, так что сюда бы кого более компетентного...
Comment 4 real@altlinux.org 2012-12-08 07:41:28 MSK
Короче, перерыл mysql/libmysql/CMakeLists.txt , вводил нужные строки в CLIENT_API_FUNCTIONS, толку никакого. Для себя пока решил локально, но для сизифа это вряд ли подойдёт:

=========== начало
diff --git a/MySQL.spec b/MySQL.spec
index cebec14..fd0738b 100644
--- a/MySQL.spec
+++ b/MySQL.spec
@@ -306,9 +306,12 @@ export \
        CHECK_PID='/bin/kill -0 $$PID >/dev/null 2>/dev/null' \
        #
 
+%add_optflags %optflags_shared
 cmake \
        -DCMAKE_VERBOSE_MAKEFILE=ON \
        -DCMAKE_INSTALL_PREFIX=%_prefix \
+       -DCMAKE_C_FLAGS='%optflags' \
+       -DCMAKE_CXX_FLAGS='%optflags' \
        -DMYSQL_UNIX_ADDR="%ROOT/mysql.sock" \
        -DMYSQL_DATADIR="%ROOT" \
        -DMYSQL_USER=mysql \
@@ -363,6 +366,18 @@ install -pD -m600 %SOURCE5 %buildroot%ROOT/my.cnf
 # Fix libmysqlclient_r symlinks
 (
        cd %buildroot%_libdir
+       lm1=libmysqlclient.so.*.*
+       somver=$(echo $lm1 |sed 's|libmysqlclient\.so\.||')
+       rm -f $lm1
+       lm2=libmysqlclient.so.*
+       sover=$(echo $lm2 |sed 's|libmysqlclient\.so\.||')
+       rm -f libmysqlclient.so*
+       gcc -shared -Wl,-soname,libmysqlclient.so.$sover \
+               -Wl,--whole-archive libmysqlclient.a -Wl,--no-whole-archive \
+               -o libmysqlclient.so.$somver \
+               -lcrypto -lssl -lpthread -lrt -ldl -lz -lm -Wl,-z,defs
+       ln -s libmysqlclient.so.$somver libmysqlclient.so.$sover
+       ln -s libmysqlclient.so.$sover libmysqlclient.so
        N="libmysqlclient_r.so"
        for l in $N.*; do
                if [ -h $l ]; then
=========== конец
Comment 5 Dmitry V. Levin 2012-12-08 18:16:29 MSK
(In reply to comment #1)
> Спасибо, посмотрю; если глянешь mysql-versioning.patch и пришлёшь желаемые
> доработки, вообще замечательно.

Добавлять недостающие символы нужно в файл libmysql.version.
Впрочем, my_malloc и my_free совершенно не похожи на символы, которые имеет смысл экспортировать.  Неужели они кому-то могли понадобиться?
Comment 7 Dmitry V. Levin 2012-12-09 18:29:09 MSK
(In reply to comment #6)
> http://git.altlinux.org/beehive/logs/Sisyphus-x86_64/latest/error/mysql-connector-odbc-5.1.8-alt1.1

stringutil.c:127:5: error: too many arguments to function 'my_free'
- пакету mysql-connector-odbc нужен мейнтейнер.
Comment 8 real@altlinux.org 2012-12-09 18:34:58 MSK
"пакету mysql-connector-odbc нужен мейнтейнер"

Скорее, автор. Потому как перелопачивать весь этот пакет (а вызовы my_malloc/my_free там часто и в разных местах) если и найдётся мейнтейнер, то только такой, кто вольётся в апстрим :)
Comment 9 real@altlinux.org 2012-12-09 18:37:33 MSK
Ситуацию можно упростить, если есть ответы на вот такие два вопроса:

1. чем сейчас принято заменять my_malloc и my_free ?

2. зачем прятать подобные символы в библиотеке от использующих её функционал клиентов?
Comment 10 real@altlinux.org 2012-12-09 18:40:20 MSK
"нужен мейнтейнер"

http://git.altlinux.org/people/real/packages/mysql-connector-odbc.git

Всё упёрлось в отсутствие нужных функций в реализации mysql.
Comment 11 Michael Shigorin 2012-12-23 19:12:41 MSK
(In reply to comment #10)
> Всё упёрлось в отсутствие нужных функций в реализации mysql.
Видимо, этот пакет пора отправить на покой, если автор потерялся.