Merge branch 'c10s' into a10s
This commit is contained in:
commit
942ab5ac1e
131
0011-Automatic-check-availability-of-config-file.patch
Normal file
131
0011-Automatic-check-availability-of-config-file.patch
Normal file
@ -0,0 +1,131 @@
|
|||||||
|
From 36389b63b12c2f6996772bd2bc7e98b6f3bacdf0 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Marek Blaha <mblaha@redhat.com>
|
||||||
|
Date: Thu, 17 Oct 2024 13:30:21 +0200
|
||||||
|
Subject: [PATCH 1/2] automatic: Check availability of config file
|
||||||
|
|
||||||
|
Upstream commit: 13ecc3921fb1566c2af7b80d5cb515d8fc4e5ec9
|
||||||
|
|
||||||
|
If a configuration file is explicitly specified on the command line,
|
||||||
|
ensure that it exists and is readable. If the file is not found, notify
|
||||||
|
the user immediately and terminate the process.
|
||||||
|
|
||||||
|
This resolves issues where users may run dnf-automatic with unrecognized
|
||||||
|
positional arguments, such as `dnf-automatic install`.
|
||||||
|
|
||||||
|
The most natural approach to handle a non-existing config file would be
|
||||||
|
by catching the exception thrown by the `read()` method of the
|
||||||
|
`libdnf.conf.ConfigParser` class. Unfortunately, the Python bindings
|
||||||
|
override the `read()` method at the SWIG level, causing it to suppress any
|
||||||
|
potentially raised IOError.
|
||||||
|
For details see this section of the commit
|
||||||
|
https://github.com/rpm-software-management/libdnf/commit/8f1fedf8551b72d6bc24018f5980714b3a103aeb
|
||||||
|
|
||||||
|
def ConfigParser__newRead(self, filenames):
|
||||||
|
parsedFNames = []
|
||||||
|
try:
|
||||||
|
if isinstance(filenames, str) or isinstance(filenames, unicode):
|
||||||
|
filenames = [filenames]
|
||||||
|
except NameError:
|
||||||
|
pass
|
||||||
|
for fname in filenames:
|
||||||
|
try:
|
||||||
|
self.readFileName(fname)
|
||||||
|
parsedFNames.append(fname)
|
||||||
|
except IOError:
|
||||||
|
pass
|
||||||
|
except Exception as e:
|
||||||
|
raise RuntimeError("Parsing file '%s' failed: %s" % (fname, str(e)))
|
||||||
|
return parsedFNames
|
||||||
|
ConfigParser.read = ConfigParser__newRead
|
||||||
|
|
||||||
|
Resolves: https://issues.redhat.com/browse/RHEL-68979
|
||||||
|
---
|
||||||
|
dnf/automatic/main.py | 19 +++++++++++++++----
|
||||||
|
1 file changed, 15 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/dnf/automatic/main.py b/dnf/automatic/main.py
|
||||||
|
index 243e3015..21aa82b7 100644
|
||||||
|
--- a/dnf/automatic/main.py
|
||||||
|
+++ b/dnf/automatic/main.py
|
||||||
|
@@ -74,7 +74,7 @@ def build_emitters(conf):
|
||||||
|
|
||||||
|
def parse_arguments(args):
|
||||||
|
parser = argparse.ArgumentParser()
|
||||||
|
- parser.add_argument('conf_path', nargs='?', default=dnf.const.CONF_AUTOMATIC_FILENAME)
|
||||||
|
+ parser.add_argument('conf_path', nargs='?')
|
||||||
|
parser.add_argument('--timer', action='store_true')
|
||||||
|
parser.add_argument('--installupdates', dest='installupdates', action='store_true')
|
||||||
|
parser.add_argument('--downloadupdates', dest='downloadupdates', action='store_true')
|
||||||
|
@@ -89,7 +89,17 @@ def parse_arguments(args):
|
||||||
|
class AutomaticConfig(object):
|
||||||
|
def __init__(self, filename=None, downloadupdates=None,
|
||||||
|
installupdates=None):
|
||||||
|
- if not filename:
|
||||||
|
+ if filename:
|
||||||
|
+ # Specific config file was explicitely requested. Check that it exists
|
||||||
|
+ # and is readable.
|
||||||
|
+ if os.access(filename, os.F_OK):
|
||||||
|
+ if not os.access(filename, os.R_OK):
|
||||||
|
+ raise dnf.exceptions.Error(
|
||||||
|
+ "Configuration file \"{}\" is not readable.".format(filename))
|
||||||
|
+ else:
|
||||||
|
+ raise dnf.exceptions.Error(
|
||||||
|
+ "Configuration file \"{}\" not found.".format(filename))
|
||||||
|
+ else:
|
||||||
|
filename = dnf.const.CONF_AUTOMATIC_FILENAME
|
||||||
|
self.commands = CommandsConfig()
|
||||||
|
self.email = EmailConfig()
|
||||||
|
@@ -302,11 +312,12 @@ def wait_for_network(repos, timeout):
|
||||||
|
|
||||||
|
def main(args):
|
||||||
|
(opts, parser) = parse_arguments(args)
|
||||||
|
+ conf = None
|
||||||
|
+ emitters = None
|
||||||
|
|
||||||
|
try:
|
||||||
|
conf = AutomaticConfig(opts.conf_path, opts.downloadupdates,
|
||||||
|
opts.installupdates)
|
||||||
|
- emitters = None
|
||||||
|
with dnf.Base() as base:
|
||||||
|
cli = dnf.cli.Cli(base)
|
||||||
|
cli._read_conf_file()
|
||||||
|
@@ -371,7 +382,7 @@ def main(args):
|
||||||
|
raise dnf.exceptions.Error('reboot command returned nonzero exit code: %d', exit_code)
|
||||||
|
except dnf.exceptions.Error as exc:
|
||||||
|
logger.error(_('Error: %s'), ucd(exc))
|
||||||
|
- if conf.emitters.send_error_messages and emitters != None:
|
||||||
|
+ if conf is not None and conf.emitters.send_error_messages and emitters is not None:
|
||||||
|
emitters.notify_error(_('Error: %s') % str(exc))
|
||||||
|
emitters.commit()
|
||||||
|
return 1
|
||||||
|
--
|
||||||
|
2.47.1
|
||||||
|
|
||||||
|
|
||||||
|
From bfc4d7ae2d9a567aaf656388c8b914b7a03db39d Mon Sep 17 00:00:00 2001
|
||||||
|
From: Marek Blaha <mblaha@redhat.com>
|
||||||
|
Date: Thu, 12 Dec 2024 08:09:48 +0100
|
||||||
|
Subject: [PATCH 2/2] automatic: Fix incorrect Error class instantiation
|
||||||
|
|
||||||
|
dnf.exceptions.Error class constructor accepts only one argument - error
|
||||||
|
message.
|
||||||
|
---
|
||||||
|
dnf/automatic/main.py | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/dnf/automatic/main.py b/dnf/automatic/main.py
|
||||||
|
index 21aa82b7..1a1e1cf0 100644
|
||||||
|
--- a/dnf/automatic/main.py
|
||||||
|
+++ b/dnf/automatic/main.py
|
||||||
|
@@ -379,7 +379,7 @@ def main(args):
|
||||||
|
(conf.commands.reboot == 'when-needed' and base.reboot_needed())):
|
||||||
|
exit_code = os.waitstatus_to_exitcode(os.system(conf.commands.reboot_command))
|
||||||
|
if exit_code != 0:
|
||||||
|
- raise dnf.exceptions.Error('reboot command returned nonzero exit code: %d', exit_code)
|
||||||
|
+ raise dnf.exceptions.Error('reboot command returned nonzero exit code: %d' % exit_code)
|
||||||
|
except dnf.exceptions.Error as exc:
|
||||||
|
logger.error(_('Error: %s'), ucd(exc))
|
||||||
|
if conf is not None and conf.emitters.send_error_messages and emitters is not None:
|
||||||
|
--
|
||||||
|
2.47.1
|
||||||
|
|
8
dnf.spec
8
dnf.spec
@ -68,7 +68,7 @@ It supports RPMs, modules and comps groups & environments.
|
|||||||
|
|
||||||
Name: dnf
|
Name: dnf
|
||||||
Version: 4.20.0
|
Version: 4.20.0
|
||||||
Release: 9%{?dist}.alma.1
|
Release: 10%{?dist}.alma.1
|
||||||
Summary: %{pkg_summary}
|
Summary: %{pkg_summary}
|
||||||
# For a breakdown of the licensing, see PACKAGE-LICENSING
|
# For a breakdown of the licensing, see PACKAGE-LICENSING
|
||||||
License: GPL-2.0-or-later AND GPL-1.0-only
|
License: GPL-2.0-or-later AND GPL-1.0-only
|
||||||
@ -84,6 +84,7 @@ Patch7: 0007-Update-ostree-bootc-host-system-check.patch
|
|||||||
Patch8: 0008-Update-bootc-hosts-message-to-point-to-bootc-help.patch
|
Patch8: 0008-Update-bootc-hosts-message-to-point-to-bootc-help.patch
|
||||||
Patch9: 0009-Allow-installroot-on-read-only-bootc-system.patch
|
Patch9: 0009-Allow-installroot-on-read-only-bootc-system.patch
|
||||||
Patch10: 0010-Allow-downloadonly-on-read-only-bootc-system.patch
|
Patch10: 0010-Allow-downloadonly-on-read-only-bootc-system.patch
|
||||||
|
Patch11: 0011-Automatic-check-availability-of-config-file.patch
|
||||||
|
|
||||||
|
|
||||||
# AlmaLinux patches
|
# AlmaLinux patches
|
||||||
@ -431,10 +432,13 @@ popd
|
|||||||
%{python3_sitelib}/%{name}/automatic/
|
%{python3_sitelib}/%{name}/automatic/
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
* Mon Dec 09 2024 Eduard Abdullin <eabdullin@almalinux.org> - 4.20.0-9.alma.1
|
* Wed Jan 08 2025 Eduard Abdullin <eabdullin@almalinux.org> - 4.20.0-10.alma.1
|
||||||
- Add x86_64_v2 to _BASEARCH_MAP
|
- Add x86_64_v2 to _BASEARCH_MAP
|
||||||
- Add link to AlmaLinux bugtracker
|
- Add link to AlmaLinux bugtracker
|
||||||
|
|
||||||
|
* Fri Dec 13 2024 Marek Blaha <mblaha@redhat.com> - 4.20.0-10
|
||||||
|
- automatic: Check availability of config file
|
||||||
|
|
||||||
* Tue Oct 29 2024 Troy Dawson <tdawson@redhat.com> - 4.20.0-9
|
* Tue Oct 29 2024 Troy Dawson <tdawson@redhat.com> - 4.20.0-9
|
||||||
- Bump release for October 2024 mass rebuild:
|
- Bump release for October 2024 mass rebuild:
|
||||||
Resolves: RHEL-64018
|
Resolves: RHEL-64018
|
||||||
|
@ -8,6 +8,10 @@ discover:
|
|||||||
how: fmf
|
how: fmf
|
||||||
filter: 'tag: CI-Tier-1'
|
filter: 'tag: CI-Tier-1'
|
||||||
url: https://pkgs.devel.redhat.com/git/tests/libdnf
|
url: https://pkgs.devel.redhat.com/git/tests/libdnf
|
||||||
|
- name: libmodulemd
|
||||||
|
how: fmf
|
||||||
|
filter: 'tag: CI-Tier-1'
|
||||||
|
url: https://pkgs.devel.redhat.com/git/tests/libmodulemd
|
||||||
- name: yum
|
- name: yum
|
||||||
how: fmf
|
how: fmf
|
||||||
filter: 'tag: CI-Tier-1'
|
filter: 'tag: CI-Tier-1'
|
||||||
|
Loading…
Reference in New Issue
Block a user