update to 4.2.15
This commit is contained in:
parent
076278a993
commit
060140488a
@ -1,40 +0,0 @@
|
||||
From a07c124b4a249a7c98864f8236a569345dc4febe Mon Sep 17 00:00:00 2001
|
||||
From: Jaroslav Mracek <jmracek@redhat.com>
|
||||
Date: Mon, 4 Feb 2019 09:14:17 +0100
|
||||
Subject: [PATCH 082/175] Add best as default behavior (RhBug:1670776,1671683)
|
||||
|
||||
The new default behavior should provide a better security.
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1670776
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1671683
|
||||
Signed-off-by: root <root@localhost.localdomain>
|
||||
---
|
||||
doc/api_conf.rst | 2 +-
|
||||
etc/dnf/dnf.conf | 1 +
|
||||
2 files changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/doc/api_conf.rst b/doc/api_conf.rst
|
||||
index f86e4432..9dd6a6ab 100644
|
||||
--- a/doc/api_conf.rst
|
||||
+++ b/doc/api_conf.rst
|
||||
@@ -30,7 +30,7 @@ Configurable settings of the :class:`dnf.Base` object are stored into a :class:`
|
||||
|
||||
.. attribute:: best
|
||||
|
||||
- Boolean option, ``True`` instructs the solver to either use a package with the highest available version or fail. On ``False``, do not fail if the latest version can not be installed. Default is ``False``.
|
||||
+ Boolean option, ``True`` instructs the solver to either use a package with the highest available version or fail. On ``False``, do not fail if the latest version can not be installed. Default is ``True``.
|
||||
|
||||
.. attribute:: cachedir
|
||||
|
||||
diff --git a/etc/dnf/dnf.conf b/etc/dnf/dnf.conf
|
||||
index 81b3e44d..812c189f 100644
|
||||
--- a/etc/dnf/dnf.conf
|
||||
+++ b/etc/dnf/dnf.conf
|
||||
@@ -2,3 +2,4 @@
|
||||
gpgcheck=1
|
||||
installonly_limit=3
|
||||
clean_requirements_on_remove=True
|
||||
+best=True
|
||||
--
|
||||
2.19.1
|
||||
|
||||
@ -1,46 +0,0 @@
|
||||
From 281c07db9664100b23150b89afa786fa56189aa9 Mon Sep 17 00:00:00 2001
|
||||
From: root <root@localhost.localdomain>
|
||||
Date: Sat, 21 Dec 2019 22:00:50 +0800
|
||||
Subject: [PATCH] backport-Fix-multilib-obsoletes-RhBug-1672947
|
||||
|
||||
Signed-off-by: root <root@localhost.localdomain>
|
||||
---
|
||||
dnf/base.py | 15 +++++++++------
|
||||
1 file changed, 9 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/dnf/base.py b/dnf/base.py
|
||||
index bc05667..b5e2b42 100644
|
||||
--- a/dnf/base.py
|
||||
+++ b/dnf/base.py
|
||||
@@ -635,9 +635,10 @@ class Base(object):
|
||||
for pkg in goal.list_installs():
|
||||
self._ds_callback.pkg_added(pkg, 'i')
|
||||
obs = goal.obsoleted_by_package(pkg)
|
||||
- # skip obsoleted packages that are not part of all_obsoleted
|
||||
- # they are handled as upgrades/downgrades
|
||||
- obs = [i for i in obs if i in all_obsoleted]
|
||||
+ # Skip obsoleted packages that are not part of all_obsoleted,
|
||||
+ # they are handled as upgrades/downgrades.
|
||||
+ # Also keep RPMs with the same name - they're not always in all_obsoleted.
|
||||
+ obs = [i for i in obs if i in all_obsoleted or i.name == pkg.name]
|
||||
|
||||
# TODO: move to libdnf: getBestReason
|
||||
reason = goal.get_reason(pkg)
|
||||
@@ -669,9 +670,11 @@ class Base(object):
|
||||
upgraded = obs.pop(0)
|
||||
else:
|
||||
obs.remove(upgraded)
|
||||
- # skip obsoleted packages that are not part of all_obsoleted
|
||||
- # they are handled as upgrades/downgrades
|
||||
- obs = [i for i in obs if i in all_obsoleted]
|
||||
+ # Skip obsoleted packages that are not part of all_obsoleted,
|
||||
+ # they are handled as upgrades/downgrades.
|
||||
+ # Also keep RPMs with the same name - they're not always in all_obsoleted.
|
||||
+ obs = [i for i in obs if i in all_obsoleted or i.name == pkg.name]
|
||||
+
|
||||
cb = lambda pkg: self._ds_callback.pkg_added(pkg, 'od')
|
||||
dnf.util.mapall(cb, obs)
|
||||
if pkg in self._get_installonly_query():
|
||||
--
|
||||
2.19.1
|
||||
|
||||
@ -1,35 +0,0 @@
|
||||
From c77f82e024226264ec04db8b6e1121f0d81d3c2a Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Robert-Andr=C3=A9=20Mauchin?= <zebob.m@gmail.com>
|
||||
Date: Thu, 4 Apr 2019 15:08:59 +0200
|
||||
Subject: [PATCH 173/175] Fix the installation of completion_helper.py
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Change introduced in df19a47d672b09683cc03620a41114cd4239e prevents the
|
||||
installation of completion_helper.py on Fedora 30.
|
||||
|
||||
Bug report: https://bugzilla.redhat.com/show_bug.cgi?id=1695853
|
||||
|
||||
Signed-off-by: Robert-André Mauchin <zebob.m@gmail.com>
|
||||
Signed-off-by: root <root@localhost.localdomain>
|
||||
---
|
||||
dnf/cli/CMakeLists.txt | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dnf/cli/CMakeLists.txt b/dnf/cli/CMakeLists.txt
|
||||
index 5e335d0c..a32305bc 100644
|
||||
--- a/dnf/cli/CMakeLists.txt
|
||||
+++ b/dnf/cli/CMakeLists.txt
|
||||
@@ -1,4 +1,6 @@
|
||||
FILE(GLOB cli_SRCS *.py)
|
||||
INSTALL (FILES ${cli_SRCS} DESTINATION ${PYTHON_INSTALL_DIR}/dnf/cli)
|
||||
+# completion_helper.py is generated so the glob alone won't see it:
|
||||
+INSTALL (FILES completion_helper.py DESTINATION ${PYTHON_INSTALL_DIR}/dnf/cli)
|
||||
|
||||
-ADD_SUBDIRECTORY (commands)
|
||||
\ No newline at end of file
|
||||
+ADD_SUBDIRECTORY (commands)
|
||||
--
|
||||
2.19.1
|
||||
|
||||
@ -1,35 +0,0 @@
|
||||
From 3d40275c0fd1a9781dafaefc9580ebf364ee9a6a Mon Sep 17 00:00:00 2001
|
||||
From: Jaroslav Mracek <jmracek@redhat.com>
|
||||
Date: Tue, 23 Oct 2018 13:11:31 +0200
|
||||
Subject: [PATCH 022/175] Fix traceback with repoquery --location
|
||||
(RhBug:1639827)
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1639827
|
||||
|
||||
Closes: #1249
|
||||
Approved by: m-blaha
|
||||
|
||||
Signed-off-by: root <root@localhost.localdomain>
|
||||
---
|
||||
dnf/package.py | 5 +----
|
||||
1 file changed, 1 insertion(+), 4 deletions(-)
|
||||
|
||||
diff --git a/dnf/package.py b/dnf/package.py
|
||||
index c2b556a6..478cd07e 100644
|
||||
--- a/dnf/package.py
|
||||
+++ b/dnf/package.py
|
||||
@@ -242,10 +242,7 @@ class Package(hawkey.Package):
|
||||
if mirrors:
|
||||
return schemes_filter(mirrors)
|
||||
elif self.repo.baseurl:
|
||||
- if isinstance(self.repo.baseurl, list):
|
||||
- return schemes_filter(self.repo.baseurl)
|
||||
- else:
|
||||
- return schemes_filter([self.repo.baseurl])
|
||||
+ return schemes_filter(self.repo.baseurl)
|
||||
|
||||
def _is_local_pkg(self):
|
||||
if self.repoid == "@System":
|
||||
--
|
||||
2.19.1
|
||||
|
||||
@ -1,80 +0,0 @@
|
||||
From bfe98dc1383eb5ce5b8010bbade66d593d4bb556 Mon Sep 17 00:00:00 2001
|
||||
From: Rafal Luzynski <digitalfreak@lingonborough.com>
|
||||
Date: Tue, 22 Jan 2019 16:32:10 +0100
|
||||
Subject: [PATCH 078/175] Format messages properly (RhBug:1509393)
|
||||
|
||||
The error was caused by misplaced parentheses and caused the text to be
|
||||
displayed always in English despite the translation being provided.
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1509393
|
||||
|
||||
Closes: #1308
|
||||
Approved by: m-blaha
|
||||
|
||||
Signed-off-by: root <root@localhost.localdomain>
|
||||
---
|
||||
dnf/cli/commands/clean.py | 2 +-
|
||||
dnf/conf/read.py | 4 ++--
|
||||
dnf/lock.py | 4 ++--
|
||||
3 files changed, 5 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/dnf/cli/commands/clean.py b/dnf/cli/commands/clean.py
|
||||
index 8b8b1821..6ad48506 100644
|
||||
--- a/dnf/cli/commands/clean.py
|
||||
+++ b/dnf/cli/commands/clean.py
|
||||
@@ -116,7 +116,7 @@ class CleanCommand(commands.Command):
|
||||
return
|
||||
except dnf.exceptions.LockError as e:
|
||||
if not self.base.conf.exit_on_lock:
|
||||
- msg = _('Waiting for process with pid %d to finish.' % (e.pid))
|
||||
+ msg = _('Waiting for process with pid %d to finish.') % (e.pid)
|
||||
logger.info(msg)
|
||||
time.sleep(3)
|
||||
else:
|
||||
diff --git a/dnf/conf/read.py b/dnf/conf/read.py
|
||||
index 9a28954e..a620b8dd 100644
|
||||
--- a/dnf/conf/read.py
|
||||
+++ b/dnf/conf/read.py
|
||||
@@ -58,7 +58,7 @@ class RepoReader(object):
|
||||
try:
|
||||
repo._populate(parser, id_, repofn, dnf.conf.PRIO_REPOCONFIG)
|
||||
except ValueError as e:
|
||||
- msg = _("Repository '%s': Error parsing config: %s" % (id_, e))
|
||||
+ msg = _("Repository '%s': Error parsing config: %s") % (id_, e)
|
||||
raise dnf.exceptions.ConfigError(msg)
|
||||
|
||||
# Ensure that the repo name is set
|
||||
@@ -153,7 +153,7 @@ class ModuleReader(object):
|
||||
_('Unknown configuration option: %s = %s in %s'),
|
||||
ucd(name), ucd(value), ucd(module_path))
|
||||
except ValueError as e:
|
||||
- msg = _("Module '%s': Error parsing config: %s" % (id_, e))
|
||||
+ msg = _("Module '%s': Error parsing config: %s") % (id_, e)
|
||||
raise dnf.exceptions.ConfigError(msg)
|
||||
|
||||
# TODO: unset module.name?
|
||||
diff --git a/dnf/lock.py b/dnf/lock.py
|
||||
index 23ae6f25..3ac01c68 100644
|
||||
--- a/dnf/lock.py
|
||||
+++ b/dnf/lock.py
|
||||
@@ -100,7 +100,7 @@ class ProcessLock(object):
|
||||
msg = _('Malformed lock file found: %s.\n'
|
||||
'Ensure no other dnf process is running and '
|
||||
'remove the lock file manually or run '
|
||||
- 'systemd-tmpfiles --remove dnf.conf.' % (self.target))
|
||||
+ 'systemd-tmpfiles --remove dnf.conf.') % (self.target)
|
||||
raise LockError(msg)
|
||||
|
||||
def _try_unlink(self):
|
||||
@@ -136,7 +136,7 @@ class ProcessLock(object):
|
||||
msg = '%s already locked by %d' % (self.description, pid)
|
||||
raise ProcessLockError(msg, pid)
|
||||
if inform or prev_pid != pid:
|
||||
- msg = _('Waiting for process with pid %d to finish.' % (pid))
|
||||
+ msg = _('Waiting for process with pid %d to finish.') % (pid)
|
||||
logger.info(msg)
|
||||
inform = False
|
||||
prev_pid = pid
|
||||
--
|
||||
2.19.1
|
||||
|
||||
@ -1,82 +0,0 @@
|
||||
From f4161c41040710ef2de1fb8851b1cb4c5077505a Mon Sep 17 00:00:00 2001
|
||||
From: Jaroslav Mracek <jmracek@redhat.com>
|
||||
Date: Thu, 29 Nov 2018 16:39:04 +0100
|
||||
Subject: [PATCH 054/175] Run plugins hook safely (RhBug:1495482)
|
||||
|
||||
It should prevent from critical problems caused by plugins.
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1495482
|
||||
Signed-off-by: root <root@localhost.localdomain>
|
||||
---
|
||||
dnf/plugin.py | 34 ++++++++++++++++++++++++----------
|
||||
1 file changed, 24 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/dnf/plugin.py b/dnf/plugin.py
|
||||
index f7aa0b21..91039cdc 100644
|
||||
--- a/dnf/plugin.py
|
||||
+++ b/dnf/plugin.py
|
||||
@@ -31,6 +31,7 @@ import logging
|
||||
import operator
|
||||
import os
|
||||
import sys
|
||||
+import traceback
|
||||
|
||||
import dnf.logging
|
||||
import dnf.pycomp
|
||||
@@ -95,10 +96,14 @@ class Plugins(object):
|
||||
self.plugin_cls = []
|
||||
self.plugins = []
|
||||
|
||||
- def _caller(method):
|
||||
- def fn(self):
|
||||
- dnf.util.mapall(operator.methodcaller(method), self.plugins)
|
||||
- return fn
|
||||
+ def _caller(self, method):
|
||||
+ for plugin in self.plugins:
|
||||
+ try:
|
||||
+ getattr(plugin, method)()
|
||||
+ except Exception:
|
||||
+ exc_type, exc_value, exc_traceback = sys.exc_info()
|
||||
+ except_list = traceback.format_exception(exc_type, exc_value, exc_traceback)
|
||||
+ logger.critical(''.join(except_list))
|
||||
|
||||
def _check_enabled(self, conf, enable_plugins):
|
||||
"""Checks whether plugins are enabled or disabled in configuration files
|
||||
@@ -131,19 +136,28 @@ class Plugins(object):
|
||||
names = sorted(plugin.name for plugin in self.plugin_cls)
|
||||
logger.debug(_('Loaded plugins: %s'), ', '.join(names))
|
||||
|
||||
- _run_pre_config = _caller('pre_config')
|
||||
+ def _run_pre_config(self):
|
||||
+ self._caller('pre_config')
|
||||
|
||||
- _run_config = _caller('config')
|
||||
+ def _run_config(self):
|
||||
+ self._caller('config')
|
||||
|
||||
def _run_init(self, base, cli=None):
|
||||
for p_cls in self.plugin_cls:
|
||||
plugin = p_cls(base, cli)
|
||||
self.plugins.append(plugin)
|
||||
|
||||
- run_sack = _caller('sack')
|
||||
- run_resolved = _caller('resolved')
|
||||
- run_pre_transaction = _caller('pre_transaction')
|
||||
- run_transaction = _caller('transaction')
|
||||
+ def run_sack(self):
|
||||
+ self._caller('sack')
|
||||
+
|
||||
+ def run_resolved(self):
|
||||
+ self._caller('resolved')
|
||||
+
|
||||
+ def run_pre_transaction(self):
|
||||
+ self._caller('pre_transaction')
|
||||
+
|
||||
+ def run_transaction(self):
|
||||
+ self._caller('transaction')
|
||||
|
||||
def _unload(self):
|
||||
del sys.modules[DYNAMIC_PACKAGE]
|
||||
--
|
||||
2.19.1
|
||||
|
||||
@ -1,185 +0,0 @@
|
||||
From be1e853b422ca2dbbe30c0fa7d5549cd6c8a59a4 Mon Sep 17 00:00:00 2001
|
||||
From: Jaroslav Mracek <jmracek@redhat.com>
|
||||
Date: Tue, 6 Nov 2018 15:38:00 +0100
|
||||
Subject: [PATCH 016/175] Set tsi state if multiple pkgs have same nevra
|
||||
(RhBug:1642796)
|
||||
|
||||
In case that package with same nevra is installed multiple times the
|
||||
patch prevents that transaction end up with traceback:
|
||||
|
||||
return _transaction.Swdb_endTransaction(self, dtEnd, rpmdbVersionEnd,
|
||||
state)
|
||||
RuntimeError: TransactionItem state is not set:
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1642796
|
||||
Signed-off-by: root <root@localhost.localdomain>
|
||||
---
|
||||
dnf/yum/rpmtrans.py | 80 ++++++++++++++++++++++-----------------------
|
||||
1 file changed, 40 insertions(+), 40 deletions(-)
|
||||
|
||||
diff --git a/dnf/yum/rpmtrans.py b/dnf/yum/rpmtrans.py
|
||||
index 9a80ab61..f8b76a71 100644
|
||||
--- a/dnf/yum/rpmtrans.py
|
||||
+++ b/dnf/yum/rpmtrans.py
|
||||
@@ -217,22 +217,23 @@ class RPMTransaction(object):
|
||||
|
||||
if hasattr(cbkey, "pkg"):
|
||||
tsi = cbkey
|
||||
- return tsi.pkg, tsi.action, tsi
|
||||
+ return [tsi]
|
||||
|
||||
te = self._te_list[self._te_index]
|
||||
te_nevra = dnf.util._te_nevra(te)
|
||||
- if self._tsi_cache is not None:
|
||||
- if str(self._tsi_cache) == te_nevra:
|
||||
- return self._tsi_cache.pkg, self._tsi_cache.action, self._tsi_cache
|
||||
-
|
||||
+ if self._tsi_cache:
|
||||
+ if str(self._tsi_cache[0]) == te_nevra:
|
||||
+ return self._tsi_cache
|
||||
+ items = []
|
||||
for tsi in self.base.transaction:
|
||||
if tsi.action == libdnf.transaction.TransactionItemAction_REINSTALL:
|
||||
# skip REINSTALL in order to return REINSTALLED
|
||||
continue
|
||||
if str(tsi) == te_nevra:
|
||||
- self._tsi_cache = tsi
|
||||
- return tsi.pkg, tsi.action, tsi
|
||||
-
|
||||
+ items.append(tsi)
|
||||
+ if items:
|
||||
+ self._tsi_cache = items
|
||||
+ return items
|
||||
raise RuntimeError("TransactionItem not found for key: %s" % cbkey)
|
||||
|
||||
def callback(self, what, amount, total, key, client_data):
|
||||
@@ -292,13 +293,14 @@ class RPMTransaction(object):
|
||||
self._te_index = index
|
||||
self.complete_actions += 1
|
||||
if not self.test:
|
||||
- _, _, tsi = self._extract_cbkey(key)
|
||||
+ transaction_list = self._extract_cbkey(key)
|
||||
for display in self.displays:
|
||||
- display.filelog(tsi.pkg, tsi.action)
|
||||
+ display.filelog(transaction_list[0].pkg, transaction_list[0].action)
|
||||
|
||||
def _instOpenFile(self, key):
|
||||
self.lastmsg = None
|
||||
- pkg, _, _ = self._extract_cbkey(key)
|
||||
+ transaction_list = self._extract_cbkey(key)
|
||||
+ pkg = transaction_list[0].pkg
|
||||
rpmloc = pkg.localPkg()
|
||||
try:
|
||||
self.fd = open(rpmloc)
|
||||
@@ -312,15 +314,16 @@ class RPMTransaction(object):
|
||||
return self.fd.fileno()
|
||||
|
||||
def _instCloseFile(self, key):
|
||||
- _, _, tsi = self._extract_cbkey(key)
|
||||
+ transaction_list = self._extract_cbkey(key)
|
||||
self.fd.close()
|
||||
self.fd = None
|
||||
|
||||
if self.test or not self.trans_running:
|
||||
return
|
||||
-
|
||||
- if tsi.state == libdnf.transaction.TransactionItemState_UNKNOWN:
|
||||
- tsi.state = libdnf.transaction.TransactionItemState_DONE
|
||||
+ for tsi in transaction_list:
|
||||
+ if tsi.state == libdnf.transaction.TransactionItemState_UNKNOWN:
|
||||
+ tsi.state = libdnf.transaction.TransactionItemState_DONE
|
||||
+ break
|
||||
|
||||
for display in self.displays:
|
||||
display.filelog(tsi.pkg, tsi.action)
|
||||
@@ -333,27 +336,28 @@ class RPMTransaction(object):
|
||||
display.progress(None, action, None, None, None, None)
|
||||
|
||||
def _instProgress(self, amount, total, key):
|
||||
- _, _, tsi = self._extract_cbkey(key)
|
||||
+ transaction_list = self._extract_cbkey(key)
|
||||
+ pkg = transaction_list[0].pkg
|
||||
+ action = transaction_list[0].action
|
||||
for display in self.displays:
|
||||
- display.progress(
|
||||
- tsi.pkg, tsi.action, amount, total, self.complete_actions,
|
||||
- self.total_actions)
|
||||
+ display.progress(pkg, action, amount, total, self.complete_actions, self.total_actions)
|
||||
|
||||
def _uninst_start(self, key):
|
||||
self.total_removed += 1
|
||||
|
||||
def _uninst_progress(self, amount, total, key):
|
||||
- _, _, tsi = self._extract_cbkey(key)
|
||||
+ transaction_list = self._extract_cbkey(key)
|
||||
+ pkg = transaction_list[0].pkg
|
||||
+ action = transaction_list[0].action
|
||||
for display in self.displays:
|
||||
- display.progress(
|
||||
- tsi.pkg, tsi.action, amount, total, self.complete_actions,
|
||||
- self.total_actions)
|
||||
+ display.progress(pkg, action, amount, total, self.complete_actions, self.total_actions)
|
||||
|
||||
def _unInstStop(self, key):
|
||||
- _, _, tsi = self._extract_cbkey(key)
|
||||
-
|
||||
- if tsi.state == libdnf.transaction.TransactionItemState_UNKNOWN:
|
||||
- tsi.state = libdnf.transaction.TransactionItemState_DONE
|
||||
+ transaction_list = self._extract_cbkey(key)
|
||||
+ for tsi in transaction_list:
|
||||
+ if tsi.state == libdnf.transaction.TransactionItemState_UNKNOWN:
|
||||
+ tsi.state = libdnf.transaction.TransactionItemState_DONE
|
||||
+ break
|
||||
|
||||
for display in self.displays:
|
||||
display.filelog(tsi.pkg, tsi.action)
|
||||
@@ -364,15 +368,15 @@ class RPMTransaction(object):
|
||||
self._scriptout()
|
||||
|
||||
def _cpioError(self, key):
|
||||
- # In the case of a remove, we only have a name, not a tsi:
|
||||
- pkg, _, _ = self._extract_cbkey(key)
|
||||
- msg = "Error in cpio payload of rpm package %s" % pkg
|
||||
+ transaction_list = self._extract_cbkey(key)
|
||||
+ msg = "Error in cpio payload of rpm package %s" % transaction_list[0].pkg
|
||||
for display in self.displays:
|
||||
display.error(msg)
|
||||
|
||||
def _unpackError(self, key):
|
||||
- pkg, _, tsi = self._extract_cbkey(key)
|
||||
- msg = "Error unpacking rpm package %s" % pkg
|
||||
+ transaction_list = self._extract_cbkey(key)
|
||||
+ tsi = transaction_list[0]
|
||||
+ msg = "Error unpacking rpm package %s" % tsi.pkg
|
||||
for display in self.displays:
|
||||
display.error(msg)
|
||||
tsi.state = libdnf.transaction.TransactionItemState_ERROR
|
||||
@@ -382,13 +386,8 @@ class RPMTransaction(object):
|
||||
# "total" carries fatal/non-fatal status
|
||||
scriptlet_name = rpm.tagnames.get(amount, "<unknown>")
|
||||
|
||||
- pkg, _, _ = self._extract_cbkey(key)
|
||||
- if pkg is not None:
|
||||
- name = pkg.name
|
||||
- elif dnf.util.is_string_type(key):
|
||||
- name = key
|
||||
- else:
|
||||
- name = 'None'
|
||||
+ transaction_list = self._extract_cbkey(key)
|
||||
+ name = transaction_list[0].pkg.name
|
||||
|
||||
msg = ("Error in %s scriptlet in rpm package %s" % (scriptlet_name, name))
|
||||
|
||||
@@ -401,7 +400,8 @@ class RPMTransaction(object):
|
||||
if key is None and self._te_list == []:
|
||||
pkg = 'None'
|
||||
else:
|
||||
- pkg, _, _ = self._extract_cbkey(key)
|
||||
+ transaction_list = self._extract_cbkey(key)
|
||||
+ pkg = transaction_list[0].pkg
|
||||
complete = self.complete_actions if self.total_actions != 0 and self.complete_actions != 0 \
|
||||
else 1
|
||||
total = self.total_actions if self.total_actions != 0 and self.complete_actions != 0 else 1
|
||||
--
|
||||
2.19.1
|
||||
|
||||
@ -1,31 +0,0 @@
|
||||
From 3c88bc6d39a965d93452188de88e63cea7225d11 Mon Sep 17 00:00:00 2001
|
||||
From: Jaroslav Mracek <jmracek@redhat.com>
|
||||
Date: Thu, 14 Mar 2019 16:24:57 +0100
|
||||
Subject: [PATCH 152/175] Solve traceback with the "dnf install @module"
|
||||
(RhBug:1688823)
|
||||
|
||||
Fix modular solver error formatting. The problem was only triggered in
|
||||
presence of modular errors.
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1688823
|
||||
Signed-off-by: root <root@localhost.localdomain>
|
||||
---
|
||||
dnf/cli/commands/install.py | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dnf/cli/commands/install.py b/dnf/cli/commands/install.py
|
||||
index 5e281089..e2f97ba6 100644
|
||||
--- a/dnf/cli/commands/install.py
|
||||
+++ b/dnf/cli/commands/install.py
|
||||
@@ -94,7 +94,7 @@ class InstallCommand(commands.Command):
|
||||
module_debsolv_errors = e.module_debsolv_errors
|
||||
if module_debsolv_errors:
|
||||
logger.error(dnf.module.module_base.format_modular_solver_errors(
|
||||
- module_debsolv_errors))
|
||||
+ module_debsolv_errors[0]))
|
||||
else:
|
||||
skipped_grp_specs = self.opts.grp_specs
|
||||
if self.opts.filenames and nevra_forms:
|
||||
--
|
||||
2.19.1
|
||||
|
||||
@ -1,136 +0,0 @@
|
||||
From 1d1b389a965f8354a18d64d0cea3a8881f658cdf Mon Sep 17 00:00:00 2001
|
||||
From: root <root@localhost.localdomain>
|
||||
Date: Sat, 21 Dec 2019 21:48:47 +0800
|
||||
Subject: [PATCH] backport-automatic-Fix-the-systemd-ordering-loop-RhBug-163648
|
||||
|
||||
Signed-off-by: root <root@localhost.localdomain>
|
||||
---
|
||||
etc/systemd/dnf-automatic-download.service | 1 +
|
||||
etc/systemd/dnf-automatic-download.timer | 3 +--
|
||||
etc/systemd/dnf-automatic-install.service | 1 +
|
||||
etc/systemd/dnf-automatic-install.timer | 3 +--
|
||||
etc/systemd/dnf-automatic-notifyonly.service | 1 +
|
||||
etc/systemd/dnf-automatic-notifyonly.timer | 3 +--
|
||||
etc/systemd/dnf-automatic.service | 1 +
|
||||
etc/systemd/dnf-automatic.timer | 3 ++-
|
||||
8 files changed, 9 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/etc/systemd/dnf-automatic-download.service b/etc/systemd/dnf-automatic-download.service
|
||||
index 962a0a2..b60e6b7 100644
|
||||
--- a/etc/systemd/dnf-automatic-download.service
|
||||
+++ b/etc/systemd/dnf-automatic-download.service
|
||||
@@ -2,6 +2,7 @@
|
||||
Description=dnf automatic download updates
|
||||
# See comment in dnf-makecache.service
|
||||
ConditionPathExists=!/run/ostree-booted
|
||||
+After=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
diff --git a/etc/systemd/dnf-automatic-download.timer b/etc/systemd/dnf-automatic-download.timer
|
||||
index 3cad73d..bcb145c 100644
|
||||
--- a/etc/systemd/dnf-automatic-download.timer
|
||||
+++ b/etc/systemd/dnf-automatic-download.timer
|
||||
@@ -3,11 +3,10 @@ Description=dnf-automatic-download timer
|
||||
# See comment in dnf-makecache.service
|
||||
ConditionPathExists=!/run/ostree-booted
|
||||
Wants=network-online.target
|
||||
-After=network-online.target
|
||||
|
||||
[Timer]
|
||||
OnBootSec=1h
|
||||
OnUnitInactiveSec=1d
|
||||
|
||||
[Install]
|
||||
-WantedBy=basic.target
|
||||
+WantedBy=multi-user.target
|
||||
diff --git a/etc/systemd/dnf-automatic-install.service b/etc/systemd/dnf-automatic-install.service
|
||||
index 2dbf954..58e256a 100644
|
||||
--- a/etc/systemd/dnf-automatic-install.service
|
||||
+++ b/etc/systemd/dnf-automatic-install.service
|
||||
@@ -2,6 +2,7 @@
|
||||
Description=dnf automatic install updates
|
||||
# See comment in dnf-makecache.service
|
||||
ConditionPathExists=!/run/ostree-booted
|
||||
+After=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
diff --git a/etc/systemd/dnf-automatic-install.timer b/etc/systemd/dnf-automatic-install.timer
|
||||
index ea13f61..013bfe3 100644
|
||||
--- a/etc/systemd/dnf-automatic-install.timer
|
||||
+++ b/etc/systemd/dnf-automatic-install.timer
|
||||
@@ -3,11 +3,10 @@ Description=dnf-automatic-install timer
|
||||
# See comment in dnf-makecache.service
|
||||
ConditionPathExists=!/run/ostree-booted
|
||||
Wants=network-online.target
|
||||
-After=network-online.target
|
||||
|
||||
[Timer]
|
||||
OnBootSec=1h
|
||||
OnUnitInactiveSec=1d
|
||||
|
||||
[Install]
|
||||
-WantedBy=basic.target
|
||||
+WantedBy=multi-user.target
|
||||
diff --git a/etc/systemd/dnf-automatic-notifyonly.service b/etc/systemd/dnf-automatic-notifyonly.service
|
||||
index c8a21bc..3324c96 100644
|
||||
--- a/etc/systemd/dnf-automatic-notifyonly.service
|
||||
+++ b/etc/systemd/dnf-automatic-notifyonly.service
|
||||
@@ -2,6 +2,7 @@
|
||||
Description=dnf automatic notification of updates
|
||||
# See comment in dnf-makecache.service
|
||||
ConditionPathExists=!/run/ostree-booted
|
||||
+After=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
diff --git a/etc/systemd/dnf-automatic-notifyonly.timer b/etc/systemd/dnf-automatic-notifyonly.timer
|
||||
index 97e5411..45fb0b5 100644
|
||||
--- a/etc/systemd/dnf-automatic-notifyonly.timer
|
||||
+++ b/etc/systemd/dnf-automatic-notifyonly.timer
|
||||
@@ -3,11 +3,10 @@ Description=dnf-automatic-notifyonly timer
|
||||
# See comment in dnf-makecache.service
|
||||
ConditionPathExists=!/run/ostree-booted
|
||||
Wants=network-online.target
|
||||
-After=network-online.target
|
||||
|
||||
[Timer]
|
||||
OnBootSec=1h
|
||||
OnUnitInactiveSec=1d
|
||||
|
||||
[Install]
|
||||
-WantedBy=basic.target
|
||||
+WantedBy=multi-user.target
|
||||
diff --git a/etc/systemd/dnf-automatic.service b/etc/systemd/dnf-automatic.service
|
||||
index 0b390c8..d49775f 100644
|
||||
--- a/etc/systemd/dnf-automatic.service
|
||||
+++ b/etc/systemd/dnf-automatic.service
|
||||
@@ -2,6 +2,7 @@
|
||||
Description=dnf automatic
|
||||
# See comment in dnf-makecache.service
|
||||
ConditionPathExists=!/run/ostree-booted
|
||||
+After=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
diff --git a/etc/systemd/dnf-automatic.timer b/etc/systemd/dnf-automatic.timer
|
||||
index 62f1b70..64d6e92 100644
|
||||
--- a/etc/systemd/dnf-automatic.timer
|
||||
+++ b/etc/systemd/dnf-automatic.timer
|
||||
@@ -2,10 +2,11 @@
|
||||
Description=dnf-automatic timer
|
||||
# See comment in dnf-makecache.service
|
||||
ConditionPathExists=!/run/ostree-booted
|
||||
+Wants=network-online.target
|
||||
|
||||
[Timer]
|
||||
OnBootSec=1h
|
||||
OnUnitInactiveSec=1d
|
||||
|
||||
[Install]
|
||||
-WantedBy=basic.target
|
||||
+WantedBy=multi-user.target
|
||||
--
|
||||
2.19.1
|
||||
|
||||
@ -1,27 +0,0 @@
|
||||
From 22106c470fe0decced1df17cb2b7b25c13ad3519 Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Mach <dmach@redhat.com>
|
||||
Date: Wed, 12 Dec 2018 14:36:12 +0100
|
||||
Subject: [PATCH 105/175] [callback] Bring PKG_ERASE back for compatibility
|
||||
reasons.
|
||||
|
||||
Resolves: rhbz#1597182
|
||||
Signed-off-by: root <root@localhost.localdomain>
|
||||
---
|
||||
dnf/callback.py | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/dnf/callback.py b/dnf/callback.py
|
||||
index 967fb7a7..4b162fcf 100644
|
||||
--- a/dnf/callback.py
|
||||
+++ b/dnf/callback.py
|
||||
@@ -28,6 +28,7 @@ PKG_INSTALL = dnf.transaction.PKG_INSTALL # :api
|
||||
PKG_OBSOLETE = dnf.transaction.PKG_OBSOLETE # :api
|
||||
PKG_REINSTALL = dnf.transaction.PKG_REINSTALL # :api
|
||||
PKG_REMOVE = dnf.transaction.PKG_ERASE # :api
|
||||
+PKG_ERASE = PKG_REMOVE # deprecated, use PKG_REMOVE instead
|
||||
PKG_UPGRADE = dnf.transaction.PKG_UPGRADE # :api
|
||||
|
||||
PKG_CLEANUP = dnf.transaction.PKG_CLEANUP # :api
|
||||
--
|
||||
2.19.1
|
||||
|
||||
@ -1,56 +0,0 @@
|
||||
From 2a05b85423fb343cf7fdd2ebdc437052345bf9e5 Mon Sep 17 00:00:00 2001
|
||||
From: Jaroslav Rohel <jrohel@redhat.com>
|
||||
Date: Wed, 24 Oct 2018 06:21:41 +0200
|
||||
Subject: [PATCH 008/175] [conf] "setopt" not create/rewrite other
|
||||
option_parser options
|
||||
|
||||
Rewriting of option can damage it.
|
||||
Example of crash (setopt will damages the excludepkgs option):
|
||||
dnf --setopt=excludepkgs=a --excludepkgs=b
|
||||
Traceback (most recent call last):
|
||||
File "bin/dnf-2", line 58, in <module>
|
||||
main.user_main(sys.argv[1:], exit_code=True)
|
||||
File "/home/jrohel/projects/rpm-software-management/dnf/dnf/cli/main.py", line 179, in user_main
|
||||
errcode = main(args)
|
||||
File "/home/jrohel/projects/rpm-software-management/dnf/dnf/cli/main.py", line 64, in main
|
||||
return _main(base, args, cli_class, option_parser_class)
|
||||
File "/home/jrohel/projects/rpm-software-management/dnf/dnf/cli/main.py", line 95, in _main
|
||||
cli.configure(list(map(ucd, args)), option_parser())
|
||||
File "/home/jrohel/projects/rpm-software-management/dnf/dnf/cli/cli.py", line 816, in configure
|
||||
opts = self.optparser.parse_main_args(args)
|
||||
File "/home/jrohel/projects/rpm-software-management/dnf/dnf/cli/option_parser.py", line 380, in parse_main_args
|
||||
namespace, _unused_args = parser.parse_known_args(args)
|
||||
File "/usr/lib64/python3.6/argparse.py", line 1766, in parse_known_args
|
||||
namespace, args = self._parse_known_args(args, namespace)
|
||||
File "/usr/lib64/python3.6/argparse.py", line 1972, in _parse_known_args
|
||||
start_index = consume_optional(start_index)
|
||||
File "/usr/lib64/python3.6/argparse.py", line 1912, in consume_optional
|
||||
take_action(action, args, option_string)
|
||||
File "/usr/lib64/python3.6/argparse.py", line 1840, in take_action
|
||||
action(self, namespace, argument_values, option_string)
|
||||
File "/home/jrohel/projects/rpm-software-management/dnf/dnf/cli/option_parser.py", line 74, in __call__
|
||||
self).__call__(parser, namespace, val, opt_str)
|
||||
File "/usr/lib64/python3.6/argparse.py", line 958, in __call__
|
||||
items.append(values)
|
||||
AttributeError: 'str' object has no attribute 'append'
|
||||
|
||||
Signed-off-by: root <root@localhost.localdomain>
|
||||
---
|
||||
dnf/cli/option_parser.py | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/dnf/cli/option_parser.py b/dnf/cli/option_parser.py
|
||||
index 531ea438..e9040165 100644
|
||||
--- a/dnf/cli/option_parser.py
|
||||
+++ b/dnf/cli/option_parser.py
|
||||
@@ -114,7 +114,6 @@ class OptionParser(argparse.ArgumentParser):
|
||||
setattr(namespace, 'repo_' + self.dest, self.repoopts)
|
||||
else:
|
||||
setattr(self.mainopts, k, v)
|
||||
- setattr(namespace, k, v)
|
||||
setattr(namespace, 'main_' + self.dest, self.mainopts)
|
||||
|
||||
class ParseSpecGroupFileCallback(argparse.Action):
|
||||
--
|
||||
2.19.1
|
||||
|
||||
BIN
dnf-4.0.4.tar.gz
BIN
dnf-4.0.4.tar.gz
Binary file not shown.
BIN
dnf-4.2.15.tar.gz
Normal file
BIN
dnf-4.2.15.tar.gz
Normal file
Binary file not shown.
315
dnf.spec
315
dnf.spec
@ -9,52 +9,26 @@
|
||||
%global py3pluginpath %{python3_sitelib}/%{name}-plugins
|
||||
%endif
|
||||
|
||||
Name: dnf
|
||||
Version: 4.0.4
|
||||
Release: 3
|
||||
Summary: A software package manager that manages packages on Linux distributions.
|
||||
License: GPLv2+ and GPLv2 and GPL
|
||||
URL: https://github.com/rpm-software-management/dnf
|
||||
Source0: https://github.com/rpm-software-management/dnf/archive/%{version}/%{name}-%{version}.tar.gz
|
||||
|
||||
Patch6000: automatic-Fix-the-systemd-ordering-loop-RhBug-163648.patch
|
||||
Patch6001: conf-setopt-not-create-rewrite-other-option_parser-o.patch
|
||||
Patch6002: Set-tsi-state-if-multiple-pkgs-have-same-nevra-RhBug.patch
|
||||
Patch6003: Fix-traceback-with-repoquery-location-RhBug-1639827.patch
|
||||
Patch6004: Run-plugins-hook-safely-RhBug-1495482.patch
|
||||
Patch6005: Format-messages-properly-RhBug-1509393.patch
|
||||
Patch6006: Add-best-as-default-behavior-RhBug-1670776-1671683.patch
|
||||
Patch6007: callback-Bring-PKG_ERASE-back-for-compatibility-reas.patch
|
||||
Patch6008: Solve-traceback-with-the-dnf-install-module-RhBug-16.patch
|
||||
Patch6009: Fix-multilib-obsoletes-RhBug-1672947.patch
|
||||
Patch6010: Fix-the-installation-of-completion_helper.py.patch
|
||||
|
||||
BuildArch: noarch
|
||||
BuildRequires: cmake gettext python2-sphinx systemd bash-completion
|
||||
Requires: libreport-filesystem systemd %{name} = %{version}-%{release}
|
||||
%if %{with python3}
|
||||
Requires: python3-%{name} = %{version}-%{release}
|
||||
Recommends: (python3-dbus if NetworkManager)
|
||||
%else
|
||||
Requires: python2-%{name} = %{version}-%{release}
|
||||
Recommends: (python2-dbus if NetworkManager)
|
||||
%endif
|
||||
Recommends: (sqlite if bash-completion)
|
||||
%{?systemd_requires}
|
||||
Provides: dnf-command(autoremove) dnf-command(check-update) dnf-command(clean) dnf-command(distro-sync)
|
||||
Provides: dnf-command(downgrade) dnf-command(group) dnf-command(history) dnf-command(info)
|
||||
Provides: dnf-command(install) dnf-command(list) dnf-command(makecache) dnf-command(mark)
|
||||
Provides: dnf-command(provides) dnf-command(reinstall) dnf-command(remove) dnf-command(repolist)
|
||||
Provides: dnf-command(repoquery) dnf-command(repository-packages) dnf-command(updateinfo)
|
||||
Provides: dnf-command(search) dnf-command(upgrade) dnf-command(upgrade-to)
|
||||
Provides: %{name}-conf = %{version}-%{release} dnf-data
|
||||
Provides: %{name}-automatic = %{version}-%{release}
|
||||
Provides: %{name}-data = %{version}-%{release}
|
||||
Obsoletes: %{name}-conf < %{version}-%{release} dnf-data
|
||||
Obsoletes: %{name}-automatic < %{version}-%{release}
|
||||
Obsoletes: %{name}-data < %{version}-%{release}
|
||||
Conflicts: python2-dnf-plugins-core < 3.1 python3-dnf-plugins-core < 3.1
|
||||
Conflicts: python2-dnf-plugins-extras < 3.0.2 python3-dnf-plugins-extras < 3.0.2
|
||||
Name: dnf
|
||||
Version: 4.2.15
|
||||
Release: 2
|
||||
Summary: A software package manager that manages packages on Linux distributions.
|
||||
License: GPLv2+ and GPLv2 and GPL
|
||||
URL: https://github.com/rpm-software-management/dnf
|
||||
Source0: https://github.com/rpm-software-management/dnf/archive/%{version}/%{name}-%{version}.tar.gz
|
||||
BuildArch: noarch
|
||||
BuildRequires: cmake gettext systemd bash-completion %{_bindir}/sphinx-build-3 %{_bindir}/sphinx-build
|
||||
Requires: python3-%{name} = %{version}-%{release} libreport-filesystem python2-%{name} = %{version}-%{release}
|
||||
Recommends: (%{_bindir}/sqlite3 if bash-completion) (python3-dbus if NetworkManager)
|
||||
Provides: dnf-command(alias) dnf-command(autoremove) dnf-command(check-update) dnf-command(clean)
|
||||
Provides: dnf-command(distro-sync) dnf-command(downgrade) dnf-command(group) dnf-command(history)
|
||||
Provides: dnf-command(info) dnf-command(install) dnf-command(list) dnf-command(makecache)
|
||||
Provides: dnf-command(mark) dnf-command(provides) dnf-command(reinstall) dnf-command(remove)
|
||||
Provides: dnf-command(repolist) dnf-command(repoquery) dnf-command(repository-packages)
|
||||
Provides: dnf-command(search) dnf-command(updateinfo) dnf-command(upgrade) dnf-command(upgrade-to)
|
||||
Conflicts: python2-dnf-plugins-core < 4.0.6 python3-dnf-plugins-core < 4.0.6
|
||||
Provides: dnf-data %{name}-conf = %{version}-%{release} %{name}-automatic = %{version}-%{release}
|
||||
Obsoletes: dnf-data %{name}-conf < %{version}-%{release} %{name}-automatic < %{version}-%{release}
|
||||
|
||||
%description
|
||||
DNF is a software package manager that installs, updates, and removespackages
|
||||
@ -63,75 +37,60 @@ determines the actions required to install packages.DNF also makes it easier
|
||||
to maintain groups of machines, eliminating the need to manually update each
|
||||
one using rpm.
|
||||
|
||||
%package help
|
||||
Summary: Help documents for dnf
|
||||
%package -n yum
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
Summary: Package manager
|
||||
|
||||
%description help
|
||||
This package helps to deploy dnf and contains some man help files.
|
||||
%description -n yum
|
||||
Utility that allows users to manage packages on their systems.\
|
||||
It supports RPMs, modules and comps groups & environments.
|
||||
|
||||
%package -n yum
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
Summary: A command-line package-management utility for RPM-based Linux distributions
|
||||
Conflicts: yum < 3.4.3-505
|
||||
|
||||
%description -n yum
|
||||
This package allows for automatic updates and package and dependency management on
|
||||
RPM-based Linux distributions.
|
||||
|
||||
%if %{with python2}
|
||||
%package -n python2-dnf
|
||||
Summary: Python 2 interface to DNF
|
||||
%package -n python2-%{name}
|
||||
Summary: Python 2 interface to DNF
|
||||
%{?python_provide:%python_provide python2-%{name}}
|
||||
BuildRequires: python2-devel python2-hawkey >= 0.37.0 python2-libdnf >= 0.37.0
|
||||
BuildRequires: python2-libcomps >= 0.1.8 python2-libdnf libmodulemd >= 1.4.0
|
||||
BuildRequires: python2-gpg python2-enum34 python2-rpm >= 4.14.0 python2-nose
|
||||
Requires: python2-gpg libmodulemd >= 1.4.0 python2-enum34 python2-enum34 python2-libdnf
|
||||
Requires: %{name}-data = %{version}-%{release} deltarpm python2-hawkey >= 0.37.0
|
||||
Requires: python2-libdnf >= 0.37.0 python2-libcomps >= 0.1.8 python2-rpm >= 4.14.0
|
||||
Recommends: rpm-plugin-systemd-inhibit
|
||||
Conflicts: dnfdaemon < 0.3.19
|
||||
|
||||
BuildRequires: python2-devel python2-libdnf python2-nose python2-hawkey >= 0.22.0
|
||||
BuildRequires: python2-libcomps >= 0.1.8 python2-libdnf >= 0.22.0
|
||||
BuildRequires: python2-rpm >= 4.14.0 libmodulemd >= 1.4.0
|
||||
BuildRequires: python2-gpg python2-enum34 pyliblzma python2-iniparse
|
||||
Requires: libmodulemd >= 1.4.0 python2-gpg python2-enum34
|
||||
Requires: %{name}-data = %{version}-%{release} deltarpm python2-rpm >= 4.14.0
|
||||
Requires: python2-libdnf >= 0.22.0 python2-libcomps >= 0.1.8
|
||||
Requires: python2-hawkey >= 0.22.0 python2-libdnf pyliblzma python2-iniparse
|
||||
Recommends: deltarpm python2-unbound rpm-plugin-systemd-inhibit
|
||||
Conflicts: dnfdaemon < 0.3.19
|
||||
%description -n python2-%{name}
|
||||
Python 2 interface to DNF.
|
||||
|
||||
%description -n python2-dnf
|
||||
Python2 interface for DNF.
|
||||
%endif
|
||||
|
||||
%if %{with python3}
|
||||
%package -n python3-dnf
|
||||
Summary: Python 3 interface to DNF
|
||||
%package -n python3-%{name}
|
||||
Summary: Python 3 interface to DNF
|
||||
%{?python_provide:%python_provide python3-%{name}}
|
||||
BuildRequires: python3-devel python3-hawkey >= 0.37.0 python3-libdnf >= 0.37.0
|
||||
BuildRequires: python3-libcomps >= 0.1.8 python3-libdnf libmodulemd >= 1.4.0
|
||||
BuildRequires: python3-nose python3-gpg python3-rpm >= 4.14.0
|
||||
Requires: python3-gpg %{name}-data = %{version}-%{release} libmodulemd >= 1.4.0
|
||||
Requires: deltarpm python3-hawkey >= 0.37.0 python3-libdnf >= 0.37.0
|
||||
Requires: python3-libcomps >= 0.1.8 python3-libdnf python3-rpm >= 4.14.0
|
||||
Recommends: python3-unbound rpm-plugin-systemd-inhibit
|
||||
|
||||
BuildRequires: python3-hawkey >= 0.22.0 python3-libdnf >= 0.22.0
|
||||
BuildRequires: python3-libcomps >= 0.1.8 libmodulemd >= 1.4.0
|
||||
BuildRequires: python3-devel python3-libdnf python3-iniparse
|
||||
BuildRequires: python3-gpg python3-nose python3-rpm >= 4.14.0
|
||||
Requires: libmodulemd >= 1.4.0 python3-libdnf >= 0.22.0
|
||||
Requires: python3-hawkey >= 0.22.0 %{name}-data = %{version}-%{release}
|
||||
Requires: python3-libcomps >= 0.1.8 python3-rpm >= 4.14.0
|
||||
Requires: python3-iniparse python3-gpg python3-libdnf deltarpm
|
||||
Recommends: python3-unbound deltarpm rpm-plugin-systemd-inhibit
|
||||
%description -n python3-%{name}
|
||||
Python 3 interface to DNF.
|
||||
|
||||
%description -n python3-dnf
|
||||
Python3 interface for DNF.
|
||||
%endif
|
||||
%package_help
|
||||
|
||||
%prep
|
||||
%autosetup -p1
|
||||
mkdir python2
|
||||
mkdir python3
|
||||
mkdir build-py2
|
||||
mkdir build-py3
|
||||
|
||||
%build
|
||||
%if %{with python2}
|
||||
pushd python2
|
||||
pushd build-py2
|
||||
%cmake .. -DPYTHON_DESIRED:FILEPATH=%{__python2}
|
||||
%make_build all doc-man
|
||||
popd
|
||||
%endif
|
||||
|
||||
%if %{with python3}
|
||||
pushd python3
|
||||
pushd build-py3
|
||||
%cmake .. -DPYTHON_DESIRED:FILEPATH=%{__python3}
|
||||
%make_build all doc-man
|
||||
popd
|
||||
@ -139,60 +98,53 @@ mkdir python3
|
||||
|
||||
%install
|
||||
%if %{with python2}
|
||||
pushd python2
|
||||
pushd build-py2
|
||||
%make_install
|
||||
popd
|
||||
%endif
|
||||
|
||||
%if %{with python3}
|
||||
pushd python3
|
||||
pushd build-py3
|
||||
%make_install
|
||||
popd
|
||||
%endif
|
||||
|
||||
%find_lang %{name}
|
||||
install -d %{buildroot}{/etc/dnf/vars,/etc/dnf/plugins/,%{_localstatedir}/log/,%{_var}/cache/dnf/}
|
||||
install -d %{buildroot}%{_sysconfdir}/%{name}/{modules.d,modules.defaults.d}
|
||||
ln -sr %{buildroot}/etc/dnf/%{name}.conf %{buildroot}%{_sysconfdir}/yum.conf
|
||||
mkdir -p %{buildroot}%{_sysconfdir}/%{name}/vars
|
||||
mkdir -p %{buildroot}%{_sysconfdir}/%{name}/aliases.d
|
||||
mkdir -p %{buildroot}%{_sysconfdir}/%{name}/plugins/
|
||||
mkdir -p %{buildroot}%{_sysconfdir}/%{name}/modules.d
|
||||
mkdir -p %{buildroot}%{_sysconfdir}/bash_completion.d/dnf
|
||||
mkdir -p %{buildroot}%{_sysconfdir}/%{name}/modules.defaults.d
|
||||
mkdir -p %{buildroot}%{py2pluginpath}/
|
||||
mkdir -p %{buildroot}%{py3pluginpath}/__pycache__/
|
||||
mkdir -p %{buildroot}%{_localstatedir}/log/
|
||||
mkdir -p %{buildroot}%{_var}/cache/dnf/
|
||||
touch %{buildroot}%{_localstatedir}/log/%{name}.log
|
||||
|
||||
%if %{with python2}
|
||||
install -d %{buildroot}%{py2pluginpath}/
|
||||
%endif
|
||||
%if %{with python3}
|
||||
install -d %{buildroot}%{py3pluginpath}/__pycache__/
|
||||
%endif
|
||||
|
||||
%if %{with python3}
|
||||
ln -sr %{buildroot}%{_bindir}/dnf-3 %{buildroot}%{_bindir}/dnf
|
||||
mv %{buildroot}%{_bindir}/dnf-automatic-3 %{buildroot}%{_bindir}/dnf-automatic
|
||||
ln -sr %{buildroot}%{_bindir}/dnf-3 %{buildroot}%{_bindir}/yum
|
||||
%else
|
||||
ln -sr %{buildroot}%{_bindir}/dnf-2 %{buildroot}%{_bindir}/dnf
|
||||
mv %{buildroot}%{_bindir}/dnf-automatic-2 %{buildroot}%{_bindir}/dnf-automatic
|
||||
ln -sr %{buildroot}%{_bindir}/dnf-2 %{buildroot}%{_bindir}/yum
|
||||
%endif
|
||||
rm -vf %{buildroot}%{_bindir}/dnf-automatic-*
|
||||
install -d %{buildroot}%{_sysconfdir}/yum
|
||||
ln -sr %{buildroot}/etc/dnf/vars %{buildroot}%{_sysconfdir}/yum/vars
|
||||
ln -sr %{buildroot}/etc/dnf/plugins %{buildroot}%{_sysconfdir}/yum/pluginconf.d
|
||||
ln -sr %{buildroot}/etc/dnf/protected.d %{buildroot}%{_sysconfdir}/yum/protected.d
|
||||
|
||||
mv -f %{buildroot}%{_sysconfdir}/%{name}/%{name}-strict.conf %{buildroot}%{_sysconfdir}/%{name}/%{name}.conf
|
||||
ln -sr %{buildroot}%{_sysconfdir}/%{name}/%{name}.conf %{buildroot}%{_sysconfdir}/yum.conf
|
||||
ln -sr %{buildroot}%{_bindir}/dnf-3 %{buildroot}%{_bindir}/yum
|
||||
mkdir -p %{buildroot}%{_sysconfdir}/yum
|
||||
ln -sr %{buildroot}%{_sysconfdir}/%{name}/plugins %{buildroot}%{_sysconfdir}/yum/pluginconf.d
|
||||
ln -sr %{buildroot}%{_sysconfdir}/%{name}/protected.d %{buildroot}%{_sysconfdir}/yum/protected.d
|
||||
ln -sr %{buildroot}%{_sysconfdir}/%{name}/vars %{buildroot}%{_sysconfdir}/yum/vars
|
||||
|
||||
%check
|
||||
%if %{?_with_check:1}%{!?_with_check:0}
|
||||
%if %{with python2}
|
||||
pushd python2
|
||||
ctest -VV
|
||||
popd
|
||||
%endif
|
||||
|
||||
%if %{with python3}
|
||||
pushd python3
|
||||
ctest -VV
|
||||
popd
|
||||
%endif
|
||||
%if %{with python2}
|
||||
pushd build-py2
|
||||
ctest -VV
|
||||
popd
|
||||
%endif
|
||||
|
||||
%if %{with python3}
|
||||
pushd build-py3
|
||||
ctest -VV
|
||||
popd
|
||||
%endif
|
||||
|
||||
%post
|
||||
%systemd_post dnf-makecache.timer
|
||||
%systemd_post dnf-automatic.timer
|
||||
@ -201,8 +153,8 @@ ln -sr %{buildroot}/etc/dnf/protected.d %{buildroot}%{_sysconfdir}/yum/protecte
|
||||
%systemd_post dnf-automatic-install.timer
|
||||
|
||||
%preun
|
||||
%systemd_preun dnf-makecache.timer
|
||||
%systemd_preun dnf-automatic.timer
|
||||
%systemd_preun dnf-makecache.timer
|
||||
%systemd_preun dnf-automatic-notifyonly.timer
|
||||
%systemd_preun dnf-automatic-download.timer
|
||||
%systemd_preun dnf-automatic-install.timer
|
||||
@ -214,74 +166,85 @@ ln -sr %{buildroot}/etc/dnf/protected.d %{buildroot}%{_sysconfdir}/yum/protecte
|
||||
%systemd_postun_with_restart dnf-automatic-download.timer
|
||||
%systemd_postun_with_restart dnf-automatic-install.timer
|
||||
|
||||
|
||||
%files -f %{name}.lang
|
||||
%files
|
||||
%license COPYING PACKAGE-LICENSING
|
||||
%doc AUTHORS README.rst
|
||||
%{_bindir}/%{name}
|
||||
%{_bindir}/%{name}-automatic
|
||||
%{_sysconfdir}/bash_completion.d/%{name}
|
||||
%{_unitdir}/%{name}-automatic.timer
|
||||
%{_unitdir}/%{name}-makecache.timer
|
||||
%{_unitdir}/%{name}-automatic.service
|
||||
%{_unitdir}/%{name}-makecache.service
|
||||
%{_unitdir}/%{name}-automatic-notifyonly.service
|
||||
%{_unitdir}/%{name}-automatic-notifyonly.timer
|
||||
%{_unitdir}/%{name}-automatic-download.service
|
||||
%{_unitdir}/%{name}-automatic-download.timer
|
||||
%{_unitdir}/%{name}-automatic-install.service
|
||||
%{_unitdir}/%{name}-automatic-install.timer
|
||||
%{_var}/cache/%{name}/
|
||||
%{_unitdir}/%{name}-*
|
||||
%{_datadir}/bash-completion/completions/%{name}
|
||||
%dir %{_sysconfdir}/%{name}
|
||||
%dir %{_sysconfdir}/%{name}/modules.d
|
||||
%dir %{_sysconfdir}/%{name}/modules.defaults.d
|
||||
%dir %{_sysconfdir}/%{name}/plugins
|
||||
%dir %{_sysconfdir}/%{name}/protected.d
|
||||
%dir %{_sysconfdir}/%{name}/vars
|
||||
%dir %{_sysconfdir}/%{name}/aliases.d
|
||||
%exclude %{_sysconfdir}/%{name}/aliases.d/zypper.conf
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/automatic.conf
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/%{name}.conf
|
||||
%config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/protected.d/%{name}.conf
|
||||
%ghost %attr(644,-,-) %{_localstatedir}/log/hawkey.log
|
||||
%ghost %attr(644,-,-) %{_localstatedir}/log/%{name}.log
|
||||
%ghost %attr(644,-,-) %{_localstatedir}/log/%{name}.librepo.log
|
||||
%ghost %attr(644,-,-) %{_localstatedir}/log/%{name}.rpm.log
|
||||
%ghost %attr(644,-,-) %{_localstatedir}/log/%{name}.plugin.log
|
||||
%ghost %attr(755,-,-) %dir %{_sharedstatedir}/%{name}
|
||||
%ghost %attr(644,-,-) %{_sharedstatedir}/%{name}/groups.json
|
||||
%ghost %attr(755,-,-) %dir %{_sharedstatedir}/%{name}/yumdb
|
||||
%ghost %attr(755,-,-) %dir %{_sharedstatedir}/%{name}/history
|
||||
%{_tmpfilesdir}/%{name}.conf
|
||||
%{_sysconfdir}/libreport/events.d/collect_dnf.conf
|
||||
%{_bindir}/%{name}-automatic
|
||||
|
||||
%dir /etc/dnf/{vars,modules.d,modules.defaults.d,protected.d,plugins}
|
||||
%dir %{_datadir}/bash-completion/completions
|
||||
%config(noreplace) /etc/dnf/%{name}.conf
|
||||
%config(noreplace) /etc/dnf/protected.d/%{name}.conf
|
||||
%config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
|
||||
%config(noreplace) /etc/dnf/automatic.conf
|
||||
%ghost %{_localstatedir}/log/hawkey.log
|
||||
%ghost %{_localstatedir}/log/%{name}.log
|
||||
%ghost %{_localstatedir}/log/%{name}.librepo.log
|
||||
%ghost %{_localstatedir}/log/%{name}.rpm.log
|
||||
%ghost %{_localstatedir}/log/%{name}.plugin.log
|
||||
%ghost %{_sharedstatedir}/%{name}
|
||||
%ghost %{_sharedstatedir}/%{name}/groups.json
|
||||
%ghost %{_sharedstatedir}/%{name}/yumdb
|
||||
%ghost %{_sharedstatedir}/%{name}/history
|
||||
%if %{with python3}
|
||||
%{python3_sitelib}/%{name}/automatic/
|
||||
%else
|
||||
%{python2_sitelib}/%{name}/automatic/
|
||||
%endif
|
||||
%files -n yum
|
||||
%{_bindir}/yum
|
||||
%{_sysconfdir}/yum/vars
|
||||
%{_sysconfdir}/yum.conf
|
||||
%{_sysconfdir}/yum/pluginconf.d
|
||||
%{_sysconfdir}/yum/protected.d
|
||||
%config(noreplace) %{_sysconfdir}/%{name}/protected.d/yum.conf
|
||||
|
||||
%if %{with python2}
|
||||
%files -n python2-%{name}
|
||||
%{_bindir}/%{name}-2
|
||||
%exclude %{python2_sitelib}/%{name}/automatic
|
||||
%{python2_sitelib}/%{name}/
|
||||
%dir %{py2pluginpath}
|
||||
%exclude %{python2_sitelib}/%{name}/automatic
|
||||
%endif
|
||||
|
||||
%if %{with python3}
|
||||
%files -n python3-%{name}
|
||||
%{_bindir}/%{name}-3
|
||||
%exclude %{python3_sitelib}/%{name}/automatic
|
||||
%{python3_sitelib}/%{name}/
|
||||
%dir %{py3pluginpath}
|
||||
%dir %{py3pluginpath}/__pycache__
|
||||
%exclude %{python3_sitelib}/%{name}/automatic
|
||||
%endif
|
||||
|
||||
%files -n yum
|
||||
%{_bindir}/yum
|
||||
%{_sysconfdir}/yum.conf
|
||||
%{_sysconfdir}/yum/{vars,pluginconf.d,protected.d}
|
||||
|
||||
%files help
|
||||
%{_datadir}/locale/*
|
||||
%{_datadir}/bash-completion/*
|
||||
%{_mandir}/man8/yum.8*
|
||||
%{_mandir}/man8/yum2dnf.8*
|
||||
%{_mandir}/man8/%{name}.8*
|
||||
%{_mandir}/man5/yum.conf.5.*
|
||||
%{_mandir}/man8/yum-shell.8*
|
||||
%{_mandir}/man1/yum-aliases.1*
|
||||
%{_mandir}/man5/%{name}.conf.5*
|
||||
%{_mandir}/man8/yum*
|
||||
%{_mandir}/man8/dnf*
|
||||
%{_mandir}/man7/dnf.modularity.7*
|
||||
%{_mandir}/man8/%{name}-automatic.8*
|
||||
|
||||
%changelog
|
||||
* Fri Dec 27 2019 openEuler Buildteam <buildteam@openeuler.org> - 4.0.4-3
|
||||
- Type:bugfix
|
||||
- Id:NA
|
||||
- SUG:NA
|
||||
- DESC:fix update problem
|
||||
|
||||
* Fri Sep 20 2019 yanzhihua<yanzhihua4@huawei.com> - 4.0.4-2
|
||||
- Package init.
|
||||
|
||||
* Mon Jan 6 2020 openEuler Buildteam <buildteam@openeuler.org> - 4.2.15-2
|
||||
- Package Init
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user