[devel] I: sonames versioned with symbols

Alexey Tourbin at на altlinux.ru
Вс Май 9 15:42:28 UTC 2010


On Sun, May 09, 2010 at 07:11:51PM +0400, Денис Смирнов wrote:
> On Sun, May 09, 2010 at 06:02:24PM +0400, Алексей Турбин wrote:
> 
> AT> Я нарисовал предварительную (и пока весьма несовершенную) реализацию
> AT> этого дела.  Суть этого дела в том, что сонеймы (имена библиотек)
> AT> будут предоставлять "множество символов", то есть функций (и переменных),
> AT> которые из них можно загрузить.  Соответственно при линковке можно
> AT> требовать символы, которые туда разрешаются - и это делается
> AT> автоматически в lib.req с помощью специальных возможностей ld.so/ldd.
> AT> http://git.altlinux.org/people/at/packages/rpm.git?a=shortlog;h=refs/heads/libhash
> AT> С целью тестирования я пересобрал (приватно) базовую систему; и теперь
> AT> например у пакета librpm появилась зависимость
> AT> Requires: libz.so.1()(64bit) >= set:gzclose;gzdopen;gzerror;gzflush;gzopen;gzread;gzseek;gzwrite
> 
> А что будет, если, например:
> 
> пакет A требует зависимость libabc.so.1 >= set:func1
> 
> а пакет B провайдит libabc.so.1 = set:func2
> ?
> мне только так кажется, или при этом зависимость будет удовлетворена
> формально (хотя в действительно, очевидно, это не так)?

Зависимость удовлетворена не будет.  set-зависимости обладают
специальной семантикой: Requires-зависимость будет удовлетворена,
только если requries-set является подмножеством provides-set.
http://git.altlinux.org/people/at/packages/rpm.git?a=commitdiff;h=acd1dd03

То есть версии у зависимостей вида "set:*" обрабатываются специальным
кодом который их "раскладывает" и дальше проверят вложение.

Вообще оказалось что в таком ракурсе возможна декомпозиция: с одной
стороны, как представить set-зависимости; с другой стороны, как их
формировать.  Оказывается это сводит сложную задачу к более простым
задачам. :)
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : отсутствует
Тип     : application/pgp-signature
Размер  : 198 байтов
Описание: отсутствует
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20100509/79e6a8ed/attachment.bin>


Подробная информация о списке рассылки Devel