[devel] Вопросы по версионированию символов
Alexey Rusakov
=?iso-8859-1?q?ktirf_=CE=C1_altlinux=2Eorg?=
Ср Авг 29 15:10:42 MSD 2007
On Wed, 29 Aug 2007 14:10:22 +0400
Alexey Tourbin wrote:
> On Wed, Aug 29, 2007 at 12:24:28PM +0400, Alexey Rusakov wrote:
> > Делаю версии для Pango. Впервые для себя наткнулся на ситуацию убирания
> > символов из числа экспортируемых с одновременным добавлением новых.
> > Не совсем понял, что в такой ситуации делать: писать два отдельных
> > интерфейса, отличающиеся друг от друга на две строки? Если один и тот
> > же символ упоминается в двух разных интерфейсах, зависящая библиотека
> > будет требовать оба интерфейса? один из них? ни одного?
>
> Два интерфейса это не то что Вы думаете. Символ останется только
> в одном интерфейсе. Символ на двух интерфейсах делать гораздо сложнее,
> для первого раза если вас звать не Дреппер это практически минное поле.
>
> Удаляемые символы нужно пробивать по глобальной базе rpmelfsym(1).
> Если их никто не использует, то удалились ну и хрен с ними. Если же
> их кто-то использует, то их нужно вручную восстанавливать (в коде).
Тут стало немного понятнее, спасибо. Я так понимаю, если их никто не
использует, ничто не мешает эти символы выбросить из файла с версиями
символов вообще.
> > Сгенерированный *.ver файл выглядит так:
> > { global:
> > ...
> > local: *;
> > };
>
> Сгенерированный где и кем?
Он генерируется из ручками написанного файла с экспортируемыми символами,
но конкретно строчка local:* добавляется кодом, который берётся из
aclocal.m4 в данном модуле. Собственно, нынешний pango*src.rpm в Сизифе
этот aclocal.m4 тоже содержит.
> > эта строка влияет на наследование интерфейсов: символы из наследуемых
> > интерфейсов подпадают под local или будут "автомагически" перемещены в
> > global для наследующего интерфейса?
>
> Вообще-то надо читать исходники binutils, но я в них ничего не понял.
> Думаю, что "local: *" в первом блоке сохраняет возможность добавления
> заскриненых символов в последующих интерфейсах.
Хотелось бы верить.
--
Alexey "Ktirf" Rusakov
GNOME Project
ALT Linux Team
Подробная информация о списке рассылки Devel