From 7a536a3f30c7a67aa705b84f3b415f726a2ca268 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Jul 28 2020 12:59:35 +0000 Subject: import dnf-4.2.23-2.el8 --- diff --git a/.dnf.metadata b/.dnf.metadata index 9216042..0bcc7b5 100644 --- a/.dnf.metadata +++ b/.dnf.metadata @@ -1 +1 @@ -535f46b9a5242a315e1269a59372362013a5a6f0 SOURCES/dnf-4.2.17.tar.gz +0da07a3e6ff19430ffe39699e474439eab63ee7d SOURCES/dnf-4.2.23.tar.gz diff --git a/.gitignore b/.gitignore index 56393f0..c0cb815 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/dnf-4.2.17.tar.gz +SOURCES/dnf-4.2.23.tar.gz diff --git a/SOURCES/0001-Do-a-substitution-of-variables-in-repo_id-RhBug1748841.patch b/SOURCES/0001-Do-a-substitution-of-variables-in-repo_id-RhBug1748841.patch deleted file mode 100644 index 13def6c..0000000 --- a/SOURCES/0001-Do-a-substitution-of-variables-in-repo_id-RhBug1748841.patch +++ /dev/null @@ -1,101 +0,0 @@ -From 8bcd196fd95e70fd1f0be16d2c274e39a1cabe2e Mon Sep 17 00:00:00 2001 -From: Jaroslav Rohel -Date: Thu, 21 Nov 2019 11:45:03 +0100 -Subject: [PATCH] Do a substitution of variables in repo_id (RhBug:1748841) - -Example of repo file: -[test-$basearch-$releasever] -Name=Test-$basearch-$releasever -baseurl=file:///mnt/ -gpgcheck=0 -enabled=1 - -https://bugzilla.redhat.com/show_bug.cgi?id=1748841 ---- - dnf/conf/read.py | 40 +++++++++++++++++++++++++++------------- - 1 file changed, 27 insertions(+), 13 deletions(-) - -diff --git a/dnf/conf/read.py b/dnf/conf/read.py -index a526a71..1efac22 100644 ---- a/dnf/conf/read.py -+++ b/dnf/conf/read.py -@@ -43,7 +43,7 @@ class RepoReader(object): - - # read .repo files from directories specified by conf.reposdir - for repofn in (repofn for reposdir in self.conf.reposdir -- for repofn in sorted(glob.glob('%s/*.repo' % reposdir))): -+ for repofn in sorted(glob.glob('{}/*.repo'.format(reposdir)))): - try: - for r in self._get_repos(repofn): - yield r -@@ -54,17 +54,38 @@ class RepoReader(object): - def _build_repo(self, parser, id_, repofn): - """Build a repository using the parsed data.""" - -- repo = dnf.repo.Repo(id_, self.conf) -+ substituted_id = libdnf.conf.ConfigParser.substitute(id_, self.conf.substitutions) -+ -+ # Check the repo.id against the valid chars -+ invalid = dnf.repo.repo_id_invalid(substituted_id) -+ if invalid is not None: -+ if substituted_id != id_: -+ msg = _("Bad id for repo: {} ({}), byte = {} {}").format(substituted_id, id_, -+ substituted_id[invalid], -+ invalid) -+ else: -+ msg = _("Bad id for repo: {}, byte = {} {}").format(id_, id_[invalid], invalid) -+ raise dnf.exceptions.ConfigError(msg) -+ -+ repo = dnf.repo.Repo(substituted_id, self.conf) - try: - repo._populate(parser, id_, repofn, dnf.conf.PRIO_REPOCONFIG) - except ValueError as e: -- msg = _("Repository '%s': Error parsing config: %s") % (id_, e) -+ if substituted_id != id_: -+ msg = _("Repository '{}' ({}): Error parsing config: {}").format(substituted_id, -+ id_, e) -+ else: -+ msg = _("Repository '{}': Error parsing config: {}").format(id_, e) - raise dnf.exceptions.ConfigError(msg) - - # Ensure that the repo name is set - if repo._get_priority('name') == dnf.conf.PRIO_DEFAULT: -- msg = _("Repository '%s' is missing name in configuration, using id.") -- logger.warning(msg, id_) -+ if substituted_id != id_: -+ msg = _("Repository '{}' ({}) is missing name in configuration, using id.").format( -+ substituted_id, id_) -+ else: -+ msg = _("Repository '{}' is missing name in configuration, using id.").format(id_) -+ logger.warning(msg) - repo.name = ucd(repo.name) - repo._substitutions.update(self.conf.substitutions) - repo.cfg = parser -@@ -80,23 +101,16 @@ class RepoReader(object): - try: - parser.read(repofn) - except RuntimeError as e: -- raise dnf.exceptions.ConfigError(_('Parsing file "%s" failed: %s') % (repofn, e)) -+ raise dnf.exceptions.ConfigError(_('Parsing file "{}" failed: {}').format(repofn, e)) - except IOError as e: - logger.warning(e) - - # Check sections in the .repo file that was just slurped up - for section in parser.getData(): - - if section == 'main': - continue - -- # Check the repo.id against the valid chars -- invalid = dnf.repo.repo_id_invalid(section) -- if invalid is not None: -- logger.warning(_("Bad id for repo: %s, byte = %s %d"), section, -- section[invalid], invalid) -- continue -- - try: - thisrepo = self._build_repo(parser, ucd(section), repofn) - except (dnf.exceptions.RepoError, dnf.exceptions.ConfigError) as e: --- -libgit2 0.28.2 - diff --git a/SOURCES/0001-Handle-empty-comps-group-name-RhBug1826198.patch b/SOURCES/0001-Handle-empty-comps-group-name-RhBug1826198.patch new file mode 100644 index 0000000..f6266a4 --- /dev/null +++ b/SOURCES/0001-Handle-empty-comps-group-name-RhBug1826198.patch @@ -0,0 +1,238 @@ +From 3c758a4ea670fab1f4b55fa878ebf2b2ff4b678b Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Hr=C3=A1zk=C3=BD?= +Date: Tue, 28 Apr 2020 09:08:05 +0200 +Subject: [PATCH] Handle empty comps group name (RhBug:1826198) + +Don't crash on empty comps group/environment name. In outputs, use the +"" placeholder instead of the name. + +https://bugzilla.redhat.com/show_bug.cgi?id=1826198 +--- + dnf/cli/commands/group.py | 4 ++-- + dnf/cli/output.py | 16 ++++++++++------ + dnf/comps.py | 11 ++++++++++- + dnf/db/group.py | 12 ++++++++---- + tests/repos/main_comps.xml | 7 +++++++ + tests/support.py | 2 +- + tests/test_comps.py | 6 +++--- + tests/test_groups.py | 9 +++++++++ + 8 files changed, 50 insertions(+), 17 deletions(-) + +diff --git a/dnf/cli/commands/group.py b/dnf/cli/commands/group.py +index f535a50980..4ffd3b89c8 100644 +--- a/dnf/cli/commands/group.py ++++ b/dnf/cli/commands/group.py +@@ -177,7 +177,7 @@ def _list(self, userlist): + def _out_grp(sect, group): + if not done: + print(sect) +- msg = ' %s' % group.ui_name ++ msg = ' %s' % (group.ui_name if group.ui_name is not None else _("")) + if print_ids: + msg += ' (%s)' % group.id + if group.lang_only: +@@ -188,7 +188,7 @@ def _out_env(sect, envs): + if envs: + print(sect) + for e in envs: +- msg = ' %s' % e.ui_name ++ msg = ' %s' % (e.ui_name if e.ui_name is not None else _("")) + if print_ids: + msg += ' (%s)' % e.id + print(msg) +diff --git a/dnf/cli/output.py b/dnf/cli/output.py +index 67eab80b19..2585a5c773 100644 +--- a/dnf/cli/output.py ++++ b/dnf/cli/output.py +@@ -1221,47 +1221,51 @@ def _add_line(lines, data, a_wid, po, obsoletes=[]): + lines.append((name, "", "", "", "", "", "")) + pkglist_lines.append((action, lines)) + if self.base._history: ++ def format_line(group): ++ name = group.getName() ++ return (name if name else _(""), "", "", "", "", "", "") ++ + install_env_group = self.base._history.env._installed + if install_env_group: + action = _("Installing Environment Groups") + lines = [] + for group in install_env_group.values(): +- lines.append((group.getName(), "", "", "", "", "", "")) ++ lines.append(format_line(group)) + pkglist_lines.append((action, lines)) + upgrade_env_group = self.base._history.env._upgraded + if upgrade_env_group: + action = _("Upgrading Environment Groups") + lines = [] + for group in upgrade_env_group.values(): +- lines.append((group.getName(), "", "", "", "", "", "")) ++ lines.append(format_line(group)) + pkglist_lines.append((action, lines)) + remove_env_group = self.base._history.env._removed + if remove_env_group: + action = _("Removing Environment Groups") + lines = [] + for group in remove_env_group.values(): +- lines.append((group.getName(), "", "", "", "", "", "")) ++ lines.append(format_line(group)) + pkglist_lines.append((action, lines)) + install_group = self.base._history.group._installed + if install_group: + action = _("Installing Groups") + lines = [] + for group in install_group.values(): +- lines.append((group.getName(), "", "", "", "", "", "")) ++ lines.append(format_line(group)) + pkglist_lines.append((action, lines)) + upgrade_group = self.base._history.group._upgraded + if upgrade_group: + action = _("Upgrading Groups") + lines = [] + for group in upgrade_group.values(): +- lines.append((group.getName(), "", "", "", "", "", "")) ++ lines.append(format_line(group)) + pkglist_lines.append((action, lines)) + remove_group = self.base._history.group._removed + if remove_group: + action = _("Removing Groups") + lines = [] + for group in remove_group.values(): +- lines.append((group.getName(), "", "", "", "", "", "")) ++ lines.append(format_line(group)) + pkglist_lines.append((action, lines)) + # show skipped conflicting packages + if not self.conf.best and self.base._goal.actions & forward_actions: +diff --git a/dnf/comps.py b/dnf/comps.py +index 316d647087..4ca15b1e07 100644 +--- a/dnf/comps.py ++++ b/dnf/comps.py +@@ -75,7 +75,16 @@ def _by_pattern(pattern, case_sensitive, sqn): + else: + match = re.compile(fnmatch.translate(pattern), flags=re.I).match + +- return {g for g in sqn if match(g.name) or match(g.id) or match(g.ui_name)} ++ ret = set() ++ for g in sqn: ++ if match(g.id): ++ ret.add(g) ++ elif g.name is not None and match(g.name): ++ ret.add(g) ++ elif g.ui_name is not None and match(g.ui_name): ++ ret.add(g) ++ ++ return ret + + + def _fn_display_order(group): +diff --git a/dnf/db/group.py b/dnf/db/group.py +index e3a087760b..5d7e18d1a8 100644 +--- a/dnf/db/group.py ++++ b/dnf/db/group.py +@@ -78,8 +78,10 @@ def _get_obj_id(self, obj): + def new(self, obj_id, name, translated_name, pkg_types): + swdb_group = self.history.swdb.createCompsGroupItem() + swdb_group.setGroupId(obj_id) +- swdb_group.setName(name) +- swdb_group.setTranslatedName(translated_name) ++ if name is not None: ++ swdb_group.setName(name) ++ if translated_name is not None: ++ swdb_group.setTranslatedName(translated_name) + swdb_group.setPackageTypes(pkg_types) + return swdb_group + +@@ -136,8 +138,10 @@ def _get_obj_id(self, obj): + def new(self, obj_id, name, translated_name, pkg_types): + swdb_env = self.history.swdb.createCompsEnvironmentItem() + swdb_env.setEnvironmentId(obj_id) +- swdb_env.setName(name) +- swdb_env.setTranslatedName(translated_name) ++ if name is not None: ++ swdb_env.setName(name) ++ if translated_name is not None: ++ swdb_env.setTranslatedName(translated_name) + swdb_env.setPackageTypes(pkg_types) + return swdb_env + +diff --git a/tests/repos/main_comps.xml b/tests/repos/main_comps.xml +index 9e694d13a5..584bb25b3a 100644 +--- a/tests/repos/main_comps.xml ++++ b/tests/repos/main_comps.xml +@@ -49,6 +49,13 @@ + brokendeps + + ++ ++ missing-name-group ++ ++ ++ meaning-of-life ++ ++ + + base-system + 99 +diff --git a/tests/support.py b/tests/support.py +index e549ba5b95..a7d6a8542c 100644 +--- a/tests/support.py ++++ b/tests/support.py +@@ -94,7 +94,7 @@ def mock_open(mock=None, data=None): + MAIN_NSOLVABLES = 9 + UPDATES_NSOLVABLES = 4 + AVAILABLE_NSOLVABLES = MAIN_NSOLVABLES + UPDATES_NSOLVABLES +-TOTAL_GROUPS = 4 ++TOTAL_GROUPS = 5 + TOTAL_NSOLVABLES = SYSTEM_NSOLVABLES + AVAILABLE_NSOLVABLES + + +diff --git a/tests/test_comps.py b/tests/test_comps.py +index 30d468e3af..763218587f 100644 +--- a/tests/test_comps.py ++++ b/tests/test_comps.py +@@ -107,7 +107,7 @@ def test_group_packages(self): + def test_iteration(self): + comps = self.comps + self.assertEqual([g.name for g in comps.groups_iter()], +- ['Base', 'Solid Ground', "Pepper's", "Broken Group"]) ++ ['Base', 'Solid Ground', "Pepper's", "Broken Group", None]) + self.assertEqual([c.name for c in comps.categories_iter()], + ['Base System']) + g = dnf.util.first(comps.groups_iter()) +@@ -115,7 +115,7 @@ def test_iteration(self): + + def test_group_display_order(self): + self.assertEqual([g.name for g in self.comps.groups], +- ["Pepper's", 'Base', 'Solid Ground', 'Broken Group']) ++ ["Pepper's", 'Base', 'Solid Ground', 'Broken Group', None]) + + def test_packages(self): + comps = self.comps +@@ -127,7 +127,7 @@ def test_packages(self): + + def test_size(self): + comps = self.comps +- self.assertLength(comps, 6) ++ self.assertLength(comps, 7) + self.assertLength(comps.groups, tests.support.TOTAL_GROUPS) + self.assertLength(comps.categories, 1) + self.assertLength(comps.environments, 1) +diff --git a/tests/test_groups.py b/tests/test_groups.py +index fe388f96c0..8972da687e 100644 +--- a/tests/test_groups.py ++++ b/tests/test_groups.py +@@ -295,6 +295,15 @@ def test_group_install_broken_optional_nonstrict(self): + self.assertLength(inst, 1) + self.assertEmpty(removed) + ++ def test_group_install_missing_name(self): ++ comps_group = self.base.comps.group_by_pattern('missing-name-group') ++ ++ cnt = self.base.group_install(comps_group.id, ('mandatory', 'default', 'optional'), ++ strict=False) ++ self._swdb_commit() ++ self.base.resolve() ++ self.assertEqual(cnt, 1) ++ + + class EnvironmentInstallTest(tests.support.ResultTestCase): + """Set up a test where sugar is considered not installed.""" diff --git a/SOURCES/0002-Fix-and-document-order-of-config-files-in-aliasesd-RhBug1680489.patch b/SOURCES/0002-Fix-and-document-order-of-config-files-in-aliasesd-RhBug1680489.patch deleted file mode 100644 index 993040f..0000000 --- a/SOURCES/0002-Fix-and-document-order-of-config-files-in-aliasesd-RhBug1680489.patch +++ /dev/null @@ -1,67 +0,0 @@ -From ba3615c600532a0ce8693a626a9cbe71a458399a Mon Sep 17 00:00:00 2001 -From: Pavla Kratochvilova -Date: Thu, 23 May 2019 14:48:29 +0200 -Subject: [PATCH 1/2] Respect order of config files in aliases.d - (RhBug:1680489) - -https://bugzilla.redhat.com/show_bug.cgi?id=1680489 -The aliases config files were read in arbitrary order (os.listdir does not -give sorted output). It is better to define clear order (i.e. all config files -except USER.conf are ordered alphabetically, USER.conf is the last). - -Closes: #1542 -Approved by: kontura ---- - dnf/cli/aliases.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/dnf/cli/aliases.py b/dnf/cli/aliases.py -index 0b3ba8f6b..b5283d0f3 100644 ---- a/dnf/cli/aliases.py -+++ b/dnf/cli/aliases.py -@@ -143,7 +143,7 @@ class Aliases(object): - try: - if not os.path.exists(ALIASES_DROPIN_DIR): - os.mkdir(ALIASES_DROPIN_DIR) -- for fn in os.listdir(ALIASES_DROPIN_DIR): -+ for fn in sorted(os.listdir(ALIASES_DROPIN_DIR)): - if _ignore_filename(fn): - continue - filenames.append(os.path.join(ALIASES_DROPIN_DIR, fn)) --- -2.21.0 - - -From e292de84fcdec844530099a6c37ef29e1a330003 Mon Sep 17 00:00:00 2001 -From: Pavla Kratochvilova -Date: Thu, 23 May 2019 15:04:34 +0200 -Subject: [PATCH 2/2] [doc] Describe priorities of config files in aliases.d - (RhBug:1680489) - -https://bugzilla.redhat.com/show_bug.cgi?id=1680489 - -Closes: #1542 -Approved by: kontura ---- - doc/command_ref.rst | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/doc/command_ref.rst b/doc/command_ref.rst -index 7141fc2aa..637ccf96b 100644 ---- a/doc/command_ref.rst -+++ b/doc/command_ref.rst -@@ -424,7 +424,10 @@ for aliases. The alias processing stops when the first found command is not a na - Also, like in shell aliases, if the result starts with a ``\``, the alias processing will stop. - - All aliases are defined in configuration files in the ``/etc/dnf/aliases.d/`` directory in the [aliases] section, --and aliases created by the alias command are written to the ``USER.conf`` file. -+and aliases created by the alias command are written to the ``USER.conf`` file. In case of conflicts, -+the ``USER.conf`` has the highest priority, and alphabetical ordering is used for the rest of the -+configuration files. -+ - Optionally, there is the ``enabled`` option in the ``[main]`` section defaulting to True. This can be set for each - file separately in the respective file, or globally for all aliases in the ``ALIASES.conf`` file. - --- -2.21.0 - diff --git a/SOURCES/0003-doc-Remove-note-about-whitelist.patch b/SOURCES/0003-doc-Remove-note-about-whitelist.patch deleted file mode 100644 index 2b0d987..0000000 --- a/SOURCES/0003-doc-Remove-note-about-whitelist.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 3c473306e5e1b630a3030791fb1ef7ea0c0cd823 Mon Sep 17 00:00:00 2001 -From: Michal Domonkos -Date: Tue, 26 Nov 2019 13:22:15 +0100 -Subject: [PATCH] [doc] Remove note about whitelist - -The whitelist mechanism has been recently removed from libdnf. - -Closes: #1543 -Approved by: Conan-Kudo ---- - doc/conf_ref.rst | 5 ----- - 1 file changed, 5 deletions(-) - -diff --git a/doc/conf_ref.rst b/doc/conf_ref.rst -index d3ea11d..cb95e47 100644 ---- a/doc/conf_ref.rst -+++ b/doc/conf_ref.rst -@@ -806,11 +806,6 @@ configuration. - - libdnf (Fedora 31; server; Linux.x86_64) - -- To avoid leaking identifiable data, the variant in the above string will be -- replaced by "generic" if the value is not an official Fedora variant. -- Likewise, the whole OS part (enclosed in parenthesis) will be omitted if -- this is a non-Fedora system. -- - ================= - Types of Options - ================= --- -libgit2 0.28.2 - diff --git a/SOURCES/0004-Fix-detection-of-the-latest-module-RhBug1781769.patch b/SOURCES/0004-Fix-detection-of-the-latest-module-RhBug1781769.patch deleted file mode 100644 index 89a9e19..0000000 --- a/SOURCES/0004-Fix-detection-of-the-latest-module-RhBug1781769.patch +++ /dev/null @@ -1,157 +0,0 @@ -From c8d79c0b9956aeeb8cd3a0422656b030d4656578 Mon Sep 17 00:00:00 2001 -From: Jaroslav Mracek -Date: Mon, 9 Dec 2019 12:32:18 +0100 -Subject: [PATCH 1/2] Fix detection of the latest module (RhBug:1781769) - -The code originally compared module version as a string, but it should -be compared as a int. - -https://bugzilla.redhat.com/show_bug.cgi?id=1781769 - -Closes: #1548 -Approved by: m-blaha ---- - dnf/module/module_base.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/dnf/module/module_base.py b/dnf/module/module_base.py -index 8093ab443..64bad84b6 100644 ---- a/dnf/module/module_base.py -+++ b/dnf/module/module_base.py -@@ -285,7 +285,7 @@ class ModuleBase(object): - if module_list: - latest = module_list[0] - for module in module_list[1:]: -- if module.getVersion() > latest.getVersion(): -+ if module.getVersionNum() > latest.getVersionNum(): - latest = module - return latest - --- -2.21.0 - - -From 44e9095404569dbf8a19726eb79be8e580bed60c Mon Sep 17 00:00:00 2001 -From: Jaroslav Mracek -Date: Wed, 11 Dec 2019 09:52:16 +0100 -Subject: [PATCH 2/2] Improve transaction table formatting - -It improves formatting of transaction table in case when terminal has -unknown width. - -Closes: #1548 -Approved by: m-blaha ---- - dnf/cli/output.py | 45 ++++++++++++++++++++++++--------------------- - 1 file changed, 24 insertions(+), 21 deletions(-) - -diff --git a/dnf/cli/output.py b/dnf/cli/output.py -index a03df610c..2ff41b625 100644 ---- a/dnf/cli/output.py -+++ b/dnf/cli/output.py -@@ -224,16 +224,32 @@ class Output(object): - if total_width is None: - total_width = self.term.real_columns - -+ # We start allocating 1 char to everything but the last column, and a -+ # space between each (again, except for the last column). Because -+ # at worst we are better with: -+ # |one two three| -+ # | four | -+ # ...than: -+ # |one two three| -+ # | f| -+ # |our | -+ # ...the later being what we get if we pre-allocate the last column, and -+ # thus. the space, due to "three" overflowing it's column by 2 chars. -+ if columns is None: -+ columns = [1] * (cols - 1) -+ columns.append(0) -+ - # i'm not able to get real terminal width so i'm probably - # running in non interactive terminal (pipe to grep, redirect to file...) - # avoid splitting lines to enable filtering output - if not total_width: - full_columns = [] -- for col in data: -+ for d in xrange(0, cols): -+ col = data[d] - if col: - full_columns.append(col[-1][0]) - else: -- full_columns.append(0) -+ full_columns.append(columns[d] + 1) - full_columns[0] += len(indent) - # if possible, try to keep default width (usually 80 columns) - default_width = self.term.columns -@@ -241,20 +257,6 @@ class Output(object): - return full_columns - total_width = default_width - -- # We start allocating 1 char to everything but the last column, and a -- # space between each (again, except for the last column). Because -- # at worst we are better with: -- # |one two three| -- # | four | -- # ...than: -- # |one two three| -- # | f| -- # |our | -- # ...the later being what we get if we pre-allocate the last column, and -- # thus. the space, due to "three" overflowing it's column by 2 chars. -- if columns is None: -- columns = [1] * (cols - 1) -- columns.append(0) - - total_width -= (sum(columns) + (cols - 1) + exact_width(indent)) - if not columns[-1]: -@@ -1273,7 +1275,7 @@ class Output(object): - skip_str = skip_str % _(" or part of a group") - - pkglist_lines.append((skip_str, lines)) -- -+ output_width = self.term.columns - if not data['n'] and not self.base._moduleContainer.isChanged() and not \ - (self.base._history and (self.base._history.group or self.base._history.env)): - return u'' -@@ -1283,6 +1285,8 @@ class Output(object): - columns = self.calcColumns(data, indent=" ", columns=columns, - remainder_column=2, total_width=total_width) - (n_wid, a_wid, v_wid, r_wid, s_wid) = columns -+ real_width = sum(columns) + 5 -+ output_width = output_width if output_width >= real_width else real_width - - # Do not use 'Package' without context. Using context resolves - # RhBug 1302935 as a side effect. -@@ -1325,13 +1329,13 @@ class Output(object): - # Translators: This is the full (unabbreviated) term 'Size'. - C_('long', 'Size')) - -- out = [u"%s\n%s\n%s\n" % ('=' * self.term.columns, -+ out = [u"%s\n%s\n%s\n" % ('=' * output_width, - self.fmtColumns(((msg_package, -n_wid), - (msg_arch, -a_wid), - (msg_version, -v_wid), - (msg_repository, -r_wid), - (msg_size, s_wid)), u" "), -- '=' * self.term.columns)] -+ '=' * output_width)] - - for (action, lines) in pkglist_lines: - if lines: -@@ -1349,11 +1353,10 @@ class Output(object): - - if lines: - out.append(totalmsg) -- - out.append(_(""" - Transaction Summary - %s --""") % ('=' * self.term.columns)) -+""") % ('=' * output_width)) - summary_data = ( - (_('Install'), len(list_bunch.installed) + - len(list_bunch.installed_group) + --- -2.21.0 - diff --git a/SPECS/dnf.spec b/SPECS/dnf.spec index 14e397f..5207358 100644 --- a/SPECS/dnf.spec +++ b/SPECS/dnf.spec @@ -1,11 +1,11 @@ # default dependencies -%global hawkey_version 0.39.1 +%global hawkey_version 0.48.0 %global libcomps_version 0.1.8 %global libmodulemd_version 1.4.0 -%global rpm_version 4.14.0 +%global rpm_version 4.14.2-35 # conflicts -%global conflicts_dnf_plugins_core_version 4.0.12 +%global conflicts_dnf_plugins_core_version 4.0.16 %global conflicts_dnf_plugins_extras_version 4.0.4 %global conflicts_dnfdaemon_version 0.3.19 @@ -81,17 +81,14 @@ It supports RPMs, modules and comps groups & environments. Name: dnf -Version: 4.2.17 -Release: 3%{?dist} +Version: 4.2.23 +Release: 2%{?dist} Summary: %{pkg_summary} # For a breakdown of the licensing, see PACKAGE-LICENSING License: GPLv2+ and GPLv2 and GPL URL: https://github.com/rpm-software-management/dnf Source0: %{url}/archive/%{version}/%{name}-%{version}.tar.gz -Patch1: 0001-Do-a-substitution-of-variables-in-repo_id-RhBug1748841.patch -Patch2: 0002-Fix-and-document-order-of-config-files-in-aliasesd-RhBug1680489.patch -Patch3: 0003-doc-Remove-note-about-whitelist.patch -Patch4: 0004-Fix-detection-of-the-latest-module-RhBug1781769.patch +Patch1: 0001-Handle-empty-comps-group-name-RhBug1826198.patch BuildArch: noarch BuildRequires: cmake @@ -142,8 +139,8 @@ Provides: dnf-command(upgrade) Provides: dnf-command(upgrade-to) Conflicts: python2-dnf-plugins-core < %{conflicts_dnf_plugins_core_version} Conflicts: python3-dnf-plugins-core < %{conflicts_dnf_plugins_core_version} -Conflicts: python2-dnf-plugins-extras < %{conflicts_dnf_plugins_extras_version} -Conflicts: python3-dnf-plugins-extras < %{conflicts_dnf_plugins_extras_version} +Conflicts: python2-dnf-plugins-extras-common < %{conflicts_dnf_plugins_extras_version} +Conflicts: python3-dnf-plugins-extras-common < %{conflicts_dnf_plugins_extras_version} %description %{pkg_description} @@ -198,11 +195,9 @@ Requires: python2-enum34 Requires: %{name}-data = %{version}-%{release} %if 0%{?fedora} Recommends: deltarpm +# required for DNSSEC main.gpgkey_dns_verification https://dnf.readthedocs.io/en/latest/conf_ref.html Recommends: python2-unbound %endif -%if 0%{?centos} -Requires: deltarpm -%endif Requires: python2-hawkey >= %{hawkey_version} Requires: python2-libdnf >= %{hawkey_version} Requires: python2-libcomps >= %{libcomps_version} @@ -240,15 +235,13 @@ Requires: %{name}-data = %{version}-%{release} %if 0%{?fedora} Recommends: deltarpm %endif -%if 0%{?centos} -Requires: deltarpm -%endif Requires: python3-hawkey >= %{hawkey_version} Requires: python3-libdnf >= %{hawkey_version} Requires: python3-libcomps >= %{libcomps_version} Requires: python3-libdnf BuildRequires: python3-rpm >= %{rpm_version} Requires: python3-rpm >= %{rpm_version} +# required for DNSSEC main.gpgkey_dns_verification https://dnf.readthedocs.io/en/latest/conf_ref.html Recommends: python3-unbound %if 0%{?rhel} && 0%{?rhel} <= 7 Requires: rpm-plugin-systemd-inhibit @@ -279,7 +272,7 @@ mkdir build-py3 %build %if %{with python2} pushd build-py2 - %cmake .. -DPYTHON_DESIRED:FILEPATH=%{__python2} + %cmake .. -DPYTHON_DESIRED:FILEPATH=%{__python2} -DDNF_VERSION=%{version} %make_build make doc-man popd @@ -287,7 +280,7 @@ mkdir build-py3 %if %{with python3} pushd build-py3 - %cmake .. -DPYTHON_DESIRED:FILEPATH=%{__python3} + %cmake .. -DPYTHON_DESIRED:FILEPATH=%{__python3} -DDNF_VERSION=%{version} %make_build make doc-man popd @@ -515,6 +508,84 @@ ln -sr %{buildroot}%{confdir}/vars %{buildroot}%{_sysconfdir}/yum/vars %endif %changelog +* Wed Jun 10 2020 Ales Matej - 4.2.23-2 +- Handle empty comps group name (RhBug:1826198) + +* Tue Jun 02 2020 Nicola Sella - 4.2.23-1 +- Update to 4.2.23 +- Fix behavior of `install-n` command +- Fix behavior of `localinstall` command +- Fix behavior of `autoremove-n` command +- Fix behavior of `remove-n` command +- Fix behavior of `repoquery-n` command +- Fix behavior of `list-updateinfo` and related aliases +- Refactor code in `repoinfo` to use opts.command correctly. +- Add myself to list of contributors +- Add updated to verbose output of updateinfo list (RhBug: 1801092) +- Fix a couple of missed grammatical errors in updateinfo docs. +- Add comment option (RhBug:1773679) +- Better wording of dnssec email parsing error. +- Print nicer DnssecErrors (RhBug:1813244) +- Add new API for handling gpg signatures (RhBug:1339617) +- Verify GPG signatures (RhBug:1793298) +- Fix a syntax typo +- Fix up Conflicts: on python-dnf-plugins-extras so it actually works +- [doc] Move yum-plugin-post-transaction-actions to dnf-plugins-core +- Remove args "--set-enabled", "--set-disabled" from DNF (RhBug:1727882) +- Search command is now alphabetical (RhBug:1811802) +- Fix downloading packages with full URL as their location +- repo: catch libdnf.error.Error in addition to RuntimeError in load() (RhBug:1788182) +- History tbl to max size when redirect to file (RhBug:1786335,1786316) + +* Mon Apr 06 2020 Ales Matej - 4.2.21-1 +- Update to 4.2.21 +- Running with tsflags=test doesn't update log files +- Allow disabling individual aliases config files (RhBug:1680566) +- List arguments: only first empty value is used (RhBug:1788154) +- Report missing profiles or default as broken module (RhBug:1790967) +- Format history table to use actual terminal width (RhBug:1786316) +- Handle custom exceptions from libdnf +- Fix _skipped_packages to return only skipped (RhBug:1774617) +- Add setter for tsi.reason +- Add new hook for commands: Run_resolved +- Clean also .yaml repository metadata +- Use WantedBy=timers.target for all dnf timers (RhBug:1798475) +- Fix completion helper if solv files not in roon cache (RhBug:1714376) +- Add bash completion for 'dnf module' (RhBug:1565614) +- Check command no longer reports missing %pre and %post deps (RhBug:1543449) +- Check if arguments can be encoded in 'utf-8' +- Fix crash with "dnf -d 6 repolist" (RhBug:1812682) +- Do not print the first empty line for repoinfo +- Redirect logger and repo download progress when --verbose +- Respect repo priority when listing packages (RhBug:1800342) +- Remove misleading green color from the "broken dependencies" lines (RhBug:1814192) +- [repoquery] Fix rich deps matching by using provide expansion from libdnf (RhBug:1534123) +- [repoquery] Do not protect running kernel for --unsafisfied (RhBug:1750745) +- [doc] Document the retries config option only works for packages (RhBug:1783041) +- [doc] repoquery --what* with multiple arguments (RhBug:1790262) +- [doc] Remove incorrect information about includepkgs (RhBug:1813460) +- [doc] Document that list and info commands respect repo priority +- [doc] Document color options + +* Tue Feb 18 2020 Ales Matej - 4.2.17-6 +- Sort packages in transaction output by nevra (RhBug:1773436) +- Add support of commandline packages by repoquery (RhBug:1784148) +- [doc] Document that the include option was removed (RhBug:1786072) +- New API function for setting loggers (RhBug:1788212) + +* Fri Jan 31 2020 Marek Blaha - 4.2.17-5 +- [translations] Update translations from zanata (RhBug:1754959) + +* Mon Jan 13 2020 Ales Matej - 4.2.17-4 +- Fix alias processing with '\' escaping (RhBug:1680482) +- [doc] Explain the backslash notation also near the example (RhBug:1680482) +- Better descriptions for infinite aliases recursion (RhBug:1680488) +- Improve help for 'dnf module' command (RhBug:1758447) +- Unify downgrade exit codes with upgrade (RhBug:1759847) +- Honor priority with check-update (RhBug:1769466) +- Add shell restriction with local packages (RhBug:1773483) +- Restore functionality of remove --oldinstallonly (RhBug:1774670) + * Thu Dec 12 2019 Pavla Kratochvilova - 4.2.17-3 - Do a substitution of variables in repo_id (RhBug:1748841) - Respect order of config files in aliases.d (RhBug:1680489)