ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] Сборка новой версии после использования epoch
@ 2020-01-28 21:02 Pavel Vainerman
  2020-01-28 22:23 ` Nikolai Kostrigin
  0 siblings, 1 reply; 29+ messages in thread
From: Pavel Vainerman @ 2020-01-28 21:02 UTC (permalink / raw)
  To: ALT Linux Team development discussions

Добрый вечер.

Подскажите пожалуйста.
Есть текущая версия библиотеки собранная с epoch (до меня).
Версия 1:4.0.1-alt2_17

Если я хочу собрать новую версию библиотеки 6.4.5 могу ли я удалить
epoch или это уже навсегда?

И второй вопрос. Текущая версия недавно была собрана из src.rpm, а я
хочу вернуть сборки из git. Нужно ли при этом делать какие-то доп. движения?

Речь о пакете libpqxx

https://packages.altlinux.org/ru/sisyphus/srpms/libpqxx

-- 
Pavel Vainerman
www.etersoft.ru


^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [devel] Сборка новой версии после использования epoch
  2020-01-28 21:02 [devel] Сборка новой версии после использования epoch Pavel Vainerman
@ 2020-01-28 22:23 ` Nikolai Kostrigin
  2020-01-28 23:15   ` Pavel Vainerman
  0 siblings, 1 reply; 29+ messages in thread
From: Nikolai Kostrigin @ 2020-01-28 22:23 UTC (permalink / raw)
  To: devel


29.01.2020 0:02, Pavel Vainerman пишет:
> Добрый вечер.
>
> Подскажите пожалуйста.
> Есть текущая версия библиотеки собранная с epoch (до меня).
> Версия 1:4.0.1-alt2_17
>
> Если я хочу собрать новую версию библиотеки 6.4.5 могу ли я удалить
> epoch или это уже навсегда?
Это навсегда, пока имя пакета неизменно, чтобы не сломать "вес" версии
для apt при обновлении
> И второй вопрос. Текущая версия недавно была собрана из src.rpm, а я
> хочу вернуть сборки из git. Нужно ли при этом делать какие-то доп. движения?
>
> Речь о пакете libpqxx
>
> https://packages.altlinux.org/ru/sisyphus/srpms/libpqxx
Насколько я знаю, пакет ранее собиравшийся из src.rpm при сборке в gears
автоматически переезжает в gears.
Однако, если для Вас эта сборка одократная акция, рекомендую
посоветоваться с viy@, т.к. в дальнейшем ему такой переезд может быть
неудобен.

-- 
Best regards,
Nikolai Kostrigin


^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [devel] Сборка новой версии после использования epoch
  2020-01-28 22:23 ` Nikolai Kostrigin
@ 2020-01-28 23:15   ` Pavel Vainerman
  2020-01-29  8:24     ` Alexey V. Vissarionov
  0 siblings, 1 reply; 29+ messages in thread
From: Pavel Vainerman @ 2020-01-28 23:15 UTC (permalink / raw)
  To: devel

>> Если я хочу собрать новую версию библиотеки 6.4.5 могу ли я удалить
>> epoch или это уже навсегда?
> Это навсегда, пока имя пакета неизменно, чтобы не сломать "вес" версии
> для apt при обновлении

  Понял спасибо.


>> И второй вопрос. Текущая версия недавно была собрана из src.rpm, а я
>> хочу вернуть сборки из git. Нужно ли при этом делать какие-то доп.
движения?
> Насколько я знаю, пакет ранее собиравшийся из src.rpm при сборке в gears
> автоматически переезжает в gears.
> Однако, если для Вас эта сборка одократная акция, рекомендую
> посоветоваться с viy@, т.к. в дальнейшем ему такой переезд может быть
> неудобен.

  Я пока не определился. Новая версия требует c++17 (как раз мне
понадобилось в проекте). А я так понимаю ещё многие библиотеки ещё не
готовы к с++17. С другой стороны от libpqxx сейчас зависит только один
мой пакет )


-- 
Pavel Vainerman
www.etersoft.ru


^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [devel] Сборка новой версии после использования epoch
  2020-01-28 23:15   ` Pavel Vainerman
@ 2020-01-29  8:24     ` Alexey V. Vissarionov
  2020-01-29  9:35       ` Dmitry V. Levin
  0 siblings, 1 reply; 29+ messages in thread
From: Alexey V. Vissarionov @ 2020-01-29  8:24 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On 2020-01-29 02:15:37 +0300, Pavel Vainerman wrote:
 >>> Если я хочу собрать новую версию библиотеки 6.4.5 могу ли я
 >>> удалить epoch или это уже навсегда?
 > Я пока не определился. Новая версия требует c++17 (как раз мне
 > понадобилось в проекте). А я так понимаю ещё многие библиотеки
 > ещё не готовы к с++17. С другой стороны от libpqxx сейчас зависит
 > только один мой пакет )

Тогда возможен такой вариант: удалить оба пакета и собрать их уже
без epoch. Да, поломается обновление, но для двух пакетов это не
критично.


-- 
Alexey V. Vissarionov
gremlin ПРИ altlinux ТЧК org; +vii-cmiii-ccxxix-lxxix-xlii
GPG: 0D92F19E1C0DC36E27F61A29CD17E2B43D879005 @ hkp://keys.gnupg.net


^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [devel] Сборка новой версии после использования epoch
  2020-01-29  8:24     ` Alexey V. Vissarionov
@ 2020-01-29  9:35       ` Dmitry V. Levin
  2020-01-29  9:38         ` Alexey V. Vissarionov
  2020-03-11  1:44         ` Dmitry V. Levin
  0 siblings, 2 replies; 29+ messages in thread
From: Dmitry V. Levin @ 2020-01-29  9:35 UTC (permalink / raw)
  To: ALT Devel discussion list

On Wed, Jan 29, 2020 at 11:24:50AM +0300, Alexey V. Vissarionov wrote:
> On 2020-01-29 02:15:37 +0300, Pavel Vainerman wrote:
>  >>> Если я хочу собрать новую версию библиотеки 6.4.5 могу ли я
>  >>> удалить epoch или это уже навсегда?
>  > Я пока не определился. Новая версия требует c++17 (как раз мне
>  > понадобилось в проекте). А я так понимаю ещё многие библиотеки
>  > ещё не готовы к с++17. С другой стороны от libpqxx сейчас зависит
>  > только один мой пакет )
> 
> Тогда возможен такой вариант: удалить оба пакета и собрать их уже
> без epoch. Да, поломается обновление, но для двух пакетов это не
> критично.

Скоро в сборочнице будет проверка, которая это жульничество запретит.


-- 
ldv


^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [devel] Сборка новой версии после использования epoch
  2020-01-29  9:35       ` Dmitry V. Levin
@ 2020-01-29  9:38         ` Alexey V. Vissarionov
  2020-01-29  9:41           ` Anton Farygin
  2020-03-11  1:44         ` Dmitry V. Levin
  1 sibling, 1 reply; 29+ messages in thread
From: Alexey V. Vissarionov @ 2020-01-29  9:38 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On 2020-01-29 12:35:22 +0300, Dmitry V. Levin wrote:
 > On Wed, Jan 29, 2020 at 11:24:50AM +0300, Alexey V. Vissarionov wrote:
 >> On 2020-01-29 02:15:37 +0300, Pavel Vainerman wrote:
 >>>>> Если я хочу собрать новую версию библиотеки 6.4.5 могу ли я
 >>>>> удалить epoch или это уже навсегда?
 >>> Я пока не определился. Новая версия требует c++17 (как раз мне
 >>> понадобилось в проекте). А я так понимаю ещё многие библиотеки
 >>> ещё не готовы к с++17. С другой стороны от libpqxx сейчас зависит
 >>> только один мой пакет )
 >> Тогда возможен такой вариант: удалить оба пакета и собрать
 >> их уже без epoch. Да, поломается обновление, но для двух пакетов
 >> это не критично.
 > Скоро в сборочнице будет проверка, которая это жульничество
 > запретит.

А смысл? Скорее, наоборот, нужно предусмотреть штатный способ для
восстановления после серьезных fuqup'ов.


-- 
Alexey V. Vissarionov
gremlin ПРИ altlinux ТЧК org; +vii-cmiii-ccxxix-lxxix-xlii
GPG: 0D92F19E1C0DC36E27F61A29CD17E2B43D879005 @ hkp://keys.gnupg.net


^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [devel] Сборка новой версии после использования epoch
  2020-01-29  9:38         ` Alexey V. Vissarionov
@ 2020-01-29  9:41           ` Anton Farygin
  2020-01-29 18:05             ` Vladimir D. Seleznev
  0 siblings, 1 reply; 29+ messages in thread
From: Anton Farygin @ 2020-01-29  9:41 UTC (permalink / raw)
  To: devel

On 29.01.2020 12:38, Alexey V. Vissarionov wrote:
> On 2020-01-29 12:35:22 +0300, Dmitry V. Levin wrote:
>   > On Wed, Jan 29, 2020 at 11:24:50AM +0300, Alexey V. Vissarionov wrote:
>   >> On 2020-01-29 02:15:37 +0300, Pavel Vainerman wrote:
>   >>>>> Если я хочу собрать новую версию библиотеки 6.4.5 могу ли я
>   >>>>> удалить epoch или это уже навсегда?
>   >>> Я пока не определился. Новая версия требует c++17 (как раз мне
>   >>> понадобилось в проекте). А я так понимаю ещё многие библиотеки
>   >>> ещё не готовы к с++17. С другой стороны от libpqxx сейчас зависит
>   >>> только один мой пакет )
>   >> Тогда возможен такой вариант: удалить оба пакета и собрать
>   >> их уже без epoch. Да, поломается обновление, но для двух пакетов
>   >> это не критично.
>   > Скоро в сборочнице будет проверка, которая это жульничество
>   > запретит.
>
> А смысл? Скорее, наоборот, нужно предусмотреть штатный способ для
> восстановления после серьезных fuqup'ов.
>
>
Смысл в том, что таким образом вы ломаете обновление, а это критично всегда.



