| Summary: | Пропали my_malloc и my_free | ||
|---|---|---|---|
| Product: | Sisyphus | Reporter: | real <real.altlinux.org> |
| Component: | libmysqlclient18 | Assignee: | Michael Shigorin <mike> |
| Status: | CLOSED WONTFIX | QA Contact: | qa-sisyphus |
| Severity: | major | ||
| Priority: | P3 | CC: | dubrsl, ldv, rider |
| Version: | unstable | ||
| Hardware: | all | ||
| OS: | Linux | ||
|
Description
real@altlinux.org
2012-12-07 13:45:18 MSK
Спасибо, посмотрю; если глянешь mysql-versioning.patch и пришлёшь желаемые доработки, вообще замечательно. "если глянешь mysql-versioning.patch" Здесь я, увы, не знаток. Знаю, что раньше от них был толк, но с нашим set-versions не будет ли это излишним? "и пришлёшь желаемые доработки" Тут у меня только грязные хаки выходят, так что сюда бы кого более компетентного... Короче, перерыл 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
=========== конец
(In reply to comment #1) > Спасибо, посмотрю; если глянешь mysql-versioning.patch и пришлёшь желаемые > доработки, вообще замечательно. Добавлять недостающие символы нужно в файл libmysql.version. Впрочем, my_malloc и my_free совершенно не похожи на символы, которые имеет смысл экспортировать. Неужели они кому-то могли понадобиться? (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 нужен мейнтейнер. "пакету mysql-connector-odbc нужен мейнтейнер" Скорее, автор. Потому как перелопачивать весь этот пакет (а вызовы my_malloc/my_free там часто и в разных местах) если и найдётся мейнтейнер, то только такой, кто вольётся в апстрим :) Ситуацию можно упростить, если есть ответы на вот такие два вопроса: 1. чем сейчас принято заменять my_malloc и my_free ? 2. зачем прятать подобные символы в библиотеке от использующих её функционал клиентов? "нужен мейнтейнер" http://git.altlinux.org/people/real/packages/mysql-connector-odbc.git Всё упёрлось в отсутствие нужных функций в реализации mysql. (In reply to comment #10) > Всё упёрлось в отсутствие нужных функций в реализации mysql. Видимо, этот пакет пора отправить на покой, если автор потерялся. |