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

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

    <bug>
          <bug_id>40226</bug_id>
          
          <creation_ts>2021-06-15 19:00:28 +0300</creation_ts>
          <short_desc>[FR] По умолчанию разрешить пересборку пакетов с возможностью opt-out через ACL</short_desc>
          <delta_ts>2021-07-08 13:11:27 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>2</classification_id>
          <classification>Infrastructure</classification>
          <product>Infrastructure</product>
          <component>girar</component>
          <version>unspecified</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gleb F-Malinovskiy">glebfm</reporter>
          <assigned_to name="Gleb F-Malinovskiy">glebfm</assigned_to>
          <cc>darktemplaralt</cc>
    
    <cc>glebfm</cc>
    
    <cc>iv</cc>
    
    <cc>ldv</cc>
    
    <cc>mike</cc>
    
    <cc>rider</cc>
    
    <cc>vseleznv</cc>
          
          <qa_contact name="Andrey Cherepanov">cas</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>199208</commentid>
    <comment_count>0</comment_count>
    <who name="Gleb F-Malinovskiy">glebfm</who>
    <bug_when>2021-06-15 19:00:28 +0300</bug_when>
    <thetext>Периодически, при обновлении больших подсистем (python, perl, et al.) в репозитории приходится пересобирать большое количество зависимых пакетов без изменения их исходных пакетов.  Для разрешения таких пересборок можно было бы использовать группы @qa, @python, @cpan и другие, но они, к сожалению, включают слишком много людей, а добавление этих групп в ACL воспринимается всеми *очень* по-разному.

