commit
7a61b638f0
@ -0,0 +1 @@
|
|||||||
|
0697aee277730c57446b5b87bdb12456cf245203 SOURCES/dnf-4.14.0.tar.gz
|
@ -0,0 +1 @@
|
|||||||
|
SOURCES/dnf-4.14.0.tar.gz
|
@ -0,0 +1,62 @@
|
|||||||
|
From 5e082d74b73bf1b3565cfd72a3e1ba7a45a00a8b Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hr=C3=A1zk=C3=BD?= <lhrazky@redhat.com>
|
||||||
|
Date: Wed, 7 Sep 2022 14:40:32 +0200
|
||||||
|
Subject: [PATCH 1/2] Pass whole URL in relativeUrl to PackageTarget for RPM
|
||||||
|
URL download
|
||||||
|
|
||||||
|
The PackageTarget supports baseUrl and relativeUrl on the API, but then
|
||||||
|
the relativeUrl is just a path fragment with no definition on whether it
|
||||||
|
should be encoded. It's being passed unencoded paths from other places,
|
||||||
|
and so there's a conditional encode (only if not full URL) in libdnf.
|
||||||
|
|
||||||
|
But full URLs are actually supported in relativeUrl (in that case
|
||||||
|
baseUrl should be empty) and in that case the URL is expected to be
|
||||||
|
encoded and is not encoded for the second time.
|
||||||
|
|
||||||
|
Hence, pass the full URL to relativeUrl instead of splitting it. We also
|
||||||
|
need to decode the file name we store, as on the filesystem the RPM file
|
||||||
|
name is also decoded.
|
||||||
|
|
||||||
|
= changelog =
|
||||||
|
msg: Don't double-encode RPM URLs passed on CLI
|
||||||
|
type: bugfix
|
||||||
|
resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2103015
|
||||||
|
---
|
||||||
|
dnf/repo.py | 7 ++++---
|
||||||
|
1 file changed, 4 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/dnf/repo.py b/dnf/repo.py
|
||||||
|
index ec1a2537..86fb2bf4 100644
|
||||||
|
--- a/dnf/repo.py
|
||||||
|
+++ b/dnf/repo.py
|
||||||
|
@@ -47,6 +47,7 @@ import string
|
||||||
|
import sys
|
||||||
|
import time
|
||||||
|
import traceback
|
||||||
|
+import urllib
|
||||||
|
|
||||||
|
_PACKAGES_RELATIVE_DIR = "packages"
|
||||||
|
_MIRRORLIST_FILENAME = "mirrorlist"
|
||||||
|
@@ -295,7 +296,7 @@ class RemoteRPMPayload(PackagePayload):
|
||||||
|
self.local_path = os.path.join(self.pkgdir, self.__str__().lstrip("/"))
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
- return os.path.basename(self.remote_location)
|
||||||
|
+ return os.path.basename(urllib.parse.unquote(self.remote_location))
|
||||||
|
|
||||||
|
def _progress_cb(self, cbdata, total, done):
|
||||||
|
self.remote_size = total
|
||||||
|
@@ -308,8 +309,8 @@ class RemoteRPMPayload(PackagePayload):
|
||||||
|
|
||||||
|
def _librepo_target(self):
|
||||||
|
return libdnf.repo.PackageTarget(
|
||||||
|
- self.conf._config, os.path.basename(self.remote_location),
|
||||||
|
- self.pkgdir, 0, None, 0, os.path.dirname(self.remote_location),
|
||||||
|
+ self.conf._config, self.remote_location,
|
||||||
|
+ self.pkgdir, 0, None, 0, None,
|
||||||
|
True, 0, 0, self.callbacks)
|
||||||
|
|
||||||
|
@property
|
||||||
|
--
|
||||||
|
2.37.3
|
||||||
|
|
@ -0,0 +1,96 @@
|
|||||||
|
From a41c3aefaa4f982511363645f5608e270094cadf Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jan Kolarik <jkolarik@redhat.com>
|
||||||
|
Date: Tue, 1 Nov 2022 09:15:08 +0000
|
||||||
|
Subject: [PATCH 2/2] Document changes to offline-upgrade command
|
||||||
|
(RhBug:1939975)
|
||||||
|
|
||||||
|
A support for security filters was added to the offline-upgrade command. This commit adds the documentation into the man pages.
|
||||||
|
|
||||||
|
= changelog =
|
||||||
|
type: bugfix
|
||||||
|
resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1939975
|
||||||
|
---
|
||||||
|
doc/command_ref.rst | 28 ++++++++++++++--------------
|
||||||
|
1 file changed, 14 insertions(+), 14 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/doc/command_ref.rst b/doc/command_ref.rst
|
||||||
|
index f39f2c71..3ee66bac 100644
|
||||||
|
--- a/doc/command_ref.rst
|
||||||
|
+++ b/doc/command_ref.rst
|
||||||
|
@@ -114,7 +114,7 @@ Options
|
||||||
|
|
||||||
|
``--advisory=<advisory>, --advisories=<advisory>``
|
||||||
|
Include packages corresponding to the advisory ID, Eg. FEDORA-2201-123.
|
||||||
|
- Applicable for the install, repoquery, updateinfo and upgrade commands.
|
||||||
|
+ Applicable for the ``install``, ``repoquery``, ``updateinfo``, ``upgrade`` and ``offline-upgrade`` (dnf-plugins-core) commands.
|
||||||
|
|
||||||
|
``--allowerasing``
|
||||||
|
Allow erasing of installed packages to resolve dependencies. This option could be used as an alternative to the ``yum swap`` command where packages to remove are not explicitly defined.
|
||||||
|
@@ -130,12 +130,12 @@ Options
|
||||||
|
solver may use older versions of dependencies to meet their requirements.
|
||||||
|
|
||||||
|
``--bugfix``
|
||||||
|
- Include packages that fix a bugfix issue. Applicable for the install, repoquery, updateinfo and
|
||||||
|
- upgrade commands.
|
||||||
|
+ Include packages that fix a bugfix issue.
|
||||||
|
+ Applicable for the ``install``, ``repoquery``, ``updateinfo``, ``upgrade`` and ``offline-upgrade`` (dnf-plugins-core) commands.
|
||||||
|
|
||||||
|
``--bz=<bugzilla>, --bzs=<bugzilla>``
|
||||||
|
- Include packages that fix a Bugzilla ID, Eg. 123123. Applicable for the install, repoquery,
|
||||||
|
- updateinfo and upgrade commands.
|
||||||
|
+ Include packages that fix a Bugzilla ID, Eg. 123123.
|
||||||
|
+ Applicable for the ``install``, ``repoquery``, ``updateinfo``, ``upgrade`` and ``offline-upgrade`` (dnf-plugins-core) commands.
|
||||||
|
|
||||||
|
``-C, --cacheonly``
|
||||||
|
Run entirely from system cache, don't update the cache and use it even in case it is expired.
|
||||||
|
@@ -153,8 +153,8 @@ Options
|
||||||
|
|
||||||
|
``--cve=<cves>, --cves=<cves>``
|
||||||
|
Include packages that fix a CVE (Common Vulnerabilities and Exposures) ID
|
||||||
|
- (http://cve.mitre.org/about/), Eg. CVE-2201-0123. Applicable for the install, repoquery, updateinfo,
|
||||||
|
- and upgrade commands.
|
||||||
|
+ (http://cve.mitre.org/about/), Eg. CVE-2201-0123.
|
||||||
|
+ Applicable for the ``install``, ``repoquery``, ``updateinfo``, ``upgrade`` and ``offline-upgrade`` (dnf-plugins-core) commands.
|
||||||
|
|
||||||
|
``-d <debug level>, --debuglevel=<debug level>``
|
||||||
|
Debugging output level. This is an integer value between 0 (no additional information strings) and 10 (shows all debugging information, even that not understandable to the user), default is 2. Deprecated, use ``-v`` instead.
|
||||||
|
@@ -217,8 +217,8 @@ Options
|
||||||
|
specified multiple times.
|
||||||
|
|
||||||
|
``--enhancement``
|
||||||
|
- Include enhancement relevant packages. Applicable for the install, repoquery, updateinfo and
|
||||||
|
- upgrade commands.
|
||||||
|
+ Include enhancement relevant packages.
|
||||||
|
+ Applicable for the ``install``, ``repoquery``, ``updateinfo``, ``upgrade`` and ``offline-upgrade`` (dnf-plugins-core) commands.
|
||||||
|
|
||||||
|
.. _exclude_option-label:
|
||||||
|
|
||||||
|
@@ -289,8 +289,8 @@ Options
|
||||||
|
``--setopt`` using configuration from ``/path/dnf.conf``.
|
||||||
|
|
||||||
|
``--newpackage``
|
||||||
|
- Include newpackage relevant packages. Applicable for the install, repoquery, updateinfo and
|
||||||
|
- upgrade commands.
|
||||||
|
+ Include newpackage relevant packages.
|
||||||
|
+ Applicable for the ``install``, ``repoquery``, ``updateinfo``, ``upgrade`` and ``offline-upgrade`` (dnf-plugins-core) commands.
|
||||||
|
|
||||||
|
``--noautoremove``
|
||||||
|
Disable removal of dependencies that are no longer used. It sets
|
||||||
|
@@ -362,11 +362,11 @@ Options
|
||||||
|
|
||||||
|
``--sec-severity=<severity>, --secseverity=<severity>``
|
||||||
|
Includes packages that provide a fix for an issue of the specified severity.
|
||||||
|
- Applicable for the install, repoquery, updateinfo and upgrade commands.
|
||||||
|
+ Applicable for the ``install``, ``repoquery``, ``updateinfo``, ``upgrade`` and ``offline-upgrade`` (dnf-plugins-core) commands.
|
||||||
|
|
||||||
|
``--security``
|
||||||
|
- Includes packages that provide a fix for a security issue. Applicable for the
|
||||||
|
- upgrade command.
|
||||||
|
+ Includes packages that provide a fix for a security issue.
|
||||||
|
+ Applicable for the ``install``, ``repoquery``, ``updateinfo``, ``upgrade`` and ``offline-upgrade`` (dnf-plugins-core) commands.
|
||||||
|
|
||||||
|
.. _setopt_option-label:
|
||||||
|
|
||||||
|
--
|
||||||
|
2.38.1
|
||||||
|
|
@ -0,0 +1,31 @@
|
|||||||
|
From e5732ab22f092bb3fc6ce6e8f94aad72f3654383 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jan Kolarik <jkolarik@redhat.com>
|
||||||
|
Date: Wed, 31 Aug 2022 07:49:39 +0200
|
||||||
|
Subject: [PATCH 1/2] Move system-upgrade plugin to core (RhBug:2054235)
|
||||||
|
|
||||||
|
Just doc fix.
|
||||||
|
|
||||||
|
= changelog =
|
||||||
|
type: bugfix
|
||||||
|
resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2054235
|
||||||
|
---
|
||||||
|
doc/command_ref.rst | 3 +--
|
||||||
|
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/doc/command_ref.rst b/doc/command_ref.rst
|
||||||
|
index 996ae3b4..f39f2c71 100644
|
||||||
|
--- a/doc/command_ref.rst
|
||||||
|
+++ b/doc/command_ref.rst
|
||||||
|
@@ -189,8 +189,7 @@ Options
|
||||||
|
``--downloaddir=<path>, --destdir=<path>``
|
||||||
|
Redirect downloaded packages to provided directory. The option has to be used together with the \-\
|
||||||
|
:ref:`-downloadonly <downloadonly-label>` command line option, with the
|
||||||
|
- ``download``, ``modulesync`` or ``reposync`` commands (dnf-plugins-core) or with the ``system-upgrade`` command
|
||||||
|
- (dnf-plugins-extras).
|
||||||
|
+ ``download``, ``modulesync``, ``reposync`` or ``system-upgrade`` commands (dnf-plugins-core).
|
||||||
|
|
||||||
|
.. _downloadonly-label:
|
||||||
|
|
||||||
|
--
|
||||||
|
2.38.1
|
||||||
|
|
@ -0,0 +1,94 @@
|
|||||||
|
From 3ef5ec915ea4b5e6fe7d25542f0daccef278c01e Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jan Kolarik <jkolarik@redhat.com>
|
||||||
|
Date: Tue, 13 Sep 2022 14:35:10 +0200
|
||||||
|
Subject: [PATCH] Fix plugins unit tests + unload plugins upon their deletion
|
||||||
|
|
||||||
|
---
|
||||||
|
dnf/plugin.py | 8 ++++++--
|
||||||
|
tests/api/test_dnf_base.py | 24 +++++++++++++++++++-----
|
||||||
|
2 files changed, 25 insertions(+), 7 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/dnf/plugin.py b/dnf/plugin.py
|
||||||
|
index b083727d..d2f46ce3 100644
|
||||||
|
--- a/dnf/plugin.py
|
||||||
|
+++ b/dnf/plugin.py
|
||||||
|
@@ -98,6 +98,9 @@ class Plugins(object):
|
||||||
|
self.plugin_cls = []
|
||||||
|
self.plugins = []
|
||||||
|
|
||||||
|
+ def __del__(self):
|
||||||
|
+ self._unload()
|
||||||
|
+
|
||||||
|
def _caller(self, method):
|
||||||
|
for plugin in self.plugins:
|
||||||
|
try:
|
||||||
|
@@ -164,8 +167,9 @@ class Plugins(object):
|
||||||
|
self._caller('transaction')
|
||||||
|
|
||||||
|
def _unload(self):
|
||||||
|
- logger.debug(_('Plugins were unloaded'))
|
||||||
|
- del sys.modules[DYNAMIC_PACKAGE]
|
||||||
|
+ if DYNAMIC_PACKAGE in sys.modules:
|
||||||
|
+ logger.log(dnf.logging.DDEBUG, 'Plugins were unloaded.')
|
||||||
|
+ del sys.modules[DYNAMIC_PACKAGE]
|
||||||
|
|
||||||
|
def unload_removed_plugins(self, transaction):
|
||||||
|
"""
|
||||||
|
diff --git a/tests/api/test_dnf_base.py b/tests/api/test_dnf_base.py
|
||||||
|
index e84e272b..19754b07 100644
|
||||||
|
--- a/tests/api/test_dnf_base.py
|
||||||
|
+++ b/tests/api/test_dnf_base.py
|
||||||
|
@@ -7,10 +7,23 @@ from __future__ import unicode_literals
|
||||||
|
import dnf
|
||||||
|
import dnf.conf
|
||||||
|
|
||||||
|
+import tests.support
|
||||||
|
+
|
||||||
|
from .common import TestCase
|
||||||
|
from .common import TOUR_4_4
|
||||||
|
|
||||||
|
|
||||||
|
+def conf_with_empty_plugins():
|
||||||
|
+ """
|
||||||
|
+ Use empty configuration to avoid importing plugins from default paths
|
||||||
|
+ which would lead to crash of other tests.
|
||||||
|
+ """
|
||||||
|
+ conf = tests.support.FakeConf()
|
||||||
|
+ conf.plugins = True
|
||||||
|
+ conf.pluginpath = []
|
||||||
|
+ return conf
|
||||||
|
+
|
||||||
|
+
|
||||||
|
class DnfBaseApiTest(TestCase):
|
||||||
|
def setUp(self):
|
||||||
|
self.base = dnf.Base(dnf.conf.Conf())
|
||||||
|
@@ -75,13 +88,12 @@ class DnfBaseApiTest(TestCase):
|
||||||
|
self.assertHasType(self.base.transaction, dnf.db.group.RPMTransaction)
|
||||||
|
|
||||||
|
def test_init_plugins(self):
|
||||||
|
- # Base.init_plugins(disabled_glob=(), enable_plugins=(), cli=None)
|
||||||
|
+ # Base.init_plugins()
|
||||||
|
self.assertHasAttr(self.base, "init_plugins")
|
||||||
|
|
||||||
|
- # disable plugins to avoid calling dnf.plugin.Plugins._load() multiple times
|
||||||
|
- # which causes the tests to crash
|
||||||
|
- self.base.conf.plugins = False
|
||||||
|
- self.base.init_plugins(disabled_glob=(), enable_plugins=(), cli=None)
|
||||||
|
+ self.base._conf = conf_with_empty_plugins()
|
||||||
|
+
|
||||||
|
+ self.base.init_plugins()
|
||||||
|
|
||||||
|
def test_pre_configure_plugins(self):
|
||||||
|
# Base.pre_configure_plugins()
|
||||||
|
@@ -99,6 +111,8 @@ class DnfBaseApiTest(TestCase):
|
||||||
|
# Base.unload_plugins()
|
||||||
|
self.assertHasAttr(self.base, "unload_plugins")
|
||||||
|
|
||||||
|
+ self.base._conf = conf_with_empty_plugins()
|
||||||
|
+
|
||||||
|
self.base.init_plugins()
|
||||||
|
self.base.unload_plugins()
|
||||||
|
|
||||||
|
--
|
||||||
|
2.38.1
|
||||||
|
|
@ -0,0 +1,50 @@
|
|||||||
|
From 490cf87dd27926d16fb10735b467cbc490d5c9f1 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jan Kolarik <jkolarik@redhat.com>
|
||||||
|
Date: Wed, 23 Nov 2022 08:44:41 +0000
|
||||||
|
Subject: [PATCH] Ignore processing variable files with unsupported encoding
|
||||||
|
(RhBug:2141215)
|
||||||
|
|
||||||
|
This issue could be seen for example when there are some temporary files stored by text editors in the `/etc/dnf/vars` folder. These files could be in the binary format and causes `UnicodeDecodeError` exception to be thrown during processing of the var files.
|
||||||
|
|
||||||
|
= changelog =
|
||||||
|
type: bugfix
|
||||||
|
resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2141215
|
||||||
|
---
|
||||||
|
dnf/conf/substitutions.py | 9 ++++++---
|
||||||
|
1 file changed, 6 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/dnf/conf/substitutions.py b/dnf/conf/substitutions.py
|
||||||
|
index 1281bdf0..4d0f0d55 100644
|
||||||
|
--- a/dnf/conf/substitutions.py
|
||||||
|
+++ b/dnf/conf/substitutions.py
|
||||||
|
@@ -18,13 +18,15 @@
|
||||||
|
# Red Hat, Inc.
|
||||||
|
#
|
||||||
|
|
||||||
|
+import logging
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
|
||||||
|
-import dnf
|
||||||
|
-import dnf.exceptions
|
||||||
|
+from dnf.i18n import _
|
||||||
|
|
||||||
|
ENVIRONMENT_VARS_RE = re.compile(r'^DNF_VAR_[A-Za-z0-9_]+$')
|
||||||
|
+logger = logging.getLogger('dnf')
|
||||||
|
+
|
||||||
|
|
||||||
|
class Substitutions(dict):
|
||||||
|
# :api
|
||||||
|
@@ -60,7 +62,8 @@ class Substitutions(dict):
|
||||||
|
val = fp.readline()
|
||||||
|
if val and val[-1] == '\n':
|
||||||
|
val = val[:-1]
|
||||||
|
- except (OSError, IOError):
|
||||||
|
+ except (OSError, IOError, UnicodeDecodeError) as e:
|
||||||
|
+ logger.warning(_("Error when parsing a variable from file '{0}': {1}").format(filepath, e))
|
||||||
|
continue
|
||||||
|
if val is not None:
|
||||||
|
self[fsvar] = val
|
||||||
|
--
|
||||||
|
2.39.0
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in new issue