[devel] Re: I: Sisyphus base build system freeze plans

Sergey Vlasov =?iso-8859-1?q?vsu_=CE=C1_altlinux=2Eru?=
Ср Апр 28 09:55:38 MSD 2004


On Tue, Apr 27, 2004 at 02:54:21PM +0400, Dmitry V. Levin wrote:
> On Tue, Apr 27, 2004 at 02:34:29PM +0400, Sergey Vlasov wrote:
> > On Tue, Apr 27, 2004 at 12:26:01PM +0300, Michael Shigorin wrote:
> > > On Tue, Apr 27, 2004 at 12:49:43PM +0400, Leonid Khachaturov wrote:
> > > > Означает ли это, что установка glibc-2.3.3 из Sisyphus сейчас,
> > > > приведет к неработоспособности системы (или по-крайней мере её
> > > > части)?
> > > 
> > > Еще GL сломался (скринсейвер теперь CPU hog :).
> > 
> > $ ls -la /usr/X11R6/lib/libGL.so.1
> > lrwxrwxrwx  1 root root 12 Апр 27 14:30 /usr/X11R6/lib/libGL.so.1 -> libMesaGL.so
> > 
> > Старый ldconfig делает ссылку на libGLwrapper.so.0.1.8.  Вообще по какому
> > принципу ldconfig выбирает, на что поставить ссылку при наличии нескольких
> > библиотек с совпадающими SONAME?
> 
> Этот алгоритм несколько раз менялся, и какой действует сейчас, я не помню.

На самом деле эта проблема возникает из-за следующего изменения:

@@ -770,10 +790,27 @@ search_dir (const struct dir_entry *entr
          continue;
        }
 
+
+      /* A link may just point to itself.  */
+      if (is_link)
+       {
+         /* If the path the link points to isn't its soname and it is not
+            .so symlink for ld(1) only, we treat it as a normal file.  */
+         const char *real_base_name = basename (real_file_name);
+
+         if (strcmp (real_base_name, soname) != 0)
+           {
+             len = strlen (real_base_name);
+             if (len < strlen (".so")
+                 || strcmp (real_base_name + len - strlen (".so"), ".so") != 0
+                 || strncmp (real_base_name, soname, len) != 0)
+               is_link = 0;
+           }
+        }
+
       if (real_name != real_file_name)
        free (real_name);
 
-      /* Links will just point to itself.  */
       if (is_link)
        {
          free (soname);

libMesaGL.so - это тоже ссылка (на libGL.so.1.4.501).  Судя по
комментарию, такая ссылка должна была бы игнорироваться, но на самом
деле этого не происходит из-за третьей части написанного здесь условия
(strncmp (real_base_name, soname, len) != 0).

> Лучше не закладываться на тот или иной вариант и сделать нормальный
> wrapper.

Каким образом?  Вынести все реальные libGL.so.* в другой каталог,
оставив в /usr/X11R6/lib только libGLwrapper.so.*?
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20040428/751a7c90/attachment-0001.bin>


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