Compare commits

...

2 Commits

Author SHA1 Message Date
Petr Písař 732643f3c3 Fix preferring the lowest-cost repositories on a reinstallation 2024-04-24 01:28:43 +00:00
Jaroslav Rohel 8b018b10b7 Backport patches
Resolves: RHEL-11345
Resolves: RHEL-6396
Related: RHEL-6304
2023-10-25 08:33:30 +02:00
6 changed files with 1497 additions and 1 deletions

1
.dnf.metadata Normal file
View File

@ -0,0 +1 @@
0697aee277730c57446b5b87bdb12456cf245203 dnf-4.14.0.tar.gz

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,53 @@
From 422794199b7b8a5f7426effc04979804cf31b6f7 Mon Sep 17 00:00:00 2001
From: Anish Bhatt <anish.bhatt@salesforce.com>
Date: Mon, 10 Jul 2023 10:09:17 -0700
Subject: [PATCH] When parsing over a KVP list, do not return till the whole
list is parsed
---
dnf/repodict.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/dnf/repodict.py b/dnf/repodict.py
index ffa0f8ed..82c05ac0 100644
--- a/dnf/repodict.py
+++ b/dnf/repodict.py
@@ -79,8 +79,8 @@ class RepoDict(dict):
if isinstance(value, str):
substituted.append(
libdnf.conf.ConfigParser.substitute(value, conf.substitutions))
- if substituted:
- return substituted
+ if substituted:
+ return substituted
return values
repo = dnf.repo.Repo(repoid, conf)
--
2.41.0
From d750fcb27686f73e352ae4575db150aa954aeb10 Mon Sep 17 00:00:00 2001
From: Anish Bhatt <anish.bhatt@salesforce.com>
Date: Mon, 10 Jul 2023 10:10:30 -0700
Subject: [PATCH] Add to authors
---
AUTHORS | 1 +
1 file changed, 1 insertion(+)
diff --git a/AUTHORS b/AUTHORS
index e802a51e..699a92c4 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -63,6 +63,7 @@ DNF CONTRIBUTORS
Adam Williamson <awilliam@redhat.com>
Albert Uchytil <auchytil@redhat.com>
Alberto Ruiz <aruiz@redhat.com>
+ Anish Bhatt <anish.bhatt@salesforce.com>
Baurzhan Muftakhidinov <baurthefirst@gmail.com>
Christopher Meng <cickumqt@gmail.com>
Daniel Mach <dmach@redhat.com>
--
2.41.0

View File

@ -0,0 +1,55 @@
From cbc552f3f2ef72c8cb46e068aef841eee9206e30 Mon Sep 17 00:00:00 2001
From: Marek Blaha <mblaha@redhat.com>
Date: Wed, 20 Sep 2023 09:15:03 +0200
Subject: [PATCH] base: Add obsoleters of only latest versions
Resolves situations where a package is in older version obsoleted, but
there is newer (not obsoleted) version available.
This patch covers installation of group packages and arch specific
packages. The rest is in hawkey library.
Relevant bugs:
https://bugzilla.redhat.com/show_bug.cgi?id=2183279
https://bugzilla.redhat.com/show_bug.cgi?id=2176263
---
dnf/base.py | 17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)
diff --git a/dnf/base.py b/dnf/base.py
index 7e97e21..50869ec 100644
--- a/dnf/base.py
+++ b/dnf/base.py
@@ -1684,7 +1684,16 @@ class Base(object):
sltr.set(provides="({} if {})".format(comps_pkg.name, comps_pkg.requires))
else:
if self.conf.obsoletes:
- query = query.union(self.sack.query().filterm(obsoletes=query))
+ # If there is no installed package in the pkgs_list, add only
+ # obsoleters of the latest versions. Otherwise behave
+ # consistently with upgrade and add all obsoleters.
+ # See https://bugzilla.redhat.com/show_bug.cgi?id=2176263
+ # for details of the problem.
+ if query.installed():
+ query = query.union(self.sack.query().filterm(obsoletes=query))
+ else:
+ query = query.union(self.sack.query().filterm(
+ obsoletes=query.filter(latest_per_arch_by_priority=True)))
sltr.set(pkg=query)
self._goal.install(select=sltr, optional=not strict)
return remove_query
@@ -1921,7 +1930,11 @@ class Base(object):
sltr = dnf.selector.Selector(self.sack)
q = self.sack.query().filterm(pkg=packages)
if self.conf.obsoletes:
- q = q.union(self.sack.query().filterm(obsoletes=q))
+ # use only obsoletes of the latest versions
+ # See https://bugzilla.redhat.com/show_bug.cgi?id=2176263
+ # for details of the problem.
+ q = q.union(self.sack.query().filterm(
+ obsoletes=q.filter(latest_per_arch_by_priority=True)))
sltr = sltr.set(pkg=q)
if reponame is not None:
sltr = sltr.set(reponame=reponame)
--
libgit2 1.6.4

View File