^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [devel] Сборка новой версии после использования epoch
  2020-01-29  9:41           ` Anton Farygin
@ 2020-01-29 18:05             ` Vladimir D. Seleznev
  2020-01-30  7:29               ` Sergey V Turchin
  0 siblings, 1 reply; 29+ messages in thread
From: Vladimir D. Seleznev @ 2020-01-29 18:05 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Wed, Jan 29, 2020 at 12:41:45PM +0300, Anton Farygin wrote:
> On 29.01.2020 12:38, Alexey V. Vissarionov wrote:
> > On 2020-01-29 12:35:22 +0300, Dmitry V. Levin wrote:
> >   > On Wed, Jan 29, 2020 at 11:24:50AM +0300, Alexey V. Vissarionov wrote:
> >   >> On 2020-01-29 02:15:37 +0300, Pavel Vainerman wrote:
> >   >>>>> Если я хочу собрать новую версию библиотеки 6.4.5 могу ли я
> >   >>>>> удалить epoch или это уже навсегда?
> >   >>> Я пока не определился. Новая версия требует c++17 (как раз мне
> >   >>> понадобилось в проекте). А я так понимаю ещё многие библиотеки
> >   >>> ещё не готовы к с++17. С другой стороны от libpqxx сейчас зависит
> >   >>> только один мой пакет )
> >   >> Тогда возможен такой вариант: удалить оба пакета и собрать
> >   >> их уже без epoch. Да, поломается обновление, но для двух пакетов
> >   >> это не критично.
> >   > Скоро в сборочнице будет проверка, которая это жульничество
> >   > запретит.
> >
> > А смысл? Скорее, наоборот, нужно предусмотреть штатный способ для
> > восстановления после серьезных fuqup'ов.
> >
> >
> Смысл в том, что таким образом вы ломаете обновление, а это критично всегда.

Давний недуг сопровождающих: эпохофобия.


^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [devel] Сборка новой версии после использования epoch
  2020-01-29 18:05             ` Vladimir D. Seleznev
@ 2020-01-30  7:29               ` Sergey V Turchin
  2020-01-30  7:32                 ` Nikolai Kostrigin
  0 siblings, 1 reply; 29+ messages in thread
From: Sergey V Turchin @ 2020-01-30  7:29 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Wednesday, 29 January 2020 21:05:25 MSK Vladimir D wrote:

[...]
> Давний недуг сопровождающих: эпохофобия.
Это нормальное явление, т.к. при его наличии приходится думать, в каких 
provides/requires его использовать, а в каких недопустимо. Особенно могут 
пострадать сторонние пакеты.

-- 
Regards, Sergey.

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [devel] Сборка новой версии после использования epoch
  2020-01-30  7:29               ` Sergey V Turchin
@ 2020-01-30  7:32                 ` Nikolai Kostrigin
  2020-01-30  7:52                   ` Sergey V Turchin
  2020-02-09 11:58                   ` Mikhail Novosyolov
  0 siblings, 2 replies; 29+ messages in thread
From: Nikolai Kostrigin @ 2020-01-30  7:32 UTC (permalink / raw)
  To: devel


30.01.2020 10:29, Sergey V Turchin пишет:
> On Wednesday, 29 January 2020 21:05:25 MSK Vladimir D wrote:
>
> [...]
>> Давний недуг сопровождающих: эпохофобия.
> Это нормальное явление, т.к. при его наличии приходится думать, в каких 
>   его использовать, а в каких недопустимо. Особенно могут 
> пострадать сторонние пакеты.
А можно поподробнее? Не знал, что эпоха налагает какие-то ограничения на
работоспособность  provides/requires

-- 
Best regards,
Nikolai Kostrigin



^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [devel] Сборка новой версии после использования epoch
  2020-01-30  7:32                 ` Nikolai Kostrigin
@ 2020-01-30  7:52                   ` Sergey V Turchin
  2020-01-30  7:55                     ` Sergey V Turchin
  2020-02-09 11:58                   ` Mikhail Novosyolov
  1 sibling, 1 reply; 29+ messages in thread
From: Sergey V Turchin @ 2020-01-30  7:52 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Thursday, 30 January 2020 10:32:43 MSK Nikolai Kostrigin wrote:
> 30.01.2020 10:29, Sergey V Turchin пишет:
> > On Wednesday, 29 January 2020 21:05:25 MSK Vladimir D wrote:
> > 
> > [...]
> > 
> >> Давний недуг сопровождающих: эпохофобия.
> > 
> > Это нормальное явление, т.к. при его наличии приходится думать, в каких
> > 
> >   его использовать, а в каких недопустимо. Особенно могут
> > 
> > пострадать сторонние пакеты.
> 
> А можно поподробнее? Не знал, что эпоха налагает какие-то ограничения на
> работоспособность  provides/requires
Например
Provides: qt-assistant 4.8.7 (в пакете qt4-assistant)
Provides: qt-assistant 5.12.5 (в пакете qt5-tools-assistant)
Requires: qt-assistant (в другом пакете ранее)

При добавлении Epoch в qt4-assistant по зависимости станет вытаскиваться 
совсем другой пакет по умолчанию.

-- 
Regards, Sergey.

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [devel] Сборка новой версии после использования epoch
  2020-01-30  7:52                   ` Sergey V Turchin
@ 2020-01-30  7:55                     ` Sergey V Turchin
  2020-01-30  7:58                       ` Nikolai Kostrigin
  0 siblings, 1 reply; 29+ messages in thread
From: Sergey V Turchin @ 2020-01-30  7:55 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Thursday, 30 January 2020 10:52:50 MSK Sergey V wrote:
> On Thursday, 30 January 2020 10:32:43 MSK Nikolai Kostrigin wrote:
> > 30.01.2020 10:29, Sergey V Turchin пишет:
> > > On Wednesday, 29 January 2020 21:05:25 MSK Vladimir D wrote:
> > > 
> > > [...]
> > > 
> > >> Давний недуг сопровождающих: эпохофобия.
> > > 
> > > Это нормальное явление, т.к. при его наличии приходится думать, в каких
> > > 
> > >   его использовать, а в каких недопустимо. Особенно могут
> > > 
> > > пострадать сторонние пакеты.
> > 
> > А можно поподробнее? Не знал, что эпоха налагает какие-то ограничения на
> > работоспособность  provides/requires
> 
> Например
> Provides: qt-assistant 4.8.7 (в пакете qt4-assistant)
> Provides: qt-assistant 5.12.5 (в пакете qt5-tools-assistant)
> Requires: qt-assistant (в другом пакете ранее)
> 
> При добавлении Epoch в qt4-assistant по зависимости станет вытаскиваться
> совсем другой пакет по умолчанию.
Причём, даже если было
Requires: qt-assistant >= 5.0

-- 
Regards, Sergey.

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [devel] Сборка новой версии после использования epoch
  2020-01-30  7:55                     ` Sergey V Turchin
@ 2020-01-30  7:58                       ` Nikolai Kostrigin
  2020-01-30  8:52                         ` Sergey V Turchin
  0 siblings, 1 reply; 29+ messages in thread
From: Nikolai Kostrigin @ 2020-01-30  7:58 UTC (permalink / raw)
  To: devel


30.01.2020 10:55, Sergey V Turchin пишет:
> On Thursday, 30 January 2020 10:52:50 MSK Sergey V wrote:
>> On Thursday, 30 January 2020 10:32:43 MSK Nikolai Kostrigin wrote:
>>> 30.01.2020 10:29, Sergey V Turchin пишет:
>>>> On Wednesday, 29 January 2020 21:05:25 MSK Vladimir D wrote:
>>>>
>>>> [...]
>>>>
>>>>> Давний недуг сопровождающих: эпохофобия.
>>>> Это нормальное явление, т.к. при его наличии приходится думать, в каких
>>>>
>>>>   его использовать, а в каких недопустимо. Особенно могут
>>>>
>>>> пострадать сторонние пакеты.
>>> А можно поподробнее? Не знал, что эпоха налагает какие-то ограничения на
>>> работоспособность  provides/requires
>> Например
>> Provides: qt-assistant 4.8.7 (в пакете qt4-assistant)
>> Provides: qt-assistant 5.12.5 (в пакете qt5-tools-assistant)
>> Requires: qt-assistant (в другом пакете ранее)
>>
>> При добавлении Epoch в qt4-assistant по зависимости станет вытаскиваться
>> совсем другой пакет по умолчанию.
> Причём, даже если было
> Requires: qt-assistant >= 5.0
>
Т.е вылечить эту ситуацию можно будет только добавлением эпохи ещё и в
qt-assistant 5.12.5 ?

 -- 
Best regards,
Nikolai Kostrigin



^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [devel] Сборка новой версии после использования epoch
  2020-01-30  7:58                       ` Nikolai Kostrigin
@ 2020-01-30  8:52                         ` Sergey V Turchin
  0 siblings, 0 replies; 29+ messages in thread
From: Sergey V Turchin @ 2020-01-30  8:52 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Thursday, 30 January 2020 10:58:00 MSK Nikolai Kostrigin wrote:

[...]
> >>> А можно поподробнее? Не знал, что эпоха налагает какие-то ограничения на
> >>> работоспособность  provides/requires
> >> 
> >> Например
> >> Provides: qt-assistant 4.8.7 (в пакете qt4-assistant)
> >> Provides: qt-assistant 5.12.5 (в пакете qt5-tools-assistant)
> >> Requires: qt-assistant (в другом пакете ранее)
> >> 
> >> При добавлении Epoch в qt4-assistant по зависимости станет вытаскиваться
> >> совсем другой пакет по умолчанию.
> > 
> > Причём, даже если было
> > Requires: qt-assistant >= 5.0
> 
> Т.е вылечить эту ситуацию можно будет только добавлением эпохи ещё и в
> qt-assistant 5.12.5 ?
Нет, ведь кроме него может быть ещё 38 разных qt-assistant. В том числе, 
которые могут стоять у пользователя и уже отсутствовать в репозитории.
Лечить нужно qt4-assistant, выставив Provides без Epoch.

Так же, могут быть ситуации, где, наоборот, Epoch необходим.
Obsoletes так же могут поломаться.

Т.е. переименования пакетов и добавление Epoch лучше всего избегать.

-- 
Regards, Sergey.

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [devel] Сборка новой версии после использования epoch
  2020-01-30  7:32                 ` Nikolai Kostrigin
  2020-01-30  7:52                   ` Sergey V Turchin
@ 2020-02-09 11:58                   ` Mikhail Novosyolov
  2020-02-09 17:28                     ` Alexey Tourbin
  1 sibling, 1 reply; 29+ messages in thread
From: Mikhail Novosyolov @ 2020-02-09 11:58 UTC (permalink / raw)
  To: devel

30.01.2020 10:32, Nikolai Kostrigin пишет:
> 30.01.2020 10:29, Sergey V Turchin пишет:
>> On Wednesday, 29 January 2020 21:05:25 MSK Vladimir D wrote:
>>
>> [...]
>>> Давний недуг сопровождающих: эпохофобия.
>> Это нормальное явление, т.к. при его наличии приходится думать, в каких 
>>   его использовать, а в каких недопустимо. Особенно могут 
>> пострадать сторонние пакеты.
> А можно поподробнее? Не знал, что эпоха налагает какие-то ограничения на
> работоспособность  provides/requires

Можно запросто ошибиться, например, пакет p2 требует p1 >= текущая версия, пишем:

