<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>46585</bug_id>
          
          <creation_ts>2023-06-19 10:30:31 +0300</creation_ts>
          <short_desc>semver prerelease or tilde support</short_desc>
          <delta_ts>2026-02-11 17:09:46 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>rpm-build</component>
          <version>unstable</version>
          <rep_platform>x86_64</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugzilla.altlinux.org/show_bug.cgi?id=47589</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>46625</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Anton Farygin">rider</reporter>
          <assigned_to name="placeholder@altlinux.org">placeholder</assigned_to>
          <cc>arseny</cc>
    
    <cc>glebfm</cc>
    
    <cc>imz</cc>
    
    <cc>iv</cc>
    
    <cc>lav</cc>
    
    <cc>ldv</cc>
    
    <cc>placeholder</cc>
    
    <cc>rider</cc>
    
    <cc>vt</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>227959</commentid>
    <comment_count>0</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2023-06-19 10:30:31 +0300</bug_when>
    <thetext>Было бы неплохо начать поддерживать стандарт semver в rpm-build (в rpmvercmp поддержка ~ есть)

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

https://semver.org/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228001</commentid>
    <comment_count>1</comment_count>
    <who name="Vitaly Chikunov">vt</who>
    <bug_when>2023-06-19 20:13:19 +0300</bug_when>
    <thetext>Semver обратно не совместим с нашим версионированием.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228004</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Gladkov">legion</who>
    <bug_when>2023-06-19 20:32:05 +0300</bug_when>
    <thetext>(In reply to Anton Farygin from comment #0)
&gt; Было бы неплохо начать поддерживать стандарт semver в rpm-build (в rpmvercmp
&gt; поддержка ~ есть)

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

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

По указанной ссылке я не нашёл ничего про использование символа &apos;~&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228026</commentid>
    <comment_count>3</comment_count>
    <who name="Ivan A. Melnikov">iv</who>
    <bug_when>2023-06-20 08:19:09 +0300</bug_when>
    <thetext>(In reply to Anton Farygin from comment #0)
&gt; (в rpmvercmp поддержка ~ есть)

Какая? Я не видел.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228027</commentid>
    <comment_count>4</comment_count>
    <who name="Ivan A. Melnikov">iv</who>
    <bug_when>2023-06-20 08:23:38 +0300</bug_when>
    <thetext>(In reply to Alexey Gladkov from comment #2)
&gt; (In reply to Anton Farygin from comment #0)
[...]
&gt; &gt; https://semver.org/
&gt; 
&gt; По указанной ссылке я не нашёл ничего про использование символа &apos;~&apos;.

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

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

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

А вот что-то типа дебиановской тильды (&apos;~&apos;) было бы удобно, но не уверен, что стоит того.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228030</commentid>
    <comment_count>5</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2023-06-20 09:05:16 +0300</bug_when>
    <thetext>(Ответ для Alexey Gladkov на комментарий #2)
&gt; (In reply to Anton Farygin from comment #0)
&gt; &gt; Было бы неплохо начать поддерживать стандарт semver в rpm-build (в rpmvercmp
&gt; &gt; поддержка ~ есть)
&gt; 
&gt; А какую задачу ты пытаешься этим решить ?

поддержка prerelease

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

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

Хорошо, давайте пойдём по пути добавления ~, как сделано в 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</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228032</commentid>
    <comment_count>7</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2023-06-20 09:17:09 +0300</bug_when>
    <thetext>&gt; А вот что-то типа дебиановской тильды (&apos;~&apos;) было бы удобно, но не уверен, что стоит того.

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

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

Да, сейчас пересмотрел - вроде как действительно всё ок.
Т.е. - фактически надо разрешить его использование.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228256</commentid>
    <comment_count>11</comment_count>
    <who name="Vitaly Chikunov">vt</who>
    <bug_when>2023-06-23 00:39:13 +0300</bug_when>
    <thetext>Поддержка тильды в Fedora rpm c 2012, а с 2016 ещё поддерживается карет.

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

  $ sort -V &lt; a
  1.0~p1
  1.0-p1
  1.0.0-p1
  1.0^p1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228341</commentid>
    <comment_count>12</comment_count>
    <who name="Vitaly Chikunov">vt</who>
    <bug_when>2023-06-26 04:32:03 +0300</bug_when>
    <thetext>https://git.altlinux.org/tasks/323684/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228516</commentid>
    <comment_count>13</comment_count>
    <who name="Vitaly Chikunov">vt</who>
    <bug_when>2023-06-28 16:56:00 +0300</bug_when>
    <thetext>Предлагаю еще такое изменение в 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=#.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228622</commentid>
    <comment_count>14</comment_count>
    <who name="Vitaly Chikunov">vt</who>
    <bug_when>2023-06-30 00:08:42 +0300</bug_when>
    <thetext>*** Bug 46707 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232798</commentid>
    <comment_count>15</comment_count>
    <who name="Repository Robot">repository-robot</who>
    <bug_when>2023-09-10 22:30:04 +0300</bug_when>
    <thetext>rpm-build-4.0.4.192-alt1 -&gt; sisyphus:

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

На четвёртый день индеец Зоркий Глаз в лице меня обнаружил, что у сарая нет стены: выходят релизы пакетов[1], которые собираются только пререлизным[2] clang, и это всё не просто собирается &quot;в карман&quot;, а попадает в 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.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281823</commentid>
    <comment_count>20</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2026-02-10 20:33:24 +0300</bug_when>
    <thetext>(Ответ для Arseny Maslennikov на комментарий #19)
...
&gt; Завёл отдельную багу на sisyphus-check.
https://bugzilla.altlinux.org/47589</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281827</commentid>
    <comment_count>21</comment_count>
    <who name="Vitaly Chikunov">vt</who>
    <bug_when>2026-02-10 21:18:03 +0300</bug_when>
    <thetext>Мы ставим версию-релиз в тэгах, а тильда спецсимвол для git.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281828</commentid>
    <comment_count>22</comment_count>
    <who name="Arseny Maslennikov">arseny</who>
    <bug_when>2026-02-10 21:22:24 +0300</bug_when>
    <thetext>(In reply to Vitaly Chikunov from comment #21)
&gt; Мы ставим версию-релиз в тэгах, а тильда спецсимвол для git.
Т. е. надо придумать какую-то подстроку вместо тильды, которая попадёт в git tag. Главное, чтобы gear-create-tag автоматически работал.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281829</commentid>
    <comment_count>23</comment_count>
    <who name="Vitaly Chikunov">vt</who>
    <bug_when>2026-02-10 22:14:11 +0300</bug_when>
    <thetext>Думаю, это невозможно придумать. А если где-то есть проверки на наличие версии в тэге, то все они сломаются. Так что можно откатывать поддержку тильды отовсюду, это была тупиковая идея.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281836</commentid>
    <comment_count>24</comment_count>
    <who name="Arseny Maslennikov">arseny</who>
    <bug_when>2026-02-11 10:31:01 +0300</bug_when>
    <thetext>(In reply to Vitaly Chikunov from comment #23)
&gt; Думаю, это невозможно придумать. А если где-то есть проверки на наличие
&gt; версии в тэге, то все они
...уже бы давали отрицательный ответ: как минимум в тег не попадает Epoch.
Сортировкой заглавий git-тегов тоже никто не занимается, они не для этого.

&gt; Так что можно откатывать поддержку
&gt; тильды отовсюду, это была тупиковая идея.
Не могу согласиться.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281838</commentid>
    <comment_count>25</comment_count>
    <who name="Vitaly Chikunov">vt</who>
    <bug_when>2026-02-11 10:36:46 +0300</bug_when>
    <thetext>(In reply to Arseny Maslennikov from comment #24)
&gt; (In reply to Vitaly Chikunov from comment #23)
&gt; &gt; Думаю, это невозможно придумать. А если где-то есть проверки на наличие
&gt; &gt; версии в тэге, то все они
&gt; ...уже бы давали отрицательный ответ: как минимум в тег не попадает Epoch.

ЕСЛИ заменить в %version-%release хоть 1 символ, ТО сравнение уже не выполнится.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281860</commentid>
    <comment_count>26</comment_count>
    <who name="Gleb F-Malinovskiy">glebfm</who>
    <bug_when>2026-02-11 14:17:41 +0300</bug_when>
    <thetext>Арсений прав в смысле epoch и если вся проблема в gear-create-tag, мы могли бы мапить ~ во что-то имя.

А мы хоть где-то сравниваем версии между пакетом и тегом?  Если нет, то обратно мапить его на самом деле не нужно.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281879</commentid>
    <comment_count>27</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2026-02-11 17:09:46 +0300</bug_when>
    <thetext>есть готовые маппинги для версий с тильдами в гит у debin. Эпоху, кстати, тоже маппят. 
Не вижу в этом вообще никаких проблем</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>