[devel] subversion, libaprutil, libdb4 (was: apache2-2.0.55-alt5)
Sviatoslav Sviridov
=?iso-8859-1?q?svd_=CE=C1_altlinux=2Eru?=
Пт Мар 24 11:19:27 MSK 2006
Dmitry V. Levin wrote on 3/24/2006 1:18 AM:
> On Fri, Mar 24, 2006 at 02:13:58AM +0300, Денис Смирнов wrote:
>
>> $ldd /usr/lib/libsvn_fs_base-1.so.o | grep libdb
>> libdb-4.3.so => /lib/libdb-4.3.so (0x3acf3000)
>>
>> Почему зависимости на libdb-4.3.so не образовалсь?
>>
>
> Потому что ldd. :)
>
Да-да.
libdb вытаскивается по зависимостям libaprutil.
Причем интересная ситуация получается.
Раньше при сборке subversion прикладывался патчик, который в
configure.in проставлял текущую версию libdb, соответственно приходилось
следить за тем, чтобы своевременно обновлять этот патчик, потому как без
него configure обламывался, когда обнаруживал, что версии желаемая и
действительная не совпадают. Сейчас этот патч уже не обязателен
(кажется), главное правильно рассказать как линковаться с libdb.
configure пытается использовать apu-config
(svn_apu_bdb_lib=["`$apu_config --link-ld --ldflags --libs`"]) для
определения правильных ключей, но оттуда все было оторвано в свое время
(все в той же гонке за чистоту зависимостей :) )... Справиться с этим
помогает такая конструкция:
LIBS="-ldb-4" ./configure
Однако не хотелось, чтобы -ldb-4 появлялся так глобально (хотя при
использовании ). В Makefile.in замечен зародыш в виде SVN_DB_LIBS, и при
помощи небольшого патча он стал использоваться в configure, поэтому
сейчас работает:
SVN_DB_LIBS="-ldb-4" ./configure
Но вместе с этим появилась мысль: а может стоит вернуть в apu-config
[хотя бы] часть вырезанного? При использовании --as-needed все равно
лишнее не будет влинковываться...
По поводу зависимости на libdb4.x: для subversion необходимо
использовать ту же версию libdb, с которой собрана libaprutil (полагаю,
это же справедливо и для других пакетов, использующих libaprutil).
Соответственно, возникает желание убрать зависимость на libdb4.x-devel
из subversion и полагаться на зависимости libaprutil. Ну а в libaprutil
ввести зависимость на конерктную libdb4.x-devel, а не на libdb4-devel,
поскольку автоматические пересборки с новыми версиями чреваты...
А пока суть да дело, еще одна вещь меня удивила сейчас:
Сейчас libsvn_fs_base напрямую использует функции из libdb-4 (напр,
db_create), но не слинкована с ней напрямую (отсутствует в objdump -p
..|grep NEEDED, libdb-4 загружается за счет libaprutil). Это ведь
неправильно? Похоже, что упомянутый выше патчик про SVN_DB_LIBS решит
эту проблему. По крайней мере, во время сборки вроде бы библиотека
слинкована нормально, посмотрим, что получится, когда таки удастся
получить бинарные rpm пакеты :)
А потеряна такая зависимость была как раз за счет того, что apu-config
не вернул необходимых ключей, а makefile на это очень расчитывал :)
--
Best Regards,
Sviatoslav Sviridov
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : signature.asc
Тип : application/pgp-signature
Размер : 250 байтов
Описание: OpenPGP digital signature
Url : <http://lists.altlinux.org/pipermail/devel/attachments/20060324/562d1ae9/attachment-0001.bin>
Подробная информация о списке рассылки Devel