Requires: p1 >= V-R

когда как надо

Requires: p1 >= E:V-R

и никто не заметит, что даже более старая версия с поднятой эпохой попадает под ">=", а сборочница такое не поймает.

Особенно актуально для Requires(pre).



^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [devel] Сборка новой версии после использования epoch
  2020-02-09 11:58                   ` Mikhail Novosyolov
@ 2020-02-09 17:28                     ` Alexey Tourbin
  2020-02-10  1:28                       ` Ivan Zakharyaschev
  0 siblings, 1 reply; 29+ messages in thread
From: Alexey Tourbin @ 2020-02-09 17:28 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Sun, Feb 9, 2020 at 2:58 PM Mikhail Novosyolov
<mikhailnov@altlinux.org> wrote:
> > А можно поподробнее? Не знал, что эпоха налагает какие-то ограничения на
> > работоспособность  provides/requires
>
> Можно запросто ошибиться, например, пакет p2 требует p1 >= текущая версия, пишем:
>
> Requires: p1 >= V-R
>
> когда как надо
>
> Requires: p1 >= E:V-R
>
> и никто не заметит, что даже более старая версия с поднятой эпохой попадает под ">=", а сборочница такое не поймает.

Племя младое незнакомое. Пишите без Epoch, должно работать как надо.

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [devel] Сборка новой версии после использования epoch
  2020-02-09 17:28                     ` Alexey Tourbin
@ 2020-02-10  1:28                       ` Ivan Zakharyaschev
  2020-02-10  2:36                         ` Ivan Zakharyaschev
  0 siblings, 1 reply; 29+ messages in thread
From: Ivan Zakharyaschev @ 2020-02-10  1:28 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 2916 bytes --]

Hello!

On Sun, 9 Feb 2020, Alexey Tourbin wrote:

> On Sun, Feb 9, 2020 at 2:58 PM Mikhail Novosyolov
> <mikhailnov@altlinux.org> wrote:
> > > А можно поподробнее? Не знал, что эпоха налагает какие-то ограничения на
> > > работоспособность  provides/requires
> >
> > Можно запросто ошибиться, например, пакет p2 требует p1 >= текущая версия, пишем:
> >
> > Requires: p1 >= V-R
> >
> > когда как надо
> >
> > Requires: p1 >= E:V-R
> >
> > и никто не заметит, что даже более старая версия с поднятой эпохой попадает под ">=", а сборочница такое не поймает.

Не очень понятно по этому тексту, что Вы называете "как надо" и чего 
хочется. Но скорее всего в rpm действительно было реализовано более хитрое 
поведение, чем Вы предполагаете, про которое пишет at@ ниже, и для 
некоторых вариантов того, что хочется, оно действительно подойдёт.

> Племя младое незнакомое. Пишите без Epoch, должно работать как надо.

Попробуем на примере разобрать, чего может хотеться, и совпадает ли это с 
тем, про что Вы думали.

Например, у пакета p1 в истории были сборки:

A: 1-alt1
B: 1-alt2
C: 1-alt3
D: 2-alt1
E: 2-alt2
F: 2-alt3
G: 1:1-alt1
H: 1:1-alt2
I: 1:1-alt3
J: 1:2-alt1
K: 1:2-alt2
L: 1:2-alt3

Когда текущим релизом было E, написали где-то Requires: p1 >= 2-alt2.

Хочется ли, чтобы G, H, I могли удволетворить этот Requires?

Я так понял Ваши слова, что не хочется. (Правильно?) Т.е. не хочется, 
чтобы более старая версия (upstream-а) могла удволетворить эту 
завиисимость, пусть и с повышенной эпохой в пакете?


Но если сравнивать тройки E;V-R и написать Requires: p1 >= 0:2-alt2, то уж 
точно его удовлетворят все релизы после E:
E, F, G, H, I, J, K, L,
а это то, чего не хочется.

Хорошо бы уметь просить сравнивать только версию, без эпохи. Если это 
будет работать при написании Requires: p1 >= 2-alt2, то такую зависимость 
удволетворять будут только:
E, F, K, L.

Это ближе к тому, чего хочется?

Вопрос для всех на подумать:

Во всей этой истории я не очень понимаю, какое значение может играть номер 
релиза после версии. Мне кажется, что исключать J (1:2-alt1) из набора 
удовлетворяющих зависимость в последнем примере как-то странно, ведь этот 
alt2 может никак не быть связан с alt2 в E (2-alt2).

Не правильнее было бы считать, что есть два разумных формата Requires:

1) Requires: p1 >= 0:2-alt2 (уже разобран, удволетворяют все от E до L)

2) Requires: p1 >= 2

чтобы его удовлетворяли D, E, F, J, K, L?

А Requires: p1 >= 2-alt2 считать недостаточно ясным: что хотел автор? 
Может быть, раз он указал точный релиз, он хотел сравнения как в 1)?

Технически так написать возможно и оно будет, наверное, 
проинтерпретировано, как я уже сказал (удовлтетворять будут E, F, K, L). 
Но стоит ли рекомендовать эту неясную форму?

В свете записанных мной здесь соображений мне кажется, что рекомендовать 
лучше либо 1), либо 2), а Requires: p1 >= 2-alt2 не рекомендовать. Что 
думаете?

-- 
Best regards,
Ivan

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [devel] Сборка новой версии после использования epoch
  2020-02-10  1:28                       ` Ivan Zakharyaschev
@ 2020-02-10  2:36                         ` Ivan Zakharyaschev
  2020-02-11 22:28                           ` Mikhail Novosyolov
  0 siblings, 1 reply; 29+ messages in thread
From: Ivan Zakharyaschev @ 2020-02-10  2:36 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 21563 bytes --]


On Mon, 10 Feb 2020, Ivan Zakharyaschev wrote:

> Например, у пакета p1 в истории были сборки:
> 
> A: 1-alt1
> B: 1-alt2
> C: 1-alt3
> D: 2-alt1
> E: 2-alt2
> F: 2-alt3
> G: 1:1-alt1
> H: 1:1-alt2
> I: 1:1-alt3
> J: 1:2-alt1
> K: 1:2-alt2
> L: 1:2-alt3

> Не правильнее было бы считать, что есть два разумных формата Requires:
> 
> 1) Requires: p1 >= 0:2-alt2 (уже разобран, удволетворяют все от E до L)
> 
> 2) Requires: p1 >= 2
> 
> чтобы его удовлетворяли D, E, F, J, K, L?
> 
> А Requires: p1 >= 2-alt2 считать недостаточно ясным: что хотел автор? 
> Может быть, раз он указал точный релиз, он хотел сравнения как в 1)?
> 
> Технически так написать возможно и оно будет, наверное, 
> проинтерпретировано, как я уже сказал (удовлтетворять будут E, F, K, L). 
> Но стоит ли рекомендовать эту неясную форму?
> 
> В свете записанных мной здесь соображений мне кажется, что рекомендовать 
> лучше либо 1), либо 2), а Requires: p1 >= 2-alt2 не рекомендовать. Что 
> думаете?

Вот реальное поведение rpm в p8 по отношению к:

1) Requires с указанием E:V-R
2) Requires с указанием только V
3) Requires с указанием V-R

(На основе лога
http://git.altlinux.org/tasks/archive/done/_237/243303/build/300/x86_64/log .)

########################################
# 1) Requires с указанием E:V-R
########################################

$ < /tasks/archive/done/_$(( 243303 / 1024 ))/243303/build/300/x86_64/log sed -re '/^TESTING / i TESTED' |sed -nre '\|^\+ \./makeme\.sh.*1$|,\|^\+ \./makeme\.sh.*clean$| { /TESTING .*_with_reqGreaterEpoch$/,/TESTED/ p; }'
TESTING installable_dummy2_with_reqGreaterEpoch
make[1]: Entering directory `/usr/src/RPM/BUILD/rpminstall-tests-1.1.3'
mkdir -p SPECS
cat >SPECS/reqGreaterEpoch.spec <<-'EOF'
Name: reqGreaterEpoch

Version: 1
Release: alt1
License: dummy license
Group: Other
Summary: dummy summy

BuildArch: noarch


AutoReq: no
AutoProv: no
Requires: dummy > 0:1-alt1

%description
dummy desc

%install

mkdir -p %buildroot`dirname /etc/rpminstall-tests/%name`
# Fill it with some unique value; each time new.
# (We rely on the fact that %%buildroot comes from mktemp.)
echo %buildroot >%buildroot/etc/rpminstall-tests/%name


%files
/etc/rpminstall-tests/%name
EOF
. /usr/lib/rpm/tmpdir.sh
rpmbuild --define "_tmppath $tmpdir" --define "_builddir $tmpdir/BUILD" --define "_topdir /usr/src/RPM/BUILD/rpminstall-tests-1.1.3" --define '_sourcedir /usr/src/RPM/BUILD/rpminstall-tests-1.1.3' --define '_specdir /usr/src/RPM/BUILD/rpminstall-tests-1.1.3/SPECS' --define '_srcrpmdir /usr/src/RPM/BUILD/rpminstall-tests-1.1.3/SRPMS/reqGreaterEpoch' --define '_rpmdir /usr/src/RPM/BUILD/rpminstall-tests-1.1.3/RPMS/reqGreaterEpoch' --define 'disttag %nil' -bb SPECS/reqGreaterEpoch.spec
Executing(%install): /bin/sh -e /usr/src/tmp/sh.gBIe5aAr/rpm-tmp.35258
+ umask 022
+ /bin/mkdir -p /usr/src/tmp/sh.gBIe5aAr/BUILD
+ cd /usr/src/tmp/sh.gBIe5aAr/BUILD
+ /bin/chmod -Rf u+rwX -- /usr/src/tmp/sh.gBIe5aAr/reqGreaterEpoch-buildroot
+ :
+ /bin/rm -rf -- /usr/src/tmp/sh.gBIe5aAr/reqGreaterEpoch-buildroot
++ dirname /etc/rpminstall-tests/reqGreaterEpoch
+ mkdir -p /usr/src/tmp/sh.gBIe5aAr/reqGreaterEpoch-buildroot/etc/rpminstall-tests
+ echo /usr/src/tmp/sh.gBIe5aAr/reqGreaterEpoch-buildroot
+ /usr/lib/rpm/brp-alt
Cleaning files in /usr/src/tmp/sh.gBIe5aAr/reqGreaterEpoch-buildroot (auto)
Verifying and fixing files in /usr/src/tmp/sh.gBIe5aAr/reqGreaterEpoch-buildroot (binconfig,pkgconfig,libtool,desktop)
Compressing files in /usr/src/tmp/sh.gBIe5aAr/reqGreaterEpoch-buildroot (auto)
Verifying ELF objects in /usr/src/tmp/sh.gBIe5aAr/reqGreaterEpoch-buildroot (arch=normal,fhs=normal,lfs=relaxed,lint=relaxed,rpath=normal,stack=normal,textrel=normal,unresolved=normal)
Hardlinking identical .pyc and .pyo files
Processing files: reqGreaterEpoch-1-alt1
Requires: dummy > 0:1-alt1
Wrote: /usr/src/RPM/BUILD/rpminstall-tests-1.1.3/RPMS/reqGreaterEpoch/noarch/reqGreaterEpoch-1-alt1.noarch.rpm
rpm --dbpath '/usr/src/tmp/sh.ouaNq0ha' --justdb -i RPMS/dummy2/noarch/dummy-1-alt2.noarch.rpm RPMS/reqGreaterEpoch/noarch/reqGreaterEpoch-1-alt1.noarch.rpm
make[1]: Leaving directory `/usr/src/RPM/BUILD/rpminstall-tests-1.1.3'
TESTED
TESTING noninstallable_dummy0_with_reqGreaterEpoch
make[1]: Entering directory `/usr/src/RPM/BUILD/rpminstall-tests-1.1.3'
! rpm --dbpath '/usr/src/tmp/sh.N1bUUdY1' --justdb -i RPMS/dummy0/noarch/dummy-1-alt0.noarch.rpm RPMS/reqGreaterEpoch/noarch/reqGreaterEpoch-1-alt1.noarch.rpm
error: failed dependencies:
	dummy > 0:1-alt1 is needed by reqGreaterEpoch-1-alt1
