On Mon, Jan 29, 2007 at 09:05:54PM +0300, Pavlov Konstantin wrote: > On Monday 29 January 2007 16:36, Damir Shayhutdinov wrote: > > Как проверить соответствие API/ABI старого пакета и нового, чтобы > > принять решение - увеличивать ли soname или нет? Сравнивать include ? > > rpmsodiff из пакета qa-robot. rpmsodiff проверяет только изменения в наборе экспортируемых символов, чего в общем случае недостаточно (хотя в случае C++, где в имени содержатся и типы параметров, ситуация чуть лучше, изменения в формате каких-то структур таким образом всё равно обнаружить нельзя). Так что дополнительно сравнивать include нужно в любом случае. Ещё неприятная вещь - символы, которые экспортируются, но не входят в официально поддерживаемый API библиотеки: в некоторых случаях обнаруживается, что их тем не менее кто-то использует. Внедрение version script или хотя бы просто списка экспортируемых символов позволяет хоть как-то бороться с этим (программы, использующие внутренние символы библиотеки, в этом случае просто не соберутся). Хотя для C++ написать такой файл довольно сложно. Кстати, текущий rpmsodiff не работает с пакетами для x86_64 - не видит в них ни одной разделяемой библиотеки.