Bug 1412910

Summary: rpmdeplint complains about conflicts between packages which can never be installed together, due to Requires relationships
Product: [Community] rpmdeplint Reporter: Tyrone Abdy <tabdy>
Component: generalAssignee: Tyrone Abdy <tabdy>
Status: CLOSED CURRENTRELEASE QA Contact: tools-bugs <tools-bugs>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: unreleasedCC: bmcivor, dcallagh, jorris, rjoost, tabdy
Target Milestone: 1.3   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2017-04-28 05:31:09 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Tyrone Abdy 2017-01-13 06:03:11 UTC
Description of problem:

When running rpmdeplint against packages that have a declared indirect conflict with other packages the indirect case isn't being correctly determined.

So as an example of that.
We have a new rpm of "glib2-doc-2.28.8-8.el6.noarch" to be installed in optional.
This conflicts with 
"glib2-devel-2.26.1-3.el6.i686" on many files because in the change
from 2.26 to 2.28 the documentation has been apparently split into a new package.

But dnf/yum wouldn't install that as glib2-devel-2.26 requires glib2-2.26 which then has a declared conflict of glib2-doc-2.28 which requires glib2.28 which would adequately resolve that conflict from happening.

When this is run within rpmdeplint the problem listed is 
"package glib2-devel-2.26.1-3.el6.i686 requires glib2 = 2.26.1-3.el6, but none of the providers can be installed"

which might be sufficient to determine that these packages won't conflict. But more investigation should be done.

Comment 2 Dan Callaghan 2017-01-13 08:53:01 UTC
(In reply to Tyrone Abdy from comment #0)
> But dnf/yum wouldn't install that as glib2-devel-2.26 requires glib2-2.26
> which then has a declared conflict of glib2-doc-2.28 which requires glib2.28
> which would adequately resolve that conflict from happening.

It's not that there is a Conflicts declared (there isn't, otherwise rpmdeplint would have probably worked correctly since that is what the conditional is checking for in the error message). Instead the requirements are such that yum/dnf would never try to install glib2-devel-2.26 and glib2-doc-2.28 at the same time.

Each subpackage has a versioned requirement onto its base package, which is conventional. The requirements are:

glib2-devel-2.26 -> glib2-2.26
glib2-devel-2.28 -> glib2-2.28
glib2-doc-2.28 -> glib2-2.28

That means if someone tried to install the new glib2-doc package on a system which has glib2-devel-2.26, yum/dnf would know it has to also upgrade glib2 to 2.28, which would trigger glib2-devel to also be upgraded to 2.28, and so there is no conflict. Trying to have glib2-devel-2.26 and glib2-doc-2.28 installed at the same time violates the Requires, which is what libsolv is telling us here:

> When this is run within rpmdeplint the problem listed is 
> "package glib2-devel-2.26.1-3.el6.i686 requires glib2 = 2.26.1-3.el6, but
> none of the providers can be installed"

Comment 3 Tyrone Abdy 2017-01-16 05:50:42 UTC
https://gerrit.beaker-project.org/#/c/5586/

Comment 4 Dan Callaghan 2017-04-28 05:31:09 UTC
rpmdeplint 1.3 has been released.