make[1]: Leaving directory `/usr/src/RPM/BUILD/rpminstall-tests-1.1.3'
TESTED
TESTING installable_dummyV2_with_reqGreaterEpoch
make[1]: Entering directory `/usr/src/RPM/BUILD/rpminstall-tests-1.1.3'
rpm --dbpath '/usr/src/tmp/sh.r5sidyqk' --justdb -i RPMS/dummyV2/noarch/dummy-2-alt1.noarch.rpm RPMS/reqGreaterEpoch/noarch/reqGreaterEpoch-1-alt1.noarch.rpm
make[1]: Leaving directory `/usr/src/RPM/BUILD/rpminstall-tests-1.1.3'
TESTED
TESTING noninstallable_dummyV0_with_reqGreaterEpoch
make[1]: Entering directory `/usr/src/RPM/BUILD/rpminstall-tests-1.1.3'
! rpm --dbpath '/usr/src/tmp/sh.kHGnAJFS' --justdb -i RPMS/dummyV0/noarch/dummy-0-alt1.noarch.rpm RPMS/reqGreaterEpoch/noarch/reqGreaterEpoch-1-alt1.noarch.rpm
error: failed dependencies:
	dummy > 0:1-alt1 is needed by reqGreaterEpoch-1-alt1
make[1]: Leaving directory `/usr/src/RPM/BUILD/rpminstall-tests-1.1.3'
TESTED
TESTING installable_dummyEpoch1_with_reqGreaterEpoch
make[1]: Entering directory `/usr/src/RPM/BUILD/rpminstall-tests-1.1.3'
mkdir -p SPECS
cat >SPECS/dummyEpoch1.spec <<-'EOF'
Name: dummy
Epoch: 1
Version: 1
Release: alt1
License: dummy license
Group: Other
Summary: dummy summy

BuildArch: noarch


AutoReq: no
AutoProv: no


%description
dummy desc

%install

mkdir -p %buildroot`dirname /etc/rpminstall-tests/%name`
# Fill it with some unique value; each time new.
# (We rely on the fact that %%buildroot comes from mktemp.)
echo %buildroot >%buildroot/etc/rpminstall-tests/%name


%files
/etc/rpminstall-tests/%name
EOF
. /usr/lib/rpm/tmpdir.sh
rpmbuild --define "_tmppath $tmpdir" --define "_builddir $tmpdir/BUILD" --define "_topdir /usr/src/RPM/BUILD/rpminstall-tests-1.1.3" --define '_sourcedir /usr/src/RPM/BUILD/rpminstall-tests-1.1.3' --define '_specdir /usr/src/RPM/BUILD/rpminstall-tests-1.1.3/SPECS' --define '_srcrpmdir /usr/src/RPM/BUILD/rpminstall-tests-1.1.3/SRPMS/dummyEpoch1' --define '_rpmdir /usr/src/RPM/BUILD/rpminstall-tests-1.1.3/RPMS/dummyEpoch1' --define 'disttag %nil' -bb SPECS/dummyEpoch1.spec
Executing(%install): /bin/sh -e /usr/src/tmp/sh.pgCUnuAy/rpm-tmp.9047
+ umask 022
+ /bin/mkdir -p /usr/src/tmp/sh.pgCUnuAy/BUILD
+ cd /usr/src/tmp/sh.pgCUnuAy/BUILD
+ /bin/chmod -Rf u+rwX -- /usr/src/tmp/sh.pgCUnuAy/dummy-buildroot
+ :
+ /bin/rm -rf -- /usr/src/tmp/sh.pgCUnuAy/dummy-buildroot
++ dirname /etc/rpminstall-tests/dummy
+ mkdir -p /usr/src/tmp/sh.pgCUnuAy/dummy-buildroot/etc/rpminstall-tests
+ echo /usr/src/tmp/sh.pgCUnuAy/dummy-buildroot
+ /usr/lib/rpm/brp-alt
Cleaning files in /usr/src/tmp/sh.pgCUnuAy/dummy-buildroot (auto)
Verifying and fixing files in /usr/src/tmp/sh.pgCUnuAy/dummy-buildroot (binconfig,pkgconfig,libtool,desktop)
Compressing files in /usr/src/tmp/sh.pgCUnuAy/dummy-buildroot (auto)
Verifying ELF objects in /usr/src/tmp/sh.pgCUnuAy/dummy-buildroot (arch=normal,fhs=normal,lfs=relaxed,lint=relaxed,rpath=normal,stack=normal,textrel=normal,unresolved=normal)
Hardlinking identical .pyc and .pyo files
Processing files: dummy-1-alt1
Wrote: /usr/src/RPM/BUILD/rpminstall-tests-1.1.3/RPMS/dummyEpoch1/noarch/dummy-1-alt1.noarch.rpm
rpm --dbpath '/usr/src/tmp/sh.1Qsn4dny' --justdb -i RPMS/dummyEpoch1/noarch/dummy-1-alt1.noarch.rpm RPMS/reqGreaterEpoch/noarch/reqGreaterEpoch-1-alt1.noarch.rpm
make[1]: Leaving directory `/usr/src/RPM/BUILD/rpminstall-tests-1.1.3'
TESTED
TESTING noninstallable_dummy_with_reqGreaterEpoch
make[1]: Entering directory `/usr/src/RPM/BUILD/rpminstall-tests-1.1.3'
! rpm --dbpath '/usr/src/tmp/sh.c6EMm0v6' --justdb -i RPMS/dummy/noarch/dummy-1-alt1.noarch.rpm RPMS/reqGreaterEpoch/noarch/reqGreaterEpoch-1-alt1.noarch.rpm
error: failed dependencies:
	dummy > 0:1-alt1 is needed by reqGreaterEpoch-1-alt1
make[1]: Leaving directory `/usr/src/RPM/BUILD/rpminstall-tests-1.1.3'
TESTED
TESTING noninstallable_virtDummy_with_reqGreaterEpoch
make[1]: Entering directory `/usr/src/RPM/BUILD/rpminstall-tests-1.1.3'
! rpm --dbpath '/usr/src/tmp/sh.YwnGTrsH' --justdb -i RPMS/virtDummy/noarch/virtDummy-1-alt1.noarch.rpm RPMS/reqGreaterEpoch/noarch/reqGreaterEpoch-1-alt1.noarch.rpm
error: failed dependencies:
	dummy > 0:1-alt1 is needed by reqGreaterEpoch-1-alt1
make[1]: Leaving directory `/usr/src/RPM/BUILD/rpminstall-tests-1.1.3'
TESTED
TESTING noninstallable_virtDummyDisttag_with_reqGreaterEpoch
make[1]: Entering directory `/usr/src/RPM/BUILD/rpminstall-tests-1.1.3'
! rpm --dbpath '/usr/src/tmp/sh.YGwjGCJm' --justdb -i RPMS/virtDummyDisttag/noarch/virtDummyDisttag-1-alt1.noarch.rpm RPMS/reqGreaterEpoch/noarch/reqGreaterEpoch-1-alt1.noarch.rpm
error: failed dependencies:
	dummy > 0:1-alt1 is needed by reqGreaterEpoch-1-alt1
make[1]: Leaving directory `/usr/src/RPM/BUILD/rpminstall-tests-1.1.3'
TESTED

########################################
# 2) Requires с указанием только V
########################################

$ < /tasks/archive/done/_$(( 243303 / 1024 ))/243303/build/300/x86_64/log sed -re '/^TESTING / i TESTED' |sed -nre '\|^\+ \./makeme\.sh.*1$|,\|^\+ \./makeme\.sh.*clean$| { /TESTING .*_with_reqGreaterOnlyV$/,/TESTED/ p; }'       
TESTING noninstallable_dummy2_with_reqGreaterOnlyV
make[1]: Entering directory `/usr/src/RPM/BUILD/rpminstall-tests-1.1.3'
mkdir -p SPECS
cat >SPECS/reqGreaterOnlyV.spec <<-'EOF'
Name: reqGreaterOnlyV

Version: 1
Release: alt1
License: dummy license
Group: Other
Summary: dummy summy

BuildArch: noarch


AutoReq: no
AutoProv: no
Requires: dummy > 1

%description
dummy desc

%install

mkdir -p %buildroot`dirname /etc/rpminstall-tests/%name`
# Fill it with some unique value; each time new.
# (We rely on the fact that %%buildroot comes from mktemp.)
echo %buildroot >%buildroot/etc/rpminstall-tests/%name


