Skip to content

Commit

Permalink
conflict checker: skip packages obsoleted by packages under test (fed…
Browse files Browse the repository at this point in the history
…ora-ci#20)

As explained in issue fedora-ci#20, when checking for conflicts, it's not
enough to skip only existing packages with the same name as the
one they are being checked against. We should skip all existing
packages that the set of packages being tested would replace.

Fortunately, we already have `_select_obsoleted_by` to do this
exact job, so let's just use it here.

We keep the existing 'skip if the names are the same' check to
avoid generating confusing results if the update under test
contains a package with the same name as an existing package but
with a *lower* EVR. This is wrong, but we should leave it to be
caught by other checks; handling it here would give a rather
confusing failure about file conflicts between the two packages,
which the packager might not understand.

Signed-off-by: Adam Williamson <[email protected]>
  • Loading branch information
AdamWill committed Sep 21, 2024
1 parent c8406b4 commit 9754b0a
Showing 1 changed file with 3 additions and 0 deletions.
3 changes: 3 additions & 0 deletions rpmdeplint/analyzer.py
Original file line number Diff line number Diff line change
Expand Up @@ -418,6 +418,7 @@ def find_conflicts(self) -> list[str]:
"""
# solver = self.pool.Solver()
problems = []
obsoleted = self._select_obsoleted_by(self.solvables).solvables()
for solvable in self.solvables:
if ".module" in solvable.evr:
logger.debug("Skipping modular %s", solvable)
Expand All @@ -433,6 +434,8 @@ def find_conflicts(self) -> list[str]:
# Conflicts cannot happen between solvables with the same name,
# such solvables cannot be installed next to each other.
if conflicting.name == solvable.name:
# ignore any existing packages the update will replace
if conflicting in obsoleted:
continue
if ".module" in conflicting.evr:
continue
Expand Down

0 comments on commit 9754b0a

Please sign in to comment.