Project

Profile

Help

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 



Back