Я предлагаю сделать возможность добавлять в ACL фиктивную группу @rebuild, которая позволит любому майнтейнеру пересобрать пакет.  Сборочница может проверять, что пакет был собран из того же исходника с через sid (source id), который уже записан в последней строчке /ALT/repo/&lt;branch&gt;/index/src/&lt;package:0:1&gt;/&lt;package&gt;/d-t-s-evr.list .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199209</commentid>
    <comment_count>1</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2021-06-15 19:03:54 +0300</bug_when>
    <thetext>Хорошая идея.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199215</commentid>
    <comment_count>2</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2021-06-16 09:18:28 +0300</bug_when>
    <thetext>А почему мы не хотим дать возможность кому угодно делать rebuild ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199217</commentid>
    <comment_count>3</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2021-06-16 11:08:25 +0300</bug_when>
    <thetext>(In reply to Anton Farygin from comment #2)
&gt; А почему мы не хотим дать возможность кому угодно делать rebuild ?

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

Возможно, мы хотим opt-out, а не opt-in на разрешение делать rebuild определённых пакетов кому угодно.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199218</commentid>
    <comment_count>4</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2021-06-16 11:19:29 +0300</bug_when>
    <thetext>Да, похоже на то, что таких пакетов, которым надо запретить rebuild - не так уж и много и опция настройки запрета rebuild нужна именно для них.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199219</commentid>
    <comment_count>5</comment_count>
    <who name="Aleksei Nikiforov">darktemplaralt</who>
    <bug_when>2021-06-16 11:24:42 +0300</bug_when>
    <thetext>(Ответ для Dmitry V. Levin на комментарий #3)
&gt; Возможно, мы хотим opt-out, а не opt-in на разрешение делать rebuild
&gt; определённых пакетов кому угодно.

Оно разве уже не opt-out? По-умолчанию обычно @everybody в ACL добавляется.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199220</commentid>
    <comment_count>6</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2021-06-16 11:28:29 +0300</bug_when>
    <thetext>Речь идёт о том, что нет возможности разрешить только rebuild кому угодно, а хотелось бы.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199221</commentid>
    <comment_count>7</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2021-06-16 11:34:42 +0300</bug_when>
    <thetext>мне кажется, что надо вводить новую сущность - действия и права на них для каждого пакета.

например:
rebuild - user, group, all
change - user, group, all
delete - user, group, all

и т.д.

Тогда и группа everybody станет не нужна.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199446</commentid>
    <comment_count>8</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2021-06-24 12:58:35 +0300</bug_when>
    <thetext>(In reply to Anton Farygin from comment #7)
&gt; мне кажется, что надо вводить новую сущность - действия и права на них для
&gt; каждого пакета.
&gt; 
&gt; например:
&gt; rebuild - user, group, all
&gt; change - user, group, all
&gt; delete - user, group, all
&gt; 
&gt; и т.д.

Клонировать list.packages.sisyphus на 3 файла?
Мне кажется, это overkill.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199447</commentid>
    <comment_count>9</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2021-06-24 13:02:02 +0300</bug_when>
    <thetext>(In reply to Anton Farygin from comment #4)
&gt; Да, похоже на то, что таких пакетов, которым надо запретить rebuild - не так
&gt; уж и много и опция настройки запрета rebuild нужна именно для них.

А что если просто добавлять @norebuild для тех пакетов, которым rebuild не разрешён по умолчанию?  Это, наверное, относительно недолго реализовать.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199448</commentid>
    <comment_count>10</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2021-06-24 14:03:54 +0300</bug_when>
    <thetext>Это быстро, но немного ломает архитектуру ACL.

По умолчанию у нас в группы кто-то входит. С точки зрения логики обработки придётся делать отдельные исключения для специальных групп, меняющих поведение girar при проверке действий ментейнера.

Было бы удобнее, всё-таки, ввести какую-то новую сущность для подобных исключений. пусть и не настолько универсальную, как я предложил в посте выше.

Видимо, таких действий станет много и хотелось бы иметь возможность для некоторых пакетов делать тонкую настройку общих групп acl (типа @everybody).

может быть, как вариант, добавить модификатор в ACL (необязательный), в котором указывать кому возможно то или иное действие.

Имя модификатора = имени действия.
например тот же rebuild в таком случае мог бы выглядеть вот так:
glibc: ldv glebfm rebuild:@core
при отсутствии модификатора, например, считать что это действие может выполнять кто угодно.

тогда этот же синтаксис можно расширить, например, вот так:
php: rider rebuild:@qa update:@php remove:rider</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199449</commentid>
    <comment_count>11</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2021-06-24 14:07:57 +0300</bug_when>
    <thetext>&quot;кто угодно&quot; - в зависимости от типа действия. Например, задокументировать, что действие rebuild может делать по умолчанию кто-угодно, если иное не сказано в ACL.

или, как вариант, ввести модификатор norebuild:@everybody в котором можно будет перечислять ментейнеров, кому запрещено делать rebuild пакета. Перечисление делать, как вариант, через запятую.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199515</commentid>
    <comment_count>12</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2021-06-26 22:25:14 +0300</bug_when>
    <thetext>(Ответ для Anton Farygin на комментарий #10)
&gt; Это быстро, но немного ломает архитектуру ACL.
&gt; По умолчанию у нас в группы кто-то входит.
Возможно, это не acl, а новая сущность flags.

PS: так-то проблема назрела, перезрела, дала плоды, мутировала и вновь с нами.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200111</commentid>
    <comment_count>13</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2021-07-07 17:59:44 +0300</bug_when>
    <thetext>Мне кажется, что это уже в каком-то виде реализовано.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200112</commentid>
    <comment_count>14</comment_count>
    <who name="Anton Farygin">rider</who>
    <bug_when>2021-07-07 18:00:52 +0300</bug_when>
    <thetext>В каком ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>200136</commentid>
    <comment_count>15</comment_count>
    <who name="Gleb F-Malinovskiy">glebfm</who>
    <bug_when>2021-07-08 13:11:27 +0300</bug_when>
    <thetext>Исправлено в dc2e66ce395e6d8343f6f7f0916fb7c34fa51daa.

(In reply to Anton Farygin from comment #14)
&gt; В каком ?

По умолчанию всем можно пересобирать любые пакеты.  Чтобы запретить это нужно добавить группу @norebuild в ACL.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>