Bug 1789346 - RFE: Add support for $releasever_major, $releasever_minor, and limited shell expansion for zypp yum repo file compatibility
Summary: RFE: Add support for $releasever_major, $releasever_minor, and limited shell ...
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: dnf
Version: 39
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Evan Goode
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks: dnf-community
TreeView+ depends on / blocked
 
Reported: 2020-01-09 12:11 UTC by Neal Gompa
Modified: 2023-10-22 08:24 UTC (History)
17 users (show)

Fixed In Version: dnf-4.18.0-2.fc39
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2023-10-22 08:24:48 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Github rpm-software-management dnf5 issues 710 0 None open Add support for `$releasever_major`, `$releasever_minor`, and limited shell expansion 2023-07-11 20:51:16 UTC

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.


Note You need to log in before you can comment on or make changes to this bug.