Story #3715
Updated by milan over 6 years ago
This story tracks tasks required to implement toImplement new dependency solving using the @libsolv@ library, based on the investigation and on the POC from the Issue #3528. The goal is to implement a solver suitable for the importer "associate interface":https://github.com/pulp/pulp_rpm/blob/master/plugins/pulp_rpm/plugins/importers/yum/associate.py#L20 but some refactoring of the current interface might be necessary. The solver should support the Yum-specific content unit types (recursive) dependency solving, namely: * RPM * SRPM * Package group * Package category * Errata * DRPM (optional) on content unit attributes, such as @provides, requires@, as relevant to a particular content unit model, including boolean&weak dependencies solving. A separate story will track the "modular content":https://docs.pagure.org/modularity/ as it requires a @libsolv@ patch to expose the @pool->considered@ bitmap to the Python bindings. Implementation design is described on the Issue #3528; see the "Note #8":https://pulp.plan.io/issues/3528#note-8 The "POC":https://github.com/dparalen/pulp_solv code can be used as an example. According to the Issue #3528, the implementation should expose following functionality, in the context of (multiple) the source repositories and a target repository: repositories: * list dependencies for a given rpm package (can be a part of a synchronous task) * list fulfilled dependencies (from a given list of available packages) for a given rpm package * validate that all the dependencies (from a given list of available packages) for a given rpm package are fulfilled. * perform dep solving against multiple repositories