%files
/etc/rpminstall-tests/%name
EOF
. /usr/lib/rpm/tmpdir.sh
rpmbuild --define "_tmppath $tmpdir" --define "_builddir $tmpdir/BUILD" --define "_topdir /usr/src/RPM/BUILD/rpminstall-tests-1.1.3" --define '_sourcedir /usr/src/RPM/BUILD/rpminstall-tests-1.1.3' --define '_specdir /usr/src/RPM/BUILD/rpminstall-tests-1.1.3/SPECS' --define '_srcrpmdir /usr/src/RPM/BUILD/rpminstall-tests-1.1.3/SRPMS/reqGreaterOnlyV' --define '_rpmdir /usr/src/RPM/BUILD/rpminstall-tests-1.1.3/RPMS/reqGreaterOnlyV' --define 'disttag %nil' -bb SPECS/reqGreaterOnlyV.spec
Executing(%install): /bin/sh -e /usr/src/tmp/sh.pE8kdoKF/rpm-tmp.70745
+ umask 022
+ /bin/mkdir -p /usr/src/tmp/sh.pE8kdoKF/BUILD
+ cd /usr/src/tmp/sh.pE8kdoKF/BUILD
+ /bin/chmod -Rf u+rwX -- /usr/src/tmp/sh.pE8kdoKF/reqGreaterOnlyV-buildroot
+ :
+ /bin/rm -rf -- /usr/src/tmp/sh.pE8kdoKF/reqGreaterOnlyV-buildroot
++ dirname /etc/rpminstall-tests/reqGreaterOnlyV
+ mkdir -p /usr/src/tmp/sh.pE8kdoKF/reqGreaterOnlyV-buildroot/etc/rpminstall-tests
+ echo /usr/src/tmp/sh.pE8kdoKF/reqGreaterOnlyV-buildroot
+ /usr/lib/rpm/brp-alt
Cleaning files in /usr/src/tmp/sh.pE8kdoKF/reqGreaterOnlyV-buildroot (auto)
Verifying and fixing files in /usr/src/tmp/sh.pE8kdoKF/reqGreaterOnlyV-buildroot (binconfig,pkgconfig,libtool,desktop)
Compressing files in /usr/src/tmp/sh.pE8kdoKF/reqGreaterOnlyV-buildroot (auto)
Verifying ELF objects in /usr/src/tmp/sh.pE8kdoKF/reqGreaterOnlyV-buildroot (arch=normal,fhs=normal,lfs=relaxed,lint=relaxed,rpath=normal,stack=normal,textrel=normal,unresolved=normal)
Hardlinking identical .pyc and .pyo files
Processing files: reqGreaterOnlyV-1-alt1
Requires: dummy > 1
Wrote: /usr/src/RPM/BUILD/rpminstall-tests-1.1.3/RPMS/reqGreaterOnlyV/noarch/reqGreaterOnlyV-1-alt1.noarch.rpm
! rpm --dbpath '/usr/src/tmp/sh.OPaCWGCn' --justdb -i RPMS/dummy2/noarch/dummy-1-alt2.noarch.rpm RPMS/reqGreaterOnlyV/noarch/reqGreaterOnlyV-1-alt1.noarch.rpm
error: failed dependencies:
	dummy > 1 is needed by reqGreaterOnlyV-1-alt1
make[1]: Leaving directory `/usr/src/RPM/BUILD/rpminstall-tests-1.1.3'
TESTED
TESTING noninstallable_dummy0_with_reqGreaterOnlyV
make[1]: Entering directory `/usr/src/RPM/BUILD/rpminstall-tests-1.1.3'
! rpm --dbpath '/usr/src/tmp/sh.DRci80Iv' --justdb -i RPMS/dummy0/noarch/dummy-1-alt0.noarch.rpm RPMS/reqGreaterOnlyV/noarch/reqGreaterOnlyV-1-alt1.noarch.rpm
error: failed dependencies:
	dummy > 1 is needed by reqGreaterOnlyV-1-alt1
make[1]: Leaving directory `/usr/src/RPM/BUILD/rpminstall-tests-1.1.3'
TESTED
TESTING installable_dummyV2_with_reqGreaterOnlyV
make[1]: Entering directory `/usr/src/RPM/BUILD/rpminstall-tests-1.1.3'
rpm --dbpath '/usr/src/tmp/sh.owseR0e3' --justdb -i RPMS/dummyV2/noarch/dummy-2-alt1.noarch.rpm RPMS/reqGreaterOnlyV/noarch/reqGreaterOnlyV-1-alt1.noarch.rpm
make[1]: Leaving directory `/usr/src/RPM/BUILD/rpminstall-tests-1.1.3'
TESTED
TESTING noninstallable_dummyV0_with_reqGreaterOnlyV
make[1]: Entering directory `/usr/src/RPM/BUILD/rpminstall-tests-1.1.3'
! rpm --dbpath '/usr/src/tmp/sh.VVb4c7OR' --justdb -i RPMS/dummyV0/noarch/dummy-0-alt1.noarch.rpm RPMS/reqGreaterOnlyV/noarch/reqGreaterOnlyV-1-alt1.noarch.rpm
error: failed dependencies:
	dummy > 1 is needed by reqGreaterOnlyV-1-alt1
make[1]: Leaving directory `/usr/src/RPM/BUILD/rpminstall-tests-1.1.3'
TESTED
TESTING noninstallable_dummyEpoch1_with_reqGreaterOnlyV
make[1]: Entering directory `/usr/src/RPM/BUILD/rpminstall-tests-1.1.3'
! rpm --dbpath '/usr/src/tmp/sh.67EUKrtG' --justdb -i RPMS/dummyEpoch1/noarch/dummy-1-alt1.noarch.rpm RPMS/reqGreaterOnlyV/noarch/reqGreaterOnlyV-1-alt1.noarch.rpm
error: failed dependencies:
	dummy > 1 is needed by reqGreaterOnlyV-1-alt1
make[1]: Leaving directory `/usr/src/RPM/BUILD/rpminstall-tests-1.1.3'
TESTED
TESTING noninstallable_dummy_with_reqGreaterOnlyV
make[1]: Entering directory `/usr/src/RPM/BUILD/rpminstall-tests-1.1.3'
! rpm --dbpath '/usr/src/tmp/sh.olD7rmea' --justdb -i RPMS/dummy/noarch/dummy-1-alt1.noarch.rpm RPMS/reqGreaterOnlyV/noarch/reqGreaterOnlyV-1-alt1.noarch.rpm
error: failed dependencies:
	dummy > 1 is needed by reqGreaterOnlyV-1-alt1
make[1]: Leaving directory `/usr/src/RPM/BUILD/rpminstall-tests-1.1.3'
TESTED
TESTING noninstallable_virtDummy_with_reqGreaterOnlyV
make[1]: Entering directory `/usr/src/RPM/BUILD/rpminstall-tests-1.1.3'
! rpm --dbpath '/usr/src/tmp/sh.t7JvR3HY' --justdb -i RPMS/virtDummy/noarch/virtDummy-1-alt1.noarch.rpm RPMS/reqGreaterOnlyV/noarch/reqGreaterOnlyV-1-alt1.noarch.rpm
error: failed dependencies:
	dummy > 1 is needed by reqGreaterOnlyV-1-alt1
make[1]: Leaving directory `/usr/src/RPM/BUILD/rpminstall-tests-1.1.3'
TESTED
TESTING noninstallable_virtDummyDisttag_with_reqGreaterOnlyV
make[1]: Entering directory `/usr/src/RPM/BUILD/rpminstall-tests-1.1.3'
! rpm --dbpath '/usr/src/tmp/sh.amewnMAy' --justdb -i RPMS/virtDummyDisttag/noarch/virtDummyDisttag-1-alt1.noarch.rpm RPMS/reqGreaterOnlyV/noarch/reqGreaterOnlyV-1-alt1.noarch.rpm
error: failed dependencies:
	dummy > 1 is needed by reqGreaterOnlyV-1-alt1
make[1]: Leaving directory `/usr/src/RPM/BUILD/rpminstall-tests-1.1.3'
TESTED

########################################
# 3) Requires с указанием V-R
########################################

$ < /tasks/archive/done/_$(( 243303 / 1024 ))/243303/build/300/x86_64/log sed -re '/^TESTING / i TESTED' |sed -nre '\|^\+ \./makeme\.sh.*1$|,\|^\+ \./makeme\.sh.*clean$| { /TESTING .*_with_reqGreater$/,/TESTED/ p; }'       
TESTING installable_dummy2_with_reqGreater
make[1]: Entering directory `/usr/src/RPM/BUILD/rpminstall-tests-1.1.3'
mkdir -p SPECS
cat >SPECS/reqGreater.spec <<-'EOF'
Name: reqGreater

Version: 1
Release: alt1
License: dummy license
Group: Other
Summary: dummy summy

BuildArch: noarch


AutoReq: no
AutoProv: no
Requires: dummy > 1-alt1

%description
dummy desc

%install

mkdir -p %buildroot`dirname /etc/rpminstall-tests/%name`
# Fill it with some unique value; each time new.
# (We rely on the fact that %%buildroot comes from mktemp.)
echo %buildroot >%buildroot/etc/rpminstall-tests/%name


%files
/etc/rpminstall-tests/%name
EOF
. /usr/lib/rpm/tmpdir.sh
rpmbuild --define "_tmppath $tmpdir" --define "_builddir $tmpdir/BUILD" --define "_topdir /usr/src/RPM/BUILD/rpminstall-tests-1.1.3" --define '_sourcedir /usr/src/RPM/BUILD/rpminstall-tests-1.1.3' --define '_specdir /usr/src/RPM/BUILD/rpminstall-tests-1.1.3/SPECS' --define '_srcrpmdir /usr/src/RPM/BUILD/rpminstall-tests-1.1.3/SRPMS/reqGreater' --define '_rpmdir /usr/src/RPM/BUILD/rpminstall-tests-1.1.3/RPMS/reqGreater' --define 'disttag %nil' -bb SPECS/reqGreater.spec
Executing(%install): /bin/sh -e /usr/src/tmp/sh.xR3c8fHj/rpm-tmp.67188
+ umask 022
+ /bin/mkdir -p /usr/src/tmp/sh.xR3c8fHj/BUILD
+ cd /usr/src/tmp/sh.xR3c8fHj/BUILD
+ /bin/chmod -Rf u+rwX -- /usr/src/tmp/sh.xR3c8fHj/reqGreater-buildroot
+ :
+ /bin/rm -rf -- /usr/src/tmp/sh.xR3c8fHj/reqGreater-buildroot
++ dirname /etc/rpminstall-tests/reqGreater
+ mkdir -p /usr/src/tmp/sh.xR3c8fHj/reqGreater-buildroot/etc/rpminstall-tests
+ echo /usr/src/tmp/sh.xR3c8fHj/reqGreater-buildroot
+ /usr/lib/rpm/brp-alt
Cleaning files in /usr/src/tmp/sh.xR3c8fHj/reqGreater-buildroot (auto)
Verifying and fixing files in /usr/src/tmp/sh.xR3c8fHj/reqGreater-buildroot (binconfig,pkgconfig,libtool,desktop)
Compressing files in /usr/src/tmp/sh.xR3c8fHj/reqGreater-buildroot (auto)
Verifying ELF objects in /usr/src/tmp/sh.xR3c8fHj/reqGreater-buildroot (arch=normal,fhs=normal,lfs=relaxed,lint=relaxed,rpath=normal,stack=normal,textrel=normal,unresolved=normal)
Hardlinking identical .pyc and .pyo files
Processing files: reqGreater-1-alt1
Requires: dummy > 1-alt1
Wrote: /usr/src/RPM/BUILD/rpminstall-tests-1.1.3/RPMS/reqGreater/noarch/reqGreater-1-alt1.noarch.rpm
rpm --dbpath '/usr/src/tmp/sh.AntTXmD6' --justdb -i RPMS/dummy2/noarch/dummy-1-alt2.noarch.rpm RPMS/reqGreater/noarch/reqGreater-1-alt1.noarch.rpm
make[1]: Leaving directory `/usr/src/RPM/BUILD/rpminstall-tests-1.1.3'
TESTED
TESTING noninstallable_dummy0_with_reqGreater
make[1]: Entering directory `/usr/src/RPM/BUILD/rpminstall-tests-1.1.3'
! rpm --dbpath '/usr/src/tmp/sh.EwXNrctu' --justdb -i RPMS/dummy0/noarch/dummy-1-alt0.noarch.rpm RPMS/reqGreater/noarch/reqGreater-1-alt1.noarch.rpm
error: failed dependencies:
	dummy > 1-alt1 is needed by reqGreater-1-alt1
