[devel] libg-wrap-devel-1.9.6-alt5

Alexey Tourbin at на altlinux.ru
Вт Янв 22 02:01:31 MSK 2008


On Tue, Jan 22, 2008 at 01:17:13AM +0300, Alexey Tourbin wrote:
> Я знаю ещё несколько пакетов, для которых неправильный симлинк запакован
> в основной библиотечный пакет for a reason, но вообще эту практику лучше
> искоренять.  Хотя это и не слишком серьёзный баг.  Просто теперь будет
> видно, что у *-devel пакета порождается нетипичная зависимость.

Поясню, почему эту практику нужно искоренять.  Единственный правильный
способ воспользоваться библиотекой в рантайме -- это нужно знать её
сонейм.  Сонейм -- это контракт, который говорит о том, что вы
откупориваете более-менее то, что вы рассчитываете там найти.

Но некоторые людишки не знают сонейма, и вместо %soname пытаются
откупорить lib%name.so.  Типа "works for me" и несовместимость
в ближайшей перспективе.  (А несовместимость на уровне сишных
библиотек, когда нет никакого managed runtime, чревата понятно
чем -- падениями в произвольных местах, которые с трудом поддаются
дигностике и отладке).

А вот например полюбуйтесь на код из recent libX11:

libX11-1.1.3/src/CrGlCur.c:
    55  #ifndef LIBXCURSOR
    56  #define LIBXCURSOR "libXcursor.so.1"
    57  #endif
    58
    59  static char libraryName[] = LIBXCURSOR;
    60
    61  static XModuleType
    62  open_library (void)
    63  {
    64      char        *library = libraryName;
    65      char        *dot;
    66      XModuleType module;
    67      for (;;)
    68      {
    69  #if defined(hpux)
    70          module = shl_load(library, BIND_DEFERRED, 0L);
    71  #else
    72          module =  dlopen(library, RTLD_LAZY);
    73  #endif
    74          if (module)
    75              return module;
    76          dot = strrchr (library, '.');
    77          if (!dot)
    78              break;
    79          *dot = '\0';
    80      }
    81      return NULL;
    82  }

Бесконечный цикл это круто, я так думаю.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : отсутствует
Тип     : application/pgp-signature
Размер  : 197 байтов
Описание: отсутствует
Url     : http://lists.altlinux.org/pipermail/devel/attachments/20080122/9ef91995/attachment.bin 


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