@ -0,0 +1,79 @@
From 0592ff47bc1b9029eb9b25d59410062038fdacd3 Mon Sep 17 00:00:00 2001
From: Jaroslav Mracek <jmracek@redhat.com>
Date: Thu, 15 Feb 2024 11:28:59 +0100
Subject: [PATCH] Add all candidates for reinstall to solver
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Upstream commit: 96f8d79c37e119ff56f730797865121b63241a6b
Resolves: https://issues.redhat.com/browse/RHEL-25005
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
dnf/base.py | 9 ++++++---
dnf/query.py | 5 ++++-
tests/test_queries.py | 7 ++++++-
3 files changed, 16 insertions(+), 5 deletions(-)
diff --git a/dnf/base.py b/dnf/base.py
index 50869ec4..adb5ad6f 100644
--- a/dnf/base.py
+++ b/dnf/base.py
@@ -2333,19 +2333,22 @@ class Base(object):
if not installed_pkgs:
raise dnf.exceptions.PackagesNotInstalledError(
- 'no package matched', pkg_spec, available_nevra2pkg.values())
+ 'no package matched', pkg_spec, available_q.run())
cnt = 0
clean_deps = self.conf.clean_requirements_on_remove
+ strict = self.conf.strict
for installed_pkg in installed_pkgs:
try:
- available_pkg = available_nevra2pkg[ucd(installed_pkg)]
+ available_pkgs = available_nevra2pkg[ucd(installed_pkg)]
except KeyError:
if not remove_na:
continue
self._goal.erase(installed_pkg, clean_deps=clean_deps)
else:
- self._goal.install(available_pkg)
+ sltr = dnf.selector.Selector(self.sack)
+ sltr.set(pkg=available_pkgs)
+ self._goal.install(select=sltr, optional=(not strict))
cnt += 1
if cnt == 0:
diff --git a/dnf/query.py b/dnf/query.py
index ab4139bf..02e631a6 100644
--- a/dnf/query.py
+++ b/dnf/query.py
@@ -43,4 +43,7 @@ def _by_provides(sack, patterns, ignore_case=False, get_query=False):
return q.run()
def _per_nevra_dict(pkg_list):
- return {ucd(pkg):pkg for pkg in pkg_list}
+ nevra_dic = {}
+ for pkg in pkg_list:
+ nevra_dic.setdefault(ucd(pkg), []).append(pkg)
+ return nevra_dic
diff --git a/tests/test_queries.py b/tests/test_queries.py
index cdcb7ca4..e0253008 100644
--- a/tests/test_queries.py
+++ b/tests/test_queries.py
@@ -128,4 +128,9 @@ class DictsTest(tests.support.TestCase):
dct = dnf.query._per_nevra_dict(pkgs)
self.assertCountEqual(dct.keys(),
["lotus-3-16.x86_64", "lotus-3-16.i686"])
- self.assertCountEqual(dct.values(), pkgs)
+ test_list = []
+ for list_items in dct.values():
+ for item in list_items:
+ test_list.append(item)
+
+ self.assertCountEqual(test_list, pkgs)
--
2.44.0

View File

@ -69,7 +69,7 @@ It supports RPMs, modules and comps groups & environments.
Name: dnf
Version: 4.14.0
Release: 8%{?dist}
Release: 10%{?dist}
Summary: %{pkg_summary}
# For a breakdown of the licensing, see PACKAGE-LICENSING
License: GPLv2+
@ -86,6 +86,10 @@ Patch8: 0008-Omit-src-RPMs-from-check-update-RhBug-2151910.patch
Patch9: 0009-automatic-Fix-online-detection-with-proxy-RhBz2022440.patch
Patch10: 0010-automatic-Return-an-error-when-transaction-fails-RhB.patch
Patch11: 0011-Document-symbols-in-dnf-history-list-output.patch
Patch12: 0012-RHEL-11345-Fix-japanese-translations.patch
Patch13: 0013-RHEL-6396-Fix-substitution-in-kvp-in-add_new_repo.patch
Patch14: 0014-RHEL-6304-base-Add-obsoleters-of-only-latest-versions.patch
Patch15: 0015-Add-all-candidates-for-reinstall-to-solver.patch
BuildArch: noarch
BuildRequires: cmake
@ -374,6 +378,14 @@ popd
%{python3_sitelib}/%{name}/automatic/
%changelog
* Tue Apr 23 2024 Petr Pisar <ppisar@redhat.com> - 4.14.0-10
- Fix preferring the lowest-cost repositories on a reinstallation (RHEL-25005)
* Wed Oct 25 2023 Jaroslav Rohel <jrohel@redhat.com> - 4.14.0-9
- Fix japanese translations (RHEL-11345)
- Fix substitution in kay-value-pair list in add_new_repo (RHEL-6396)
- base: Add obsoleters of only latest versions (RHEL-6304)
* Wed Jun 28 2023 Jaroslav Rohel <jrohel@redhat.com> - 4.14.0-8
- Return an error when transaction fails (RhBug:2170093,2212262)
- Document symbols in `dnf history list` output (RhBug:2172067,2218113)