Bug 1789346

Summary: RFE: Add support for $releasever_major, $releasever_minor, and limited shell expansion for zypp yum repo file compatibility
Product: [Fedora] Fedora Reporter: Neal Gompa <ngompa13>
Component: dnfAssignee: Evan Goode <egoode>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 39CC: carl, daniel.mach, davide, egoode, jkolarik, jmracek, jrohel, maxwell, mblaha, mhatina, mhjacks, nsella, packaging-team-maint, pkratoch, riehecky, rpm-software-management, vmukhame
Target Milestone: ---Keywords: Triaged
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: dnf-4.18.0-2.fc39 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2023-10-22 08:24:48 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: 1665453    

Description Neal Gompa 2020-01-09 12:11:30 UTC
Description of problem:
Zypper defines in its man page that two additional variables are auto-defined based on $releasever's definition: $releasever_major and $releasever_minor.

Per zypper(8):

> In addition $releasever_major will be set to the leading portion up to
> (but not including) the 1st dot; $releasever_minor to the trailing portion
> after the 1st dot. If there’s no dot in $releasever, $releasever_major is
> the same as $releasever and $releasever_minor is empty.

This can be verified by reading the man page of zypper on any Fedora system.

In addition, it seems that SUSE has implemented very limited shell expansion capabilities for supporting SUSE Linux Enterprise upgrades due to how their OBS names the repos[1].

For example, this is a common thing to see in repo files for SLE when trying to use repos from the openSUSE Build Service (or other OBS instances making SLE packages): "SLE_${releasever_major}${releasever_minor:+_SP$releasever_minor}".

These features may also be useful for dealing with the screwiness of RHEL repositories for EPEL. Currently the epel-release package cannot use $releasever because RHEL defines it as major.minor (e.g. 8.1). This is problematic because it makes distro-upgrades more painful than they should be.

[1]: https://doc.opensuse.org/projects/libzypp/HEAD/structzypp_1_1repo_1_1RepoVarExpand.html

Version-Release number of selected component (if applicable):
4.2.17-1.fc32

Comment 1 Carl George 🤠 2022-10-18 00:01:56 UTC
Is it expected for this will be implemented in dnf5?  I'm working on a proposal for EPEL 10, and I believe I'd be able to make use of $releasever_major and $releasever_minor if they were present.

Comment 2 Maxwell G 2023-05-17 20:59:25 UTC
I'm moving this to the dnf5 component.

Comment 3 Neal Gompa 2023-05-17 21:01:37 UTC
I'd really like to see this implemented in DNF 5 for both SUSE Linux distributions (which use this functionality in Zypper, and I'd like to convince them to adopt DNF 5) and EPEL 10 (who would like to use it so life isn't hard for EPEL 10 repo configuration between CentOS Stream and RHEL/clones/etc).

Can we please prioritize this capability being implemented?

The implementation in libzypp is here:

* header: https://github.com/openSUSE/libzypp/blob/d03a02d986f43266af81c73cced1b310e8615971/zypp/repo/RepoVariables.h
* source: https://github.com/openSUSE/libzypp/blob/d03a02d986f43266af81c73cced1b310e8615971/zypp/repo/RepoVariables.cc

Comment 4 Evan Goode 2023-08-31 16:33:35 UTC
https://github.com/rpm-software-management/dnf5/pull/800 has been merged, adding releasever_major/releasever_minor and shell-like variable expansion to DNF 5.

However, we would also like to have this functionality in RHEL 10, and since DNF 5 has been postponed, this means we should implement it in DNF 4. So I am moving this back to the dnf component.

Comment 5 Evan Goode 2023-09-20 20:43:51 UTC
I opened https://github.com/rpm-software-management/dnf/pull/1989 to implement $releasever_major and $releasever_minor, and https://github.com/rpm-software-management/libdnf/pull/1622 to implement the POSIX shell-like variable expansion in DNF 4.

Comment 6 Neal Gompa 2023-09-20 22:45:22 UTC
(In reply to Evan Goode from comment #5)
> I opened https://github.com/rpm-software-management/dnf/pull/1989 to
> implement $releasever_major and $releasever_minor, 

This is also needed in libdnf since PackageKit and microdnf also use it.

Comment 7 Evan Goode 2023-10-16 19:41:39 UTC
OK, all the PRs have been merged:
releasever_major/releasever_minor in DNF: https://github.com/rpm-software-management/dnf/pull/1989
Documentation changes in DNF: https://github.com/rpm-software-management/dnf/pull/2004
releasever_major/releasever_minor in libdnf: https://github.com/rpm-software-management/libdnf/pull/1631
Shell-like parameter expansion: https://github.com/rpm-software-management/libdnf/pull/1622

Moving to POST.

Comment 8 Fedora Update System 2023-10-18 15:10:39 UTC
FEDORA-2023-a066057708 has been submitted as an update to Fedora 39. https://bodhi.fedoraproject.org/updates/FEDORA-2023-a066057708

Comment 9 Fedora Update System 2023-10-19 02:17:07 UTC
FEDORA-2023-a066057708 has been pushed to the Fedora 39 testing repository.
Soon you'll be able to install the update with the following command:
`sudo dnf upgrade --enablerepo=updates-testing --refresh --advisory=FEDORA-2023-a066057708`
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2023-a066057708

See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.

Comment 10 Fedora Update System 2023-10-20 02:12:24 UTC
FEDORA-2023-a066057708 has been pushed to the Fedora 39 testing repository.
Soon you'll be able to install the update with the following command:
`sudo dnf upgrade --enablerepo=updates-testing --refresh --advisory=FEDORA-2023-a066057708`
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2023-a066057708

See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.

Comment 11 Fedora Update System 2023-10-22 08:24:48 UTC
FEDORA-2023-a066057708 has been pushed to the Fedora 39 stable repository.
If problem still persists, please make note of it in this bug report.