Bug 48711

Summary: Добавить в hasher поддержку проверок для образов через distro_check
Product: Sisyphus Reporter: Evgeny Sinelnikov <sin>
Component: hasherAssignee: Dmitry V. Levin <ldv>
Status: NEW --- QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: aen, at, glebfm, ldv, rider
Version: unstable   
Hardware: x86_64   
OS: Linux   
Bug Depends on:    
Bug Blocks: 46625    

Description Evgeny Sinelnikov 2023-12-06 17:36:27 MSK
В сборочной задаче в hasher добавлена поддержка проверок для образов через distro_check, в частности лицензий из пакета distro-licenses:
#329971 EPERM #1 sisyphus hasher.git=1.7.3-alt1

В пакет distro-licenses включен скрипт проверки имени лицензии (должен быть из списка утвержденных в каталоге /usr/share/distro-licenses) и применимости лицензии на установленной системе по имени бранча и архитектуры.

Список доступных лицензий:
$ distro-license-check -l
ALT_Community_License
ALT_SP_License
ALT_Product_License
ALT_Regular_License
ALT_Simply_License
ALT_Server_License
ALT_Server_License/10.1

Назначение лицензий на продукты (образы), собираемые на сборочнице:
- ALT_Community_License - лицензия на сборки сообщества (лицензия в стиле GPL);
- ALT_SP_License - лицензия на сертифицированные продукты;
- ALT_Product_License - базовая лицензия на продукты (Workstation, Workstation K, Education, Virtualization);
- ALT_Regular_License - текущая лицензия на регулярки (в стиле GPL);
- ALT_Simply_License - лицензия на Simply;
- ALT_Server_License - лицензия на Server;
- ALT_Server_License/10.1 - лицензия на конкретный релиз выпущенного продукта ALT Server 10.1.

Для унификации ALT_Regular_License логично свести к ALT_Community_License и оставить только последнюю.

Имя бранча вычисляется такой командой:
$ rpm --eval %_priority_distbranch | cut -d _ -f 1

А архитектура вычислется такой командой (взято из недр наших shell-приложений):
$ rpm --showrc |sed -ne 's/^install arch[[:space:]]*:[[:space:]]*\([^[:space:]]\+\).*/\1/p'

Ограничения для лицензии задаются в отдельных файлах явно:
$ cat /usr/share/distro-licenses/ALT_Server_License/10.1/distbranch.list
p10
$ cat /usr/share/distro-licenses/ALT_Server_License/10.1/target.list
x86_64
aarch64

Утилита distro_check реализована по образы и подобию sisyphus_check:
$ distro_check --help

distro_check - check distribution for acceptability for Sisyphus.

This program is free software, covered by the GNU General Public License.
distro_check comes with ABSOLUTELY NO WARRANTY, see license for details.

Usage: distro_check [options] <target>...

Valid options are:
  --quiet                  try to be more quiet;
  --verbose                print a message for each action;
  --fast-check             stop checking after first error;
  --show-checks            show list of available checks;
  --license                distro license type to check;
  --distros                treat <target> as a distribution.
                           This is default behavior;
  --directories            treat <target> as a directory.
                           Distros in this directory will be checked;
  --recursive              search packages recursively;
  --show-bad-distros       print bad distributions;
  --[no-]check=LIST        change the list of checks;
  --[no-]check-license_name
  --[no-]check-license_text_all
  --[no-]check-license_text_ru

Дополнительные проверки предусмотрены в отдельный скриптах:
$ ls -1 /etc/distro_check/check.d
010-check-license_name
020-check-license_text_ru
030-check-license_text_all
Comment 1 Anton Farygin 2023-12-06 18:13:32 MSK
Лицензии сразу сделать бы в соответствии со стандартом SPDX.

И добавить версию (если нет версии, то год-номер)