Bug 43478

Summary: Неверный ответ package/build_dependency_set для python3-module-importlib-metadata
Product: Infrastructure Reporter: Stanislav Levin <slev>
Component: rdb.altlinux.orgAssignee: Danil Shein <dshein>
Status: CLOSED FIXED QA Contact: Andrey Cherepanov <cas>
Severity: normal    
Priority: P5    
Version: unspecified   
Hardware: x86_64   
OS: Linux   

Description Stanislav Levin 2022-08-09 11:54:44 MSK
Запрос:
https://rdb.altlinux.org/api/package/build_dependency_set?branch=sisyphus&packages=python3-module-importlib-metadata

говорит, что python3-module-importlib-metadata имеет сборочную зависимость на python3-module-nss.

Но согласно
https://git.altlinux.org/tasks/archive/done/_289/296943/build/200/x86_64/chroot_BR
это не так.
Comment 1 Danil Shein 2022-09-28 12:16:58 MSK
Запрос package/build_dependency_set работает следующим образом:

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

Таким образом результат запроса не соответствует по содержанию составу пакетов устанавливаемых в build chroot сборочницы.

Вопрос актуализации описания сути и логики запросов АПИ открыт и будет решаться в рамках багаи #43441.

Для построения списка пакетов аналогичных составу BR сборочницы будет добавлен новый запрос в АПИ с другой логикой поиска и разрешения зависимостей.
Comment 2 Danil Shein 2022-09-28 15:32:31 MSK
Предыдущий комментарий содержит ошибку.

Алгоритм поиска зависимостей на самом деле следующий:
1. Находятся бинарные пакеты предоставляющие зависимости требуемые для сборки входных исходных пакетов.
2. Ищутся бинарные пакеты предоставляющие зависимости требующиеся найденным ранее бинарным пакетам.

Поиск в п.2 продолжается рекурсивно.

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

В вывод запроса будет добавлена информация о зависимостях каждого найденного пакета.

Причина получение нерелевантных зависимостей пока ищется
Comment 3 Danil Shein 2022-10-03 12:09:07 MSK
Ошибки в построении списка пакетов требуемых для сборки возникает из-за поиска зависимостей только по имени без учёта версии и битовых флагов.

Поиск зависимостей будет модифицирован согласно поведения apt и rpm.
Comment 4 Danil Shein 2022-10-10 16:18:52 MSK
В результате переработки логики запроса /package/build_dependency_set реализовано разрешение зависимостей пакетов максимально соответствующее поведению apt'а:

1. при разрешении зависимостей производится полноценно сравнение версий зависимостей посредством librpm.

2. обнаруживаются неоднозначные зависимости (когда несколько пакетов предоставляют удовлетворяющие provide для какого либо require). Выбор пакета в таком случаем происходит в соответствии с поведением apt (насколько это реализуемо на основании данных имеющихся в БД). Обнаруженные неоднозначные зависимости выводятся в результате запроса отдельно с указанием имени зависимости и списка пакетов её удовлетворяющих, а так же выбранный пакет (поле "used": true)

Некоторое поведение apt в плане выбора пакетов для установки воспроизвести в АПИ не представляется возможным, например обработку priority и т.д.

Разделить пакеты входящие в chroot_base и chroot_BR сборочного окружения на стороне АПИ так же не получается - т.к. БД не содержит необходимых для этого данных и перенести всю логику работы apt и girar АПИ крайне затруднительно.

Исправление уже доступно на https://rdb.altlinux.org/api/

В дальнейшем эти уточнения в логике поиска и разрешения зависимостей будет применены во всех запросах АПИ.