make[1]: Leaving directory `/usr/src/RPM/BUILD/rpminstall-tests-1.1.3'
TESTED
TESTING installable_dummyV2_with_reqGreater
make[1]: Entering directory `/usr/src/RPM/BUILD/rpminstall-tests-1.1.3'
rpm --dbpath '/usr/src/tmp/sh.uAKOkNfs' --justdb -i RPMS/dummyV2/noarch/dummy-2-alt1.noarch.rpm RPMS/reqGreater/noarch/reqGreater-1-alt1.noarch.rpm
make[1]: Leaving directory `/usr/src/RPM/BUILD/rpminstall-tests-1.1.3'
TESTED
TESTING noninstallable_dummyV0_with_reqGreater
make[1]: Entering directory `/usr/src/RPM/BUILD/rpminstall-tests-1.1.3'
! rpm --dbpath '/usr/src/tmp/sh.OqK7gqKv' --justdb -i RPMS/dummyV0/noarch/dummy-0-alt1.noarch.rpm RPMS/reqGreater/noarch/reqGreater-1-alt1.noarch.rpm
error: failed dependencies:
	dummy > 1-alt1 is needed by reqGreater-1-alt1
make[1]: Leaving directory `/usr/src/RPM/BUILD/rpminstall-tests-1.1.3'
TESTED
TESTING installable_dummyEpoch1_with_reqGreater
make[1]: Entering directory `/usr/src/RPM/BUILD/rpminstall-tests-1.1.3'
rpm --dbpath '/usr/src/tmp/sh.3lu4iYq5' --justdb -i RPMS/dummyEpoch1/noarch/dummy-1-alt1.noarch.rpm RPMS/reqGreater/noarch/reqGreater-1-alt1.noarch.rpm
error: failed dependencies:
	dummy > 1-alt1 is needed by reqGreater-1-alt1
make[1]: *** [installable_dummyEpoch1_with_reqGreater] Error 2
make[1]: Leaving directory `/usr/src/RPM/BUILD/rpminstall-tests-1.1.3'
TESTED
TESTING noninstallable_dummy_with_reqGreater
make[1]: Entering directory `/usr/src/RPM/BUILD/rpminstall-tests-1.1.3'
! rpm --dbpath '/usr/src/tmp/sh.rOayxL1N' --justdb -i RPMS/dummy/noarch/dummy-1-alt1.noarch.rpm RPMS/reqGreater/noarch/reqGreater-1-alt1.noarch.rpm
error: failed dependencies:
	dummy > 1-alt1 is needed by reqGreater-1-alt1
make[1]: Leaving directory `/usr/src/RPM/BUILD/rpminstall-tests-1.1.3'
TESTED
TESTING noninstallable_virtDummy_with_reqGreater
make[1]: Entering directory `/usr/src/RPM/BUILD/rpminstall-tests-1.1.3'
! rpm --dbpath '/usr/src/tmp/sh.osC0xce8' --justdb -i RPMS/virtDummy/noarch/virtDummy-1-alt1.noarch.rpm RPMS/reqGreater/noarch/reqGreater-1-alt1.noarch.rpm
error: failed dependencies:
	dummy > 1-alt1 is needed by reqGreater-1-alt1
make[1]: Leaving directory `/usr/src/RPM/BUILD/rpminstall-tests-1.1.3'
TESTED
TESTING noninstallable_virtDummyDisttag_with_reqGreater
make[1]: Entering directory `/usr/src/RPM/BUILD/rpminstall-tests-1.1.3'
! rpm --dbpath '/usr/src/tmp/sh.C2IxVCf2' --justdb -i RPMS/virtDummyDisttag/noarch/virtDummyDisttag-1-alt1.noarch.rpm RPMS/reqGreater/noarch/reqGreater-1-alt1.noarch.rpm
error: failed dependencies:
	dummy > 1-alt1 is needed by reqGreater-1-alt1
make[1]: Leaving directory `/usr/src/RPM/BUILD/rpminstall-tests-1.1.3'
TESTED


У меня в 3) тест installable_dummyEpoch1_with_reqGreater ожидается
успешным из-за вот этих спорных вопросов про значение собственно
релиза в зависимости без эпохи, которые я озвучил в своём предыдущем
письме.

Реальное поведение, что сравниваются и версия, и релиз, но не эпоха в
таком случае, поэтому зависимость оказывается не удовлетворена.

Для полноты картины ещё не хватает примера с бОльшим релизом и бОльшей
эпохой. По моей системе я бы его назвал как-то вроде
installable_dummy2Epoch1_with_reqGreater.

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [devel] Сборка новой версии после использования epoch
  2020-02-10  2:36                         ` Ivan Zakharyaschev
@ 2020-02-11 22:28                           ` Mikhail Novosyolov
  2020-02-11 23:23                             ` Ivan Zakharyaschev
  2020-02-11 23:28                             ` Ivan Zakharyaschev
  0 siblings, 2 replies; 29+ messages in thread
From: Mikhail Novosyolov @ 2020-02-11 22:28 UTC (permalink / raw)
  To: devel

10.02.2020 05:36, Ivan Zakharyaschev пишет:
> У меня в 3) тест installable_dummyEpoch1_with_reqGreater ожидается
> успешным из-за вот этих спорных вопросов про значение собственно
> релиза в зависимости без эпохи, которые я озвучил в своём предыдущем
> письме.
>
> Реальное поведение, что сравниваются и версия, и релиз, но не эпоха в
> таком случае, поэтому зависимость оказывается не удовлетворена.

А в чем смысл такого переделывания основ сравнения версий в rpm? или в apt? Тогда вообще не понятно, как эпоха работает в ALT.

После такого http://git.altlinux.org/gears/p/pamtester.git?p=pamtester.git;a=commitdiff;h=a1f7608dcd53c63e327320246f441c05552ad0a5 установленный пакет обновится?

> Хочется ли, чтобы G, H, I могли удволетворить этот Requires?
>
> Я так понял Ваши слова, что не хочется. (Правильно?) Т.е. не хочется, 
> чтобы более старая версия (upstream-а) могла удволетворить эту 
> завиисимость, пусть и с повышенной эпохой в пакете?
Я ожидаю, что эпоха приоритетнее версии, т.е. 1:1-alt1 > 2-alt1 и что, если установлен пакет "foo = 1:1-alt1", то он удовлетворит зависимость "Requires: foo >= 2-alt1".



^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [devel] Сборка новой версии после использования epoch
  2020-02-11 22:28                           ` Mikhail Novosyolov
@ 2020-02-11 23:23                             ` Ivan Zakharyaschev
  2020-02-12  5:48                               ` Mikhail Novosyolov
  2020-02-11 23:28                             ` Ivan Zakharyaschev
  1 sibling, 1 reply; 29+ messages in thread
From: Ivan Zakharyaschev @ 2020-02-11 23:23 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 1734 bytes --]


On Wed, 12 Feb 2020, Mikhail Novosyolov wrote:

> > Хочется ли, чтобы G, H, I могли удволетворить этот Requires?
> >
> > Я так понял Ваши слова, что не хочется. (Правильно?) Т.е. не хочется, 
> > чтобы более старая версия (upstream-а) могла удволетворить эту 
> > завиисимость, пусть и с повышенной эпохой в пакете?
> Я ожидаю, что эпоха приоритетнее версии, т.е. 1:1-alt1 > 2-alt1 и что, если установлен пакет "foo = 1:1-alt1", то он удовлетворит зависимость "Requires: foo >= 2-alt1".

Нет, у нас не так.

Сравниваются только те компоненты, которые указаны в зависимости.

Например (в дополнение к Вашему), если Вы укажете Requires: foo >= 2

то неважно, какая эпоха будет у пакета, главное, чтобы версия была такая 
(2 или больше).

Обоснование этому я, например, знаю такое: чтобы после отката релиза (с 
повышением эпохи) требование версии всё равно работало правильно.

Т.е. если вы откатите foo на 1:1-alt1, то он не удволетворит
Requires: foo >= 2

Потому что во 2ой версии могли быть нужные фичи, которых ещё нет в 1ой.

Вам мой пример с указанием только версии не кажется более приемлемым?

Ещё я высказывал сомнение, что при указании релиза в Requires тоже стоит 
игнорировать эпоху. Потому что это всё-таки отсылка к конкретному релизу. 
И хотел, чтобы участника сообщества высказали совё мнение о таком 
потенциальном изменении. Жаль, что ни у кого не было мнения по этому 
вопросу, потому что он меня уже некоторое время волнует -- с тех пор, как 
я стал писать тесты на поведение rpm и должен был указать какое-то 
поведение как ожидаемое и правильное.

Мне показалось, что требовать сравнения релиза, но не сравнения эпохи 
в общем-то бессмысленно с т.ч. зрения мейнтейнера, пишущего спекфайл.

-- 
Best regards,
Ivan

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [devel] Сборка новой версии после использования epoch
  2020-02-11 22:28                           ` Mikhail Novosyolov
  2020-02-11 23:23                             ` Ivan Zakharyaschev
@ 2020-02-11 23:28                             ` Ivan Zakharyaschev
  2020-02-12  0:29                               ` Ivan Zakharyaschev
  1 sibling, 1 reply; 29+ messages in thread
From: Ivan Zakharyaschev @ 2020-02-11 23:28 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 1073 bytes --]

On Wed, 12 Feb 2020, Mikhail Novosyolov wrote:

> 10.02.2020 05:36, Ivan Zakharyaschev пишет:
> > У меня в 3) тест installable_dummyEpoch1_with_reqGreater ожидается
> > успешным из-за вот этих спорных вопросов про значение собственно
> > релиза в зависимости без эпохи, которые я озвучил в своём предыдущем
> > письме.
> >
> > Реальное поведение, что сравниваются и версия, и релиз, но не эпоха в
> > таком случае, поэтому зависимость оказывается не удовлетворена.
> 
> А в чем смысл такого переделывания основ сравнения версий в rpm? или в apt?

В rpm в первую очередь. (В apt должно быть также.)

Кажется, в своих изменениях в apt я старался не реализовать алгоритмы 
заново, а использовать функции из rpm.

> Тогда вообще не понятно, как эпоха работает в ALT.
> 
> После такого http://git.altlinux.org/gears/p/pamtester.git?p=pamtester.git;a=commitdiff;h=a1f7608dcd53c63e327320246f441c05552ad0a5 установленный пакет обновится?

Да, обновляемость у нас линейный порядок, в котором все компоненты 
сравниваются. (E:V-R:D@T)

Он не совпадает с удволетворением зависимостей.

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [devel] Сборка новой версии после использования epoch
  2020-02-11 23:28                             ` Ivan Zakharyaschev
