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

Anton Farygin =?iso-8859-1?q?rider_=CE=C1_altlinux=2Ecom?=
Ср Апр 28 10:08:38 MSD 2004


Sergey Vlasov пишет:
> 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).

Эта ссылка устарела, после ее удаления - все встает на свои места.

Судя по всему - ее можно убирать, чем я сейчас и займусь.

Но ошибка в ldconfig, похоже, все-таки есть.


> 
> 
>>Лучше не закладываться на тот или иной вариант и сделать нормальный
>>wrapper.
> 
> 
> Каким образом?  Вынести все реальные libGL.so.* в другой каталог,
> оставив в /usr/X11R6/lib только libGLwrapper.so.*?

Нет, не надо.. слишком много геммороя.

Rgds,
Rider



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