Bug 2151910

Summary: yum check-update incorrectly reports source packages as updates
Product: Red Hat Enterprise Linux 8 Reporter: jcastran
Component: dnfAssignee: Packaging Maintenance Team <packaging-team-maint>
Status: CLOSED ERRATA QA Contact: Tomáš Bajer <tbajer>
Severity: medium Docs Contact:
Priority: medium    
Version: 8.7CC: james.antill, kwalker, mbanas, mblaha, nsella, tbajer
Target Milestone: rcKeywords: Triaged
Target Release: ---Flags: pm-rhel: mirror+
Hardware: All   
OS: Unspecified   
Whiteboard:
Fixed In Version: dnf-4.7.0-17.el8 Doc Type: No Doc Update
Doc Text:
Story Points: ---
Clone Of:
: 2203069 (view as bug list) Environment:
Last Closed: 2023-11-14 15:49:42 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:
Bug Depends On:    
Bug Blocks: 2203069    

Description jcastran 2022-12-08 14:36:34 UTC
Description of problem:
When a source repository is enabled, yum check-update 

Version-Release number of selected component (if applicable):
dnf-4.7.0-11.el8.noarch
libdnf-0.63.0-11.1.el8.x86_64
libsolv-0.7.20-3.el8.x86_64

Steps to Reproduce:
1. enable source repo
2. install perl-parent
3. yum check-update

Actual results:
$ yum check-update perl-parent --enablerepo=rhel-8-for-x86_64-appstream-source-rpms
Updating Subscription Management repositories.
Last metadata expiration check: 0:02:21 ago on Thu 08 Dec 2022 09:29:41 AM EST.

perl-parent.src   1:0.237-1.module+el8+2464+d274aed1   rhel-8-for-x86_64-appstream-source-rpms


$ yum update perl-parent --enablerepo=rhel-8-for-x86_64-appstream-source-r
Updating Subscription Management repositories.
Last metadata expiration check: 0:05:20 ago on Thu 08 Dec 2022 09:29:41 AM EST.
Dependencies resolved.
Nothing to do.
Complete!


Expected results:
yum check-update should not report source packages as updates to anything.

Additional info:
The reported package is from another module:stream. It seems that check-update is just going off version, and not respecting modular filtering. It should just ignore source packages all together since they are not updates to anything.

Comment 1 Kyle Walker 2022-12-19 21:01:02 UTC
So, this looks to be due to:

  dnf/cli/cli.py
    check_updates()
    -> returnPkgLists()

  dnf/base.py
       -> _do_package_lists()
          -> _list_pattern()

Where, _list_pattern() will return src RPMs. The solution looks to be something like passing in something like a new "include_src=True" default argument into _do_package_lists that can be overridden in the returnPkgLists() callpath.

Comment 2 Kyle Walker 2022-12-20 14:39:34 UTC
Filed PR upstream to illustrate what I mean by the above, feel free to make alterations/changes.

Comment 3 Marek Blaha 2023-01-03 10:27:30 UTC
I've created a test for the issue: https://github.com/rpm-software-management/ci-dnf-stack/pull/1198

Comment 14 errata-xmlrpc 2023-11-14 15:49:42 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (dnf bug fix and enhancement update), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2023:7122