@ 2020-02-12  0:29                               ` Ivan Zakharyaschev
  0 siblings, 0 replies; 29+ messages in thread
From: Ivan Zakharyaschev @ 2020-02-12  0:29 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 1210 bytes --]

On Wed, 12 Feb 2020, Ivan Zakharyaschev wrote:

> On Wed, 12 Feb 2020, Mikhail Novosyolov wrote:

> > Тогда вообще не понятно, как эпоха работает в ALT.
> > 
> > После такого http://git.altlinux.org/gears/p/pamtester.git?p=pamtester.git;a=commitdiff;h=a1f7608dcd53c63e327320246f441c05552ad0a5 установленный пакет обновится?
>
> Да,

(Да, обновится.)

> обновляемость у нас линейный порядок, в котором все компоненты 
> сравниваются. (E:V-R:D@T)
> 
> Он не совпадает с удволетворением зависимостей.

Дополнение:

Для порядка обновляемости, если в пакете была опущена эпоха, она считается 
равной 0.

Могу ещё дополнить подробностями:

Если отсутствует disttag (D) хотя бы у одного пакета (в паре 
сравниваемых), то он вообще не играет роли при сравнении.

Можно считать, что время сборки (T) есть у пакетов всегда и оно различно, 
поэтому порядок получается строго линейным: в последнюю очередь 
сравнивается оно (если сравнение предыдущих компонентов не привело к тому, 
что один пакет считается предпочтительным, т.е. другими словами, по 
предыдущим компонентам они оказались одинаково предпочтительными).

Наверное, если и время сборки совпало, пакеты не различимы при 
обновлении...

-- 
Best regards,
Ivan

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [devel] Сборка новой версии после использования epoch
  2020-02-11 23:23                             ` Ivan Zakharyaschev
@ 2020-02-12  5:48                               ` Mikhail Novosyolov
  2020-02-12 10:58                                 ` Ivan Zakharyaschev
  0 siblings, 1 reply; 29+ messages in thread
From: Mikhail Novosyolov @ 2020-02-12  5:48 UTC (permalink / raw)
  To: devel

12.02.2020 02:23, Ivan Zakharyaschev пишет:
> On Wed, 12 Feb 2020, Mikhail Novosyolov wrote:
>
>>> Хочется ли, чтобы G, H, I могли удволетворить этот Requires?
>>>
>>> Я так понял Ваши слова, что не хочется. (Правильно?) Т.е. не хочется, 
>>> чтобы более старая версия (upstream-а) могла удволетворить эту 
>>> завиисимость, пусть и с повышенной эпохой в пакете?
>> Я ожидаю, что эпоха приоритетнее версии, т.е. 1:1-alt1 > 2-alt1 и что, если установлен пакет "foo = 1:1-alt1", то он удовлетворит зависимость "Requires: foo >= 2-alt1".
> Нет, у нас не так.
>
> Сравниваются только те компоненты, которые указаны в зависимости.
>
> Например (в дополнение к Вашему), если Вы укажете Requires: foo >= 2
>
> то неважно, какая эпоха будет у пакета, главное, чтобы версия была такая 
> (2 или больше).
Спасибо за пояснение. Это бы еще где-то документировать...
> Обоснование этому я, например, знаю такое: чтобы после отката релиза (с 
> повышением эпохи) требование версии всё равно работало правильно.
>
> Т.е. если вы откатите foo на 1:1-alt1, то он не удволетворит
> Requires: foo >= 2
Для отката Release достаточно поднять Release на один, Вы, скорее всего, имели в виду откат Version.
> Потому что во 2ой версии могли быть нужные фичи, которых ещё нет в 1ой.
>
> Вам мой пример с указанием только версии не кажется более приемлемым?
>
> Ещё я высказывал сомнение, что при указании релиза в Requires тоже стоит 
> игнорировать эпоху. Потому что это всё-таки отсылка к конкретному релизу. 
> И хотел, чтобы участника сообщества высказали совё мнение о таком 
> потенциальном изменении.
возможно, если Release != ( alt1 | 1 | 0 | alt0 ) и т.д. Но тогда получится еще более непредсказуемо для недостаточно прошаренного мейнтейнера. Как-то привычно писать V-R, а не просто V, я бы релиз машинально на всякий случай и для читаемости написал.
> Жаль, что ни у кого не было мнения по этому 
> вопросу, потому что он меня уже некоторое время волнует -- с тех пор, как 
> я стал писать тесты на поведение rpm и должен был указать какое-то 
> поведение как ожидаемое и правильное.
>
> Мне показалось, что требовать сравнения релиза, но не сравнения эпохи 
> в общем-то бессмысленно с т.ч. зрения мейнтейнера, пишущего спекфайл.


^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [devel] Сборка новой версии после использования epoch
  2020-02-12  5:48                               ` Mikhail Novosyolov
@ 2020-02-12 10:58                                 ` Ivan Zakharyaschev
  2020-02-12 19:05                                   ` Mikhail Novosyolov
  0 siblings, 1 reply; 29+ messages in thread
From: Ivan Zakharyaschev @ 2020-02-12 10:58 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 2995 bytes --]

On Wed, 12 Feb 2020, Mikhail Novosyolov wrote:

> 12.02.2020 02:23, Ivan Zakharyaschev пишет:
> > On Wed, 12 Feb 2020, Mikhail Novosyolov wrote:
> >
> >>> Хочется ли, чтобы G, H, I могли удволетворить этот Requires?
> >>>
> >>> Я так понял Ваши слова, что не хочется. (Правильно?) Т.е. не хочется, 
> >>> чтобы более старая версия (upstream-а) могла удволетворить эту 
> >>> завиисимость, пусть и с повышенной эпохой в пакете?
> >> Я ожидаю, что эпоха приоритетнее версии, т.е. 1:1-alt1 > 2-alt1 и что, если установлен пакет "foo = 1:1-alt1", то он удовлетворит зависимость "Requires: foo >= 2-alt1".
> > Нет, у нас не так.
> >
> > Сравниваются только те компоненты, которые указаны в зависимости.
> >
> > Например (в дополнение к Вашему), если Вы укажете Requires: foo >= 2
> >
> > то неважно, какая эпоха будет у пакета, главное, чтобы версия была такая 
> > (2 или больше).
> Спасибо за пояснение. Это бы еще где-то документировать...

Предлагайте изменения, вносите изменения, если есть желание.

> > Обоснование этому я, например, знаю такое: чтобы после отката релиза (с 
> > повышением эпохи) требование версии всё равно работало правильно.
> >
> > Т.е. если вы откатите foo на 1:1-alt1, то он не удволетворит
> > Requires: foo >= 2
> Для отката Release достаточно поднять Release на один, Вы, скорее всего, имели в виду откат Version.

Да, Вы правы.

Если точнее, я имел в виду откат на ранее выпущенный пакет. При этом 
возможно и понижении Version.

> > Потому что во 2ой версии могли быть нужные фичи, которых ещё нет в 1ой.
> >
> > Вам мой пример с указанием только версии не кажется более приемлемым?
> >
> > Ещё я высказывал сомнение, что при указании релиза в Requires тоже стоит 
> > игнорировать эпоху. Потому что это всё-таки отсылка к конкретному релизу. 
> > И хотел, чтобы участника сообщества высказали совё мнение о таком 
> > потенциальном изменении.

> возможно, если Release != ( alt1 | 1 | 0 | alt0 ) и т.д. Но тогда 
> получится еще более непредсказуемо для недостаточно прошаренного 
> мейнтейнера. Как-то привычно писать V-R, а не просто V, я бы релиз 
> машинально на всякий случай и для читаемости написал.

Спасибо за мнение. Действительно, нынешнее правило хорошо хотя бы своей 
простотой (те компоненты, которые указаны в Requires, те и сравниваются).

Можно warning в rpm-build добавить, если кто-то пишет что-то вроде 
Requires: foo >= 2-alt1, но не указаывает эпоху. ("Осмысленно указывать 
только V или E:V-R")

> > Жаль, что ни у кого не было мнения по этому 
> > вопросу, потому что он меня уже некоторое время волнует -- с тех пор, как 
> > я стал писать тесты на поведение rpm и должен был указать какое-то 
> > поведение как ожидаемое и правильное.
> >
> > Мне показалось, что требовать сравнения релиза, но не сравнения эпохи 
> > в общем-то бессмысленно с т.ч. зрения мейнтейнера, пишущего спекфайл.
> _______________________________________________
> Devel mailing list
> Devel@lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/devel

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [devel] Сборка новой версии после использования epoch
  2020-02-12 10:58                                 ` Ivan Zakharyaschev
@ 2020-02-12 19:05                                   ` Mikhail Novosyolov
  2020-02-12 19:09                                     ` Mikhail Novosyolov
  0 siblings, 1 reply; 29+ messages in thread
From: Mikhail Novosyolov @ 2020-02-12 19:05 UTC (permalink / raw)
  To: devel

12.02.2020 13:58, Ivan Zakharyaschev пишет:
>> Спасибо за пояснение. Это бы еще где-то документировать...
> Предлагайте изменения, вносите изменения, если есть желание.

Даже если бы было большое желание таким заняться, чтобы это описать, пришлось бы изучить код альтовского форка rpm и apt. При чем очень тщательно. А это почти невозможно, нюансы пропустятся.

То есть я бы не стал ждать, что сообщество напишет подобную документацию.



