[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