Project

Profile

Help

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 



Back