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

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

    <bug>
          <bug_id>39573</bug_id>
          
          <creation_ts>2021-01-20 12:28:37 +0300</creation_ts>
          <short_desc>add specfile name to tag</short_desc>
          <delta_ts>2022-03-25 16:26:07 +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>gear</component>
          <version>unstable</version>
          <rep_platform>x86_64</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anton Farygin">rider</reporter>
          <assigned_to name="Dmitry V. Levin">ldv</assigned_to>
          <cc>glebfm</cc>
    
    <cc>iv</cc>
    
    <cc>ldv</cc>
    
    <cc>legion</cc>
    
    <cc>placeholder</cc>
    
    <cc>rider</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>195553</commentid>
    <comment_count>0</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2021-01-20 12:28:37 +0300</bug_when>
    <thetext>У ocaml считается обычным явлением собирать из одного дерева исходников разные пакеты. Например - dune - /usr/bin/dune это один пакет, с одним набором сборочных зависимостей, dune-configurator - другой пакет, с другим набором сборочных завимостей и т.д.
На данный момент это 6 пакетов в случае dune, собираемые из одного дерева исходников.

dune                               2.8.1       Fast, portable, and opinionated build system
dune-action-plugin                 --          [experimental] API for writing dynamic Dune actions
dune-build-info                    --          Embed build informations inside executable
dune-configurator                  --          Helper library for gathering system configuration
dune-deps                          --          Show dependency graph of a multi-component dune project
dune-glob                          --          Glob string matching language supported by dune
dune-private-libs                  --          Private libraries of Dune

Всё бы ничего, но подпакеты зависят на основной пакет dune (/usr/bin/dune) и, одновременно, на другие библиотеки ocaml. собираемые с использованием как /usr/bin/dune, так и (например) dune-configurator.

Сейчас в gear не предусмотрено штатного механизма для того, что бы держать в одном дереве spec-файлы для разных пакетов. А в данном случае было бы удобно управлять specfile для сборке не из .gear/rules, а, например, из тэга (по аналогии с механизмом specsubst)

В этом случае будут разные src.rpm с дублями исходников и разные бинарные пакеты, а самое главное - всю транзакцию можно будет сделать в одном задании и из одного исходников, не раскладывая spec файлы по веткам.

Предлагаю обсудить возможные реализации такого функционала, как управлением тэгом specfile из .gear/rules с помощью тэга gear, добавив в его описание ключевое слово, например:
X-gear-rules-specfile: .gear/dune-configurator.spec</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195555</commentid>
    <comment_count>1</comment_count>
    <who name="Gleb F-Malinovskiy">glebfm</who>
    <bug_when>2021-01-20 13:31:44 +0300</bug_when>
    <thetext>FYI, так уже сейчас работает:
http://git.altlinux.org/people/glebfm/packages/include-hack.git

Что из этого более ужасно -- другой вопрос. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195557</commentid>
    <comment_count>2</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2021-01-20 13:43:36 +0300</bug_when>
    <thetext>я попробую сделать так, как описывает глеб и посмотрю во что это выльется с точки зрения дальнейшего сопровождения. по результатам отпишусь. у меня таких пакетов может оказаться около 200-250.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195559</commentid>
    <comment_count>3</comment_count>
    <who name="Gleb F-Malinovskiy">glebfm</who>
    <bug_when>2021-01-20 13:50:19 +0300</bug_when>
    <thetext>(Ответ для Anton Farygin на комментарий #2)
&gt; я попробую сделать так, как описывает глеб и посмотрю во что это выльется с
&gt; точки зрения дальнейшего сопровождения. по результатам отпишусь. у меня
&gt; таких пакетов может оказаться около 200-250.

Не, я всё же больше за твой вариант.  В этот хаке большая часть спека не будет попадать в specs.git, а это было бы очень-очень обидно.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195560</commentid>
    <comment_count>4</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2021-01-20 13:52:19 +0300</bug_when>
    <thetext>если развивать эту идею в более широком смысле, то, наверное, с помощью тэга можно было бы добавить возможность переопределения любых директив в .gear/rules

Или, как вариант, использовать subst по данным тэга для содержимого .gear/rules</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195561</commentid>
    <comment_count>5</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2021-01-20 13:53:38 +0300</bug_when>
    <thetext>(Ответ для Gleb F-Malinovskiy на комментарий #3)
&gt; (Ответ для Anton Farygin на комментарий #2)
&gt; &gt; я попробую сделать так, как описывает глеб и посмотрю во что это выльется с
&gt; &gt; точки зрения дальнейшего сопровождения. по результатам отпишусь. у меня
&gt; &gt; таких пакетов может оказаться около 200-250.
&gt; 
&gt; Не, я всё же больше за твой вариант.  В этот хаке большая часть спека не
&gt; будет попадать в specs.git, а это было бы очень-очень обидно.

мне кажется, что могут сломаться ещё какие-то парсеры спеков. Врятли кто-то кроме rpm умеет Include.

Хотя парсеры, конечно, в идеале должны работать через rpm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195664</commentid>
    <comment_count>6</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2021-01-22 18:01:25 +0300</bug_when>
    <thetext>(In reply to Anton Farygin from comment #5)
&gt; Хотя парсеры, конечно, в идеале должны работать через rpm.

Нет, поскольку rpm во время работы парсера по определению исполняет произвольный код, это плата за безграничную гибкость спек-файлов.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195666</commentid>
    <comment_count>7</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2021-01-22 18:28:17 +0300</bug_when>
    <thetext>если они не работают через rpm, то они не могут гарантировать никакую совместимость с ним.

Но минусом естественно является исполнение произвольного кода.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>