Story #3715
Updated by milan over 6 years ago
This story tracks tasks required to implement 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/ef5fc5b2af47736114b68bc08658d9b2a94b84e1/plugins/pulp_rpm/plugins/importers/yum/associate.py#L45#L101 interface":https://github.com/pulp/pulp_rpm/blob/master/plugins/pulp_rpm/plugins/importers/yum/associate.py#L20 but some refactoring of the current internal solver call interface might be necessary. The solver should support the Yum-specific content unit types (recursive) dependency solving, namely: * RPM * Errata SRPM * Package Group group * Package Category 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, _in the context of a source and target repository_ to "Support more conservative dependency solving":https://pulp.plan.io/issues/2478 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. The functionality exposed by this According to the Issue #3528, the implementation should expose following functionality, in the context of (multiple) source repositories and a target repository: * list dependencies for a given rpm package (can be feature-compatible with current Pulp2 implementation. a part of a synchronous task) It implies that no support * list fulfilled dependencies (from a given list of available packages) for either SRPM or DRPM is required and a given rpm package * validate that all the REST API must not change when it comes to reporting the units copied. dependencies (from a given list of available packages) for a given rpm package are fulfilled. * perform dep solving against multiple repositories