Bug 40226

Summary: [FR] По умолчанию разрешить пересборку пакетов с возможностью opt-out через ACL
Product: Infrastructure Reporter: Gleb F-Malinovskiy <glebfm>
Component: girarAssignee: Gleb F-Malinovskiy <glebfm>
Status: CLOSED FIXED QA Contact: Andrey Cherepanov <cas>
Severity: enhancement    
Priority: P5 CC: darktemplaralt, glebfm, iv, ldv, mike, rider, vseleznv
Version: unspecified   
Hardware: all   
OS: Linux   

Description Gleb F-Malinovskiy 2021-06-15 19:00:28 MSK
Периодически, при обновлении больших подсистем (python, perl, et al.) в репозитории приходится пересобирать большое количество зависимых пакетов без изменения их исходных пакетов.  Для разрешения таких пересборок можно было бы использовать группы @qa, @python, @cpan и другие, но они, к сожалению, включают слишком много людей, а добавление этих групп в ACL воспринимается всеми *очень* по-разному.

Я предлагаю сделать возможность добавлять в ACL фиктивную группу @rebuild, которая позволит любому майнтейнеру пересобрать пакет.  Сборочница может проверять, что пакет был собран из того же исходника с через sid (source id), который уже записан в последней строчке /ALT/repo/<branch>/index/src/<package:0:1>/<package>/d-t-s-evr.list .
Comment 1 Dmitry V. Levin 2021-06-15 19:03:54 MSK
Хорошая идея.
Comment 2 Anton Farygin 2021-06-16 09:18:28 MSK
А почему мы не хотим дать возможность кому угодно делать rebuild ?
Comment 3 Dmitry V. Levin 2021-06-16 11:08:25 MSK
(In reply to Anton Farygin from comment #2)
> А почему мы не хотим дать возможность кому угодно делать rebuild ?

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

Возможно, мы хотим opt-out, а не opt-in на разрешение делать rebuild определённых пакетов кому угодно.
Comment 4 Anton Farygin 2021-06-16 11:19:29 MSK
Да, похоже на то, что таких пакетов, которым надо запретить rebuild - не так уж и много и опция настройки запрета rebuild нужна именно для них.
Comment 5 Aleksei Nikiforov 2021-06-16 11:24:42 MSK
(Ответ для Dmitry V. Levin на комментарий #3)
> Возможно, мы хотим opt-out, а не opt-in на разрешение делать rebuild
> определённых пакетов кому угодно.

Оно разве уже не opt-out? По-умолчанию обычно @everybody в ACL добавляется.
Comment 6 Dmitry V. Levin 2021-06-16 11:28:29 MSK
Речь идёт о том, что нет возможности разрешить только rebuild кому угодно, а хотелось бы.
Comment 7 Anton Farygin 2021-06-16 11:34:42 MSK
мне кажется, что надо вводить новую сущность - действия и права на них для каждого пакета.

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

и т.д.

Тогда и группа everybody станет не нужна.
Comment 8 Dmitry V. Levin 2021-06-24 12:58:35 MSK
(In reply to Anton Farygin from comment #7)
> мне кажется, что надо вводить новую сущность - действия и права на них для
> каждого пакета.
> 
> например:
> rebuild - user, group, all
> change - user, group, all
> delete - user, group, all
> 
> и т.д.

Клонировать list.packages.sisyphus на 3 файла?
Мне кажется, это overkill.
Comment 9 Dmitry V. Levin 2021-06-24 13:02:02 MSK
(In reply to Anton Farygin from comment #4)
> Да, похоже на то, что таких пакетов, которым надо запретить rebuild - не так
> уж и много и опция настройки запрета rebuild нужна именно для них.

А что если просто добавлять @norebuild для тех пакетов, которым rebuild не разрешён по умолчанию?  Это, наверное, относительно недолго реализовать.
Comment 10 Anton Farygin 2021-06-24 14:03:54 MSK
Это быстро, но немного ломает архитектуру ACL.

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

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

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

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

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

тогда этот же синтаксис можно расширить, например, вот так:
php: rider rebuild:@qa update:@php remove:rider
Comment 11 Anton Farygin 2021-06-24 14:07:57 MSK
"кто угодно" - в зависимости от типа действия. Например, задокументировать, что действие rebuild может делать по умолчанию кто-угодно, если иное не сказано в ACL.

или, как вариант, ввести модификатор norebuild:@everybody в котором можно будет перечислять ментейнеров, кому запрещено делать rebuild пакета. Перечисление делать, как вариант, через запятую.
Comment 12 Michael Shigorin 2021-06-26 22:25:14 MSK
(Ответ для Anton Farygin на комментарий #10)
> Это быстро, но немного ломает архитектуру ACL.
> По умолчанию у нас в группы кто-то входит.
Возможно, это не acl, а новая сущность flags.

PS: так-то проблема назрела, перезрела, дала плоды, мутировала и вновь с нами.
Comment 13 Dmitry V. Levin 2021-07-07 17:59:44 MSK
Мне кажется, что это уже в каком-то виде реализовано.
Comment 14 Anton Farygin 2021-07-07 18:00:52 MSK
В каком ?
Comment 15 Gleb F-Malinovskiy 2021-07-08 13:11:27 MSK
Исправлено в dc2e66ce395e6d8343f6f7f0916fb7c34fa51daa.

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

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