Bug 43478 - Неверный ответ package/build_dependency_set для python3-module-importlib-metadata
Summary: Неверный ответ package/build_dependency_set для python3-module-importlib-meta...
Status: CLOSED FIXED
Alias: None
Product: Infrastructure
Classification: Infrastructure
Component: rdb.altlinux.org (show other bugs)
Version: unspecified
Hardware: x86_64 Linux
: P5 normal
Assignee: Danil Shein
QA Contact: Andrey Cherepanov
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2022-08-09 11:54 MSK by Stanislav Levin
Modified: 2022-10-10 16:18 MSK (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
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/

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