^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [devel] Сборка новой версии после использования epoch
  2020-02-12 19:05                                   ` Mikhail Novosyolov
@ 2020-02-12 19:09                                     ` Mikhail Novosyolov
  2020-02-12 20:10                                       ` Ivan Zakharyaschev
  0 siblings, 1 reply; 29+ messages in thread
From: Mikhail Novosyolov @ 2020-02-12 19:09 UTC (permalink / raw)
  To: devel

12.02.2020 22:05, Mikhail Novosyolov пишет:
> 12.02.2020 13:58, Ivan Zakharyaschev пишет:
>>> Спасибо за пояснение. Это бы еще где-то документировать...
>> Предлагайте изменения, вносите изменения, если есть желание.
> Даже если бы было большое желание таким заняться, чтобы это описать, пришлось бы изучить код альтовского форка rpm и apt. При чем очень тщательно. А это почти невозможно, нюансы пропустятся.
>
> То есть я бы не стал ждать, что сообщество напишет подобную документацию.
>
Впрочем, Вы уже сами в предыдущих письмах документировали это поведение, но большинство людей не попадут на эти тексты, поскольку, чтобы туда попасть, потребуется весьма специфических поисковый запрос.



^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [devel] Сборка новой версии после использования epoch
  2020-02-12 19:09                                     ` Mikhail Novosyolov
@ 2020-02-12 20:10                                       ` Ivan Zakharyaschev
  0 siblings, 0 replies; 29+ messages in thread
From: Ivan Zakharyaschev @ 2020-02-12 20:10 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 4632 bytes --]

On Wed, 12 Feb 2020, Mikhail Novosyolov wrote:

> 12.02.2020 22:05, Mikhail Novosyolov пишет:
> > 12.02.2020 13:58, Ivan Zakharyaschev пишет:
> >>> Спасибо за пояснение. Это бы еще где-то документировать...
> >> Предлагайте изменения, вносите изменения, если есть желание.
> > Даже если бы было большое желание таким заняться, чтобы это описать, 
> > пришлось бы изучить код альтовского форка rpm и apt. При чем очень 
> > тщательно. А это почти невозможно, нюансы пропустятся.
> >
> > То есть я бы не стал ждать, что сообщество напишет подобную документацию.
> >
> Впрочем, Вы уже сами в предыдущих письмах документировали это поведение, 
> но большинство людей не попадут на эти тексты, поскольку, чтобы туда 
> попасть, потребуется весьма специфических поисковый запрос.

Предлагайте место, куда скопировать (где бы Вы нашли с большой 
вероятностью), или сами скопируйте, если есть желание.

Ещё это было описано в changelog (то, что касается отношения 
обновляемости между пакетами):

* Вт июн 11 2019 Ivan Zakharyaschev <imz@altlinux.org> 4.13.0.1-alt9
- lib: introduced rpmEVRDTCompare() (useful for APT).
- Changes in what is considered "newer" by rpm -U  pertaining to disttag
  comparison. (On the whole, to determine which package is "newer", first,
  the EVRs are compared, then the branch prefixes of the disttags if the
  disttags are present, and then the buildtimes.) The comparison of the disttags:
  + Before the comparison of disttags, an optional initial padding
    (which is terminated by :) is skipped. (This will be useful for
    generating >,<-deps compatible with disttag-unaware rpm & apt.)
  + If a disttag contains no + separator (old format), the branch prefix is
    assumed to be empty (and hence "older" than any other branch prefix).
  + If the branch prefix of a disttag is equal to %_priority_distbranch
    (and it is not empty), then it is "newer" than any other ones.
  + The branch prefixes of disttags are ordered by rpmvercmp() rather than
    lexicographically. (For example, the numeric parts of "p8" or "p10" are
    compared as numbers. However, the first letter in "p7" or "c8.1" is more
    significant.)
- Give a default value to %_priority_distbranch based on the disttag
  when this package is built (the prefix before +),
  i.e., the current repo branch by default.
  (Useful for getting the rpm tool with good behavior in branches (like p9)
  forked off Sisyphus after disttags were introduced.)

Также исходный код этой функции довольно понятен и даёт точное описание 
алгоритма обновляемости, которое я описывал словами вчера:

http://git.altlinux.org/gears/r/rpm.git?p=rpm.git;a=blob;f=lib/rpmvercmp.c;h=93bb4ff644e92460b331d57bd06d5a368d9b1eb6;hb=31123348f4c6b33563ffc986d0ba4db57c7477f5#l203

/* Decide which package is "newer" (for upgrade).
 */
int rpmEVRDTCompare(const struct rpmEVRDT * const fst,
                    const struct rpmEVRDT * const snd)
{
    int rc = 0; /* same "new" (an upgrade in neither direction is possible) */

    rc = rpm_cmp_uint(fst->has_epoch ? fst->epoch : 0,
                      snd->has_epoch ? snd->epoch : 0);

    if (rc) return rc;

    if (!fst->version && snd->version)
        rc = -1;
    if (fst->version && !snd->version)
        rc = 1;
    if (fst->version && snd->version)
        rc = rpmvercmp(fst->version,
                       snd->version);

    if (rc) return rc;

    if (!fst->release && snd->release)
        rc = -1;
    if (fst->release && !snd->release)
        rc = 1;
    if (fst->release && snd->release)
        rc = rpmvercmp(fst->release,
                       snd->release);

    if (rc) return rc;

    /* NB: if one of disttags is absent, we don't decide based on the disttags;
       rather we fallback to the decision based on the buildtimes.
    */
    if (fst->disttag && snd->disttag)
        rc = rpm_cmp_disttag(fst->disttag,
                             snd->disttag);

    if (rc) return rc;

    if (upgrade_honor_buildtime()) {
        /* Currently an absent buildtime is treated as the least one.
           Another possibility could be to skip buildtime comparison then.
           However, the current treatment is good for the work of hsh --with-stuff
           in case when buildtime is absent in the non-local repo indexes.
        */
        if (!fst->has_buildtime && snd->has_buildtime)
            rc = -1;
        if (fst->has_buildtime && !snd->has_buildtime)
            rc = 1;
        if (fst->has_buildtime && snd->has_buildtime)
            rc = rpm_cmp_uint(fst->buildtime,
                              snd->buildtime);
    }

    return rc;
}


-- 
Best regards,
Ivan

^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [devel] Сборка новой версии после использования epoch
  2020-01-29  9:35       ` Dmitry V. Levin
  2020-01-29  9:38         ` Alexey V. Vissarionov
@ 2020-03-11  1:44         ` Dmitry V. Levin
  2020-03-11  7:06           ` Pavel Vainerman
  1 sibling, 1 reply; 29+ messages in thread
From: Dmitry V. Levin @ 2020-03-11  1:44 UTC (permalink / raw)
  To: ALT Devel discussion list

On Wed, Jan 29, 2020 at 12:35:22PM +0300, Dmitry V. Levin wrote:
> On Wed, Jan 29, 2020 at 11:24:50AM +0300, Alexey V. Vissarionov wrote:
> > On 2020-01-29 02:15:37 +0300, Pavel Vainerman wrote:
> >  >>> Если я хочу собрать новую версию библиотеки 6.4.5 могу ли я
> >  >>> удалить epoch или это уже навсегда?
> >  > Я пока не определился. Новая версия требует c++17 (как раз мне
> >  > понадобилось в проекте). А я так понимаю ещё многие библиотеки
> >  > ещё не готовы к с++17. С другой стороны от libpqxx сейчас зависит
> >  > только один мой пакет )
> > 
> > Тогда возможен такой вариант: удалить оба пакета и собрать их уже
> > без epoch. Да, поломается обновление, но для двух пакетов это не
> > критично.
> 
> Скоро в сборочнице будет проверка, которая это жульничество запретит.

Теперь в сборочнице эта проверка есть.
Жульнические пакеты будут удалены.

Пример диагностики можно посмотреть тут:
https://lists.altlinux.org/pipermail/sisyphus-incominger/2020-March/563268.html


-- 
ldv


^ permalink raw reply	[flat|nested] 29+ messages in thread

* Re: [devel] Сборка новой версии после использования epoch
  2020-03-11  1:44         ` Dmitry V. Levin
@ 2020-03-11  7:06           ` Pavel Vainerman
  0 siblings, 0 replies; 29+ messages in thread
From: Pavel Vainerman @ 2020-03-11  7:06 UTC (permalink / raw)
  To: devel

>>> Тогда возможен такой вариант: удалить оба пакета и собрать их уже
>>> без epoch. Да, поломается обновление, но для двух пакетов это не
>>> критично.
>>
>> Скоро в сборочнице будет проверка, которая это жульничество запретит.
> 
> Теперь в сборочнице эта проверка есть.
> Жульнические пакеты будут удалены.
> 
> Пример диагностики можно посмотреть тут:
> https://lists.altlinux.org/pipermail/sisyphus-incominger/2020-March/563268.html

  Понял )

Я думал если никто от пакета не зависит, то это можно провернуть. Эх.


-- 
Pavel Vainerman


^ permalink raw reply	[flat|nested] 29+ messages in thread

end of thread, other threads:[~2020-03-11  7:06 UTC | newest]

Thread overview: 29+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-01-28 21:02 [devel] Сборка новой версии после использования epoch Pavel Vainerman
2020-01-28 22:23 ` Nikolai Kostrigin
2020-01-28 23:15   ` Pavel Vainerman
2020-01-29  8:24     ` Alexey V. Vissarionov
2020-01-29  9:35       ` Dmitry V. Levin
2020-01-29  9:38         ` Alexey V. Vissarionov
2020-01-29  9:41           ` Anton Farygin
2020-01-29 18:05             ` Vladimir D. Seleznev
2020-01-30  7:29               ` Sergey V Turchin
2020-01-30  7:32                 ` Nikolai Kostrigin
2020-01-30  7:52                   ` Sergey V Turchin
2020-01-30  7:55                     ` Sergey V Turchin
2020-01-30  7:58                       ` Nikolai Kostrigin
2020-01-30  8:52                         ` Sergey V Turchin
2020-02-09 11:58                   ` Mikhail Novosyolov
2020-02-09 17:28                     ` Alexey Tourbin
2020-02-10  1:28                       ` Ivan Zakharyaschev
2020-02-10  2:36                         ` Ivan Zakharyaschev
2020-02-11 22:28                           ` Mikhail Novosyolov
2020-02-11 23:23                             ` Ivan Zakharyaschev
2020-02-12  5:48                               ` Mikhail Novosyolov
2020-02-12 10:58                                 ` Ivan Zakharyaschev
2020-02-12 19:05                                   ` Mikhail Novosyolov
2020-02-12 19:09                                     ` Mikhail Novosyolov
2020-02-12 20:10                                       ` Ivan Zakharyaschev
2020-02-11 23:28                             ` Ivan Zakharyaschev
2020-02-12  0:29                               ` Ivan Zakharyaschev
2020-03-11  1:44         ` Dmitry V. Levin
2020-03-11  7:06           ` Pavel Vainerman

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git