[devel] I: repocop test for %{get_version ...} is disabled.

Alexey Tourbin at на altlinux.ru
Пт Авг 24 04:40:15 MSK 2012


On Thu, Aug 23, 2012 at 07:26:50PM +0400, Sergey V Turchin wrote:
> > Для libqt4-core set-версии хорошо очерчивают круг совместимых версий.
> > С интересом рассмотрю контрпримеры.
> Я не имел ввиду libqt4-core, но я лично наблюдал пример, где программа падала, 
> хотя, с set-зависимостью было все в порядке. Если надо, укажу конкретно.

Программа может падать из-за разыменовывания нулевого указателя.
Set-версии дают гарантию, что перед запуском программы имеются в наличии
все вызываемые функции.  (Следующий бастион - set-версии должны
гарантировать, что прототипы вызываемых функций соответствуют вызовам,
но для C++ это уже сейчас гарантируется автоматически из-за mangling.)
То есть set-версии дают гарантию, что то, что мы собираемся запустить,
в каком-то смысле вообще запускаемо.  То, что программа не будет падать,
set-версии гарантировать не могут.

Конкретный пример меня всё еще интересует, если станет ясно, что там
случилось.  Почему программа падала, а не сам факт падения.

> > > > а какую тогда гарантию формально дает %get_version?
> > > 
> > > Немного другую, которой в set-версиях нет, т.к. они применимы не только к
> > > ABI, но и к API и к noarch.
> > 
> > Иногда стоит указать зависимость вручную - с минимальной версией,
> > но привязка к текущей версии - это просто-таки дедовский метод конторля,
> > да, не только ABI, но и API.  Достойный старых обезьян.
> Ну да. К тому же еще и ленивых ;-)

Laziness is a virtue. :-)
Вся разница в том, что %get_version - это довольно толстый метод привязки
к текущей версии, а set-versions - это гораздо более тонкий метод привязки
к текущей версии. :-)

> -- 
> Regards, Sergey.       ALT Linux, http://www.altlinux.ru/


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