Bug 30786

Summary: SONAME перебежал в другой пакет
Product: Sisyphus Reporter: Sergey V Turchin <zerg>
Component: libGLEWAssignee: Денис Назаров <nenderus>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P3 CC: evg, glebfm
Version: unstable   
Hardware: all   
OS: Linux   
Bug Depends on:    
Bug Blocks: 28944    

Description Sergey V Turchin 2015-03-02 16:12:39 MSK
SONAME libGLEW.so.1.11 перебежал из пакета libGLEW в пакет libGLEW1.11.
В пакете libGLEW теперь другой SONAME.
Comment 1 Денис Назаров 2015-03-02 16:14:44 MSK
И в чём собственно ошибка? Библиотека обновилась, обновился и SONAME.
Comment 2 Sergey V Turchin 2015-03-02 16:26:12 MSK
(В ответ на комментарий №1)
> И в чём собственно ошибка?
В том, что SONAME перебежал в другой пакет.

Смотрите по теме баги: 28941 29594 29633 29816 30786 ( 28944 ).
Например, 28941 не исправлена до сих пор!
Comment 3 Денис Назаров 2015-03-02 16:34:54 MSK
Так вроде по всем правилам же оставлена legacy library - http://www.altlinux.org/Shared_Libs_Policy#.D0.9F.D0.B5.D1.80.D0.B5.D0.B5.D0.B7.D0.B4_.D1.81.D0.BE_.D1.81.D1.82.D0.B0.D1.80.D0.BE.D0.B3.D0.BE_.D0.B8.D0.BC.D0.B5.D0.BD.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D1.8F
Comment 4 Sergey V Turchin 2015-03-02 18:11:05 MSK
(В ответ на комментарий №3)
> Так вроде по всем правилам же оставлена legacy library -
Совсем не по правилам.

По правилам новый пакет libGLEW1.11 должен Provides/Obsoletes libGLEW.
Comment 5 Денис Назаров 2015-03-02 18:19:40 MSK
Судя по инфомации на вики http://www.altlinux.org/Shared_Libs_Policy#.D0.9F.D0.B5.D1.80.D0.B5.D0.B5.D0.B7.D0.B4_.D1.81.D0.BE_.D1.81.D1.82.D0.B0.D1.80.D0.BE.D0.B3.D0.BE_.D0.B8.D0.BC.D0.B5.D0.BD.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D1.8F
нужен только Provides и он у пакета libGLEW1.11 как раз есть.

Ведь если же добавить ещё и Obsoletes, то разве при обновлении тогда не будет предлагаться удалить пакет libGLEW?
Comment 6 Sergey V Turchin 2015-03-02 18:21:35 MSK
(В ответ на комментарий №5)
> Ведь если же добавить ещё и Obsoletes, то разве при обновлении тогда не будет
> предлагаться удалить пакет libGLEW?
Не будет, если сделать правильный пакет libGLEW1.12 .
Comment 7 Sergey V Turchin 2015-03-02 18:26:25 MSK
А сейчас вы создали ситуацию, которую исправлять гораздо сложнее, чем предотвратить. Можете спросить у Глеба, т.к. он более-менее просто исправил этот баг в libwebpN .
Comment 8 Денис Назаров 2015-03-02 21:58:58 MSK
Может тогда стоит просто пересобрать все пакеты, которые зависят от libGLEW (что бы слинковались с новой версией) и пакет libGLEW1.11 удалить из репозитория?
Comment 9 Sergey V Turchin 2015-03-03 14:38:10 MSK
Да. По древним правилам так надо было и сделать.
Правильно -- сделать пакет libGLEW1.12 .

Вы ведь не гарантируете всем пересборку любых  всех каких-только теоретически возможных установленных пакетов? Пакет libGLEW1.12 эту проблему решает. У пользователя тогда просто останется отсутствующий в репозитории пакет libGLEW и обновление ничего не снесет.
Comment 10 Gleb F-Malinovskiy 2015-03-03 14:53:02 MSK
Его уже нельзя переименовывать.
Comment 11 Gleb F-Malinovskiy 2015-03-03 14:57:22 MSK
(In reply to comment #10)
> Его уже нельзя переименовывать.

Есть люди, у которых стоит старый libGLEW, если новый переименовать, им приедет и libGLEW1.11 и libGLEW1.12 и это будет файловый конфликт.

Не уверен, что тут пожно писать Obsoletes: где-то.

(In reply to comment #7)
> Можете спросить у Глеба, т.к. он более-менее просто исправил
> этот баг в libwebpN .

И сломал голову, пока придумывал.
Comment 12 Sergey V Turchin 2015-03-03 15:02:55 MSK
(В ответ на комментарий №10)
> Его уже нельзя переименовывать.
Коментарий #7.
Можно примерно так, как ты исправлял libwebpN в баге#29816 .

В libGLEW1.12
Provides: libGLEW = %version-%release
Obsoletes: libGLEW = 1.12.0-alt2
Obsoletes: libGLEW = 1.12.0-alt1

В libGLEW1.11
Provides: libGLEW = %version-%release
Obsoletes: libGLEW < 1.12

Если попадет в бранчи, будет несколько сложнее.
Comment 13 Sergey V Turchin 2015-03-03 15:09:23 MSK
(В ответ на комментарий №11)
> И сломал голову, пока придумывал.
Я рад, что еще один человек прочуствовал глубину проблемы. ;-)
Comment 14 Gleb F-Malinovskiy 2015-03-03 15:18:49 MSK
(In reply to comment #13)
> (В ответ на комментарий №11)
> > И сломал голову, пока придумывал.
> Я рад, что еще один человек прочуствовал глубину проблемы. ;-)

На самом деле, вот это стало результатом и слегка сглаживает некоторые проблемы:
http://git.altlinux.org/people/glebfm/packages/apt.git?p=apt.git;a=commit;h=e2184306b28908f208869b791d1bb0550c659674
Comment 15 Денис Назаров 2015-03-03 22:27:06 MSK
Разве

Provides: libGLEW = %version-%release
Obsoletes: libGLEW = 1.12.0-alt2
Obsoletes: libGLEW = 1.12.0-alt1

надо писать в головную часть спека, а не в подпакеты libGLEW1.12 и libGLEWmx1.12?

В данном же случае получается, что Provides/Obsoletes относится к глобальному пакету GLEW, который даже не создаётся из спека.
Comment 16 Gleb F-Malinovskiy 2015-03-03 23:20:27 MSK
(In reply to comment #15)
> Разве
> 
> Provides: libGLEW = %version-%release
> Obsoletes: libGLEW = 1.12.0-alt2
> Obsoletes: libGLEW = 1.12.0-alt1
> 
> надо писать в головную часть спека, а не в подпакеты libGLEW1.12 и
> libGLEWmx1.12?
> 
> В данном же случае получается, что Provides/Obsoletes относится к глобальному
> пакету GLEW, который даже не создаётся из спека.

Прошу прощения, это я что-то задумался в этот момент. :)
Comment 17 Денис Назаров 2015-03-04 01:31:56 MSK
В обоих пакетах Provides/Obsoletes теперь есть.
Багу можно закрывать или что-то ещё надо сделать?
Comment 18 Sergey V Turchin 2015-03-04 15:08:36 MSK
Да.