Summary: | Неверный ответ package/build_dependency_set для python3-module-importlib-metadata | ||
---|---|---|---|
Product: | Infrastructure | Reporter: | Stanislav Levin <slev> |
Component: | rdb.altlinux.org | Assignee: | 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
Запрос package/build_dependency_set работает следующим образом: По списку имён исходных пакетов ищутся исходные пакеты из которых собираются бинарные пакеты, которые в свою очередь, предоставляют требуемые сборочные зависимости. Данный поиск повторяется рекурсивно. Таким образом результат запроса не соответствует по содержанию составу пакетов устанавливаемых в build chroot сборочницы. Вопрос актуализации описания сути и логики запросов АПИ открыт и будет решаться в рамках багаи #43441. Для построения списка пакетов аналогичных составу BR сборочницы будет добавлен новый запрос в АПИ с другой логикой поиска и разрешения зависимостей. Предыдущий комментарий содержит ошибку. Алгоритм поиска зависимостей на самом деле следующий: 1. Находятся бинарные пакеты предоставляющие зависимости требуемые для сборки входных исходных пакетов. 2. Ищутся бинарные пакеты предоставляющие зависимости требующиеся найденным ранее бинарным пакетам. Поиск в п.2 продолжается рекурсивно. Список найденных по зависимостям пакетов должен соответствовать списку пакетов устанавливаемых в сборочное окружение. В вывод запроса будет добавлена информация о зависимостях каждого найденного пакета. Причина получение нерелевантных зависимостей пока ищется Ошибки в построении списка пакетов требуемых для сборки возникает из-за поиска зависимостей только по имени без учёта версии и битовых флагов. Поиск зависимостей будет модифицирован согласно поведения apt и rpm. В результате переработки логики запроса /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/ В дальнейшем эти уточнения в логике поиска и разрешения зависимостей будет применены во всех запросах АПИ. |