[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