Bug 46585

Summary: semver prerelease or tilde support
Product: Sisyphus Reporter: Anton Farygin <rider>
Component: rpm-buildAssignee: placeholder <placeholder>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: arseny, glebfm, imz, iv, ldv, placeholder, rider, vt
Version: unstable   
Hardware: x86_64   
OS: Linux   
See Also: https://bugzilla.altlinux.org/show_bug.cgi?id=47589
Bug Depends on:    
Bug Blocks: 46625    

Description Anton Farygin 2023-06-19 10:30:31 MSK
Было бы неплохо начать поддерживать стандарт semver в rpm-build (в rpmvercmp поддержка ~ есть)

'/usr/bin/hsh-buildreq-filter' -> 'chroot/.host/hsh-buildreq-filter'
error: line 2: Invalid symbol '~' (0x7e) in: Version: 2.0~rc1
hsh-rebuild: pkg.tar: failed to fetch build dependencies.

https://semver.org/
Comment 1 Vitaly Chikunov 2023-06-19 20:13:19 MSK
Semver обратно не совместим с нашим версионированием.
Comment 2 Alexey Gladkov 2023-06-19 20:32:05 MSK
(In reply to Anton Farygin from comment #0)
> Было бы неплохо начать поддерживать стандарт semver в rpm-build (в rpmvercmp
> поддержка ~ есть)

А какую задачу ты пытаешься этим решить ?

> '/usr/bin/hsh-buildreq-filter' -> 'chroot/.host/hsh-buildreq-filter'
> error: line 2: Invalid symbol '~' (0x7e) in: Version: 2.0~rc1
> hsh-rebuild: pkg.tar: failed to fetch build dependencies.
> 
> https://semver.org/

По указанной ссылке я не нашёл ничего про использование символа '~'.
Comment 3 Ivan A. Melnikov 2023-06-20 08:19:09 MSK
(In reply to Anton Farygin from comment #0)
> (в rpmvercmp поддержка ~ есть)

Какая? Я не видел.
Comment 4 Ivan A. Melnikov 2023-06-20 08:23:38 MSK
(In reply to Alexey Gladkov from comment #2)
> (In reply to Anton Farygin from comment #0)
[...]
> > https://semver.org/
> 
> По указанной ссылке я не нашёл ничего про использование символа '~'.

Наверное, имеется ввиду пункт 9:

A pre-release version MAY be denoted by appending a hyphen and a series of dot separated identifiers immediately following the patch version.

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

А вот что-то типа дебиановской тильды ('~') было бы удобно, но не уверен, что стоит того.
Comment 5 Anton Farygin 2023-06-20 09:05:16 MSK
(Ответ для Alexey Gladkov на комментарий #2)
> (In reply to Anton Farygin from comment #0)
> > Было бы неплохо начать поддерживать стандарт semver в rpm-build (в rpmvercmp
> > поддержка ~ есть)
> 
> А какую задачу ты пытаешься этим решить ?

поддержка prerelease

> 
> > '/usr/bin/hsh-buildreq-filter' -> 'chroot/.host/hsh-buildreq-filter'
> > error: line 2: Invalid symbol '~' (0x7e) in: Version: 2.0~rc1
> > hsh-rebuild: pkg.tar: failed to fetch build dependencies.
> > 
> > https://semver.org/
> 
> По указанной ссылке я не нашёл ничего про использование символа '~'.

Пункт 9. В Debian и Redhat реализован как 1.0~pre1
Comment 6 Anton Farygin 2023-06-20 09:08:33 MSK
(Ответ для Ivan A. Melnikov на комментарий #4)
> (In reply to Alexey Gladkov from comment #2)
> > (In reply to Anton Farygin from comment #0)
> [...]
> > > https://semver.org/
> > 
> > По указанной ссылке я не нашёл ничего про использование символа '~'.
> 
> Наверное, имеется ввиду пункт 9:
> 
> A pre-release version MAY be denoted by appending a hyphen and a series of
> dot separated identifiers immediately following the patch version.
> 
> Сейчас в версии и релизе использовать '-' нельзя, и пожалуйста, путь дальше
> так оно и будет, очень много чего сломается.
> 
> А вот что-то типа дебиановской тильды ('~') было бы удобно, но не уверен,
> что стоит того.

Хорошо, давайте пойдём по пути добавления ~, как сделано в Debian и RedHat.
Кстати, вот наш код в rpmvercmp, который разбирает сепаратор отдельно. Но он явно неполный.
https://git.altlinux.org/gears/r/rpm.git?p=rpm.git;a=blob;f=lib/rpmvercmp.c;h=93bb4ff644e92460b331d57bd06d5a368d9b1eb6;hb=6c89c4112caf5491c4510def4ec2d2689b748c65#l42
Comment 7 Anton Farygin 2023-06-20 09:17:09 MSK
> А вот что-то типа дебиановской тильды ('~') было бы удобно, но не уверен, что стоит того.

Сравнение версий между разными дистрибутивам не учитывает то, что мы по нашим правилам prerelease выносим в тэг release. Собирая пакеты  и ставя им невышешдшую версию мы сильно усложняем жизнь тем, кто хоть как-то сравнивает версии пакетов с чем-то, что не наше - например, это может касаться поиска CVE или ресурсов вроде https://repology.org
Comment 8 Anton Farygin 2023-06-20 09:21:27 MSK
Пример использования тильды для отделения prerelease, собственно с которого и возникло предложение добавить к нам такое же поведение:
https://repology.org/project/libcupsfilters/versions
Comment 9 Vitaly Chikunov 2023-06-20 23:28:23 MSK
(In reply to Anton Farygin from comment #6)
> Кстати, вот наш код в rpmvercmp, который разбирает сепаратор отдельно. Но он
> явно неполный.
> https://git.altlinux.org/gears/r/rpm.git?p=rpm.git;a=blob;f=lib/rpmvercmp.c;
> h=93bb4ff644e92460b331d57bd06d5a368d9b1eb6;
> hb=6c89c4112caf5491c4510def4ec2d2689b748c65#l42

А что там не полного? Вроде все ок.
Comment 10 Anton Farygin 2023-06-21 10:26:45 MSK
(Ответ для Vitaly Chikunov на комментарий #9)
> (In reply to Anton Farygin from comment #6)
> > Кстати, вот наш код в rpmvercmp, который разбирает сепаратор отдельно. Но он
> > явно неполный.
> > https://git.altlinux.org/gears/r/rpm.git?p=rpm.git;a=blob;f=lib/rpmvercmp.c;
> > h=93bb4ff644e92460b331d57bd06d5a368d9b1eb6;
> > hb=6c89c4112caf5491c4510def4ec2d2689b748c65#l42
> 
> А что там не полного? Вроде все ок.

Да, сейчас пересмотрел - вроде как действительно всё ок.
Т.е. - фактически надо разрешить его использование.
Comment 11 Vitaly Chikunov 2023-06-23 00:39:13 MSK
Поддержка тильды в Fedora rpm c 2012, а с 2016 ещё поддерживается карет.

В gnulib дебиановский алгоритм с 2008 (filevercmp, он же используется в `sort -V`) - тильда там есть, а карета нет.

  $ sort -V < a
  1.0~p1
  1.0-p1
  1.0.0-p1
  1.0^p1
Comment 12 Vitaly Chikunov 2023-06-26 04:32:03 MSK
https://git.altlinux.org/tasks/323684/
Comment 13 Vitaly Chikunov 2023-06-28 16:56:00 MSK
Предлагаю еще такое изменение в rpmvercmp:

https://git.altlinux.org/people/vt/packages/?p=rpm.git;a=commitdiff;h=2479d45000a84fe5ff8a2dd27bc150d8d40a329c

- Поддерживает evr:disttag@buildtime по опции --evr.
- Может сортировать stdin (аналог sort -V) по --sort.
- Может сортировать вывод rpm -qa, apt-cache pkgnames (то есть с префиксом имени пакета перед версией), по --names, --pkgnames, --separator=#.
Comment 14 Vitaly Chikunov 2023-06-30 00:08:42 MSK
*** Bug 46707 has been marked as a duplicate of this bug. ***
Comment 15 Repository Robot 2023-09-10 22:30:04 MSK
rpm-build-4.0.4.192-alt1 -> sisyphus:

 Sun Sep 10 2023 Vitaly Chikunov <vt@altlinux> 4.0.4.192-alt1
 - Backport support of tilde in version & release (ALT#46585).
Comment 16 Anton Farygin 2023-09-11 11:15:23 MSK
Спасибо. А можете ещё это же изменение бэкпортировать во все поддерживаемые бранчи ?
Что бы не было проблем со сборкой пакетов из sisyphus для, например, p9 или p10
Comment 17 Gleb F-Malinovskiy 2023-09-11 13:04:15 MSK
(In reply to Anton Farygin from comment #16)
> Спасибо. А можете ещё это же изменение бэкпортировать во все поддерживаемые
> бранчи ?
> Что бы не было проблем со сборкой пакетов из sisyphus для, например, p9 или
> p10
Я так понимаю, что это пока что скорее задел на будущее -- сборочница сейчас такую версию не должна пропустить.
Comment 18 Vitaly Chikunov 2023-09-11 19:45:13 MSK
Мы выясняли с ldv что нельзя только в p8 (там слишком старый rpm). А можно ли в p9 я не знаю. В p10 rpm-build копировался недавно так что наверное технически можно и туда добавить. В любом случае ещё кто-то должен внести правку в sisyphus_check и check/101-check-policydeps.
Comment 19 Arseny Maslennikov 2023-09-14 18:10:54 MSK
(In reply to Gleb F-Malinovskiy from comment #17)
> (In reply to Anton Farygin from comment #16)
> > Спасибо. А можете ещё это же изменение бэкпортировать во все поддерживаемые
> > бранчи ?
> > Что бы не было проблем со сборкой пакетов из sisyphus для, например, p9 или
> > p10
> Я так понимаю, что это пока что скорее задел на будущее -- сборочница сейчас
> такую версию не должна пропустить.

На четвёртый день индеец Зоркий Глаз в лице меня обнаружил, что у сарая нет стены: выходят релизы пакетов[1], которые собираются только пререлизным[2] clang, и это всё не просто собирается "в карман", а попадает в Sisyphus.
[1] https://git.altlinux.org/gears/y/yuzu.git?p=yuzu.git;a=commitdiff;h=d40f8e53daa659741e4e3a9b6bd06f6e0fc3ebea
[2] https://git.altlinux.org/gears/l/llvm17.0.git?p=llvm17.0.git;a=shortlog;h=727c542f89160731ff8a1894f1629dd1508a17af

Поэтому до этого инцидента я склонялся не торопиться и не настаивать на разрешении тильд в sisyphus-check к выходу p11, а теперь прихожу к выводу, что надо их там разрешить.

Завёл отдельную багу на sisyphus-check.