Igor Gnatenko 70d2a33
From ab986180f9c67d37b6fe826c0348cebaefe6d81a Mon Sep 17 00:00:00 2001
Igor Gnatenko 70d2a33
From: Igor Gnatenko <ignatenko@redhat.com>
Igor Gnatenko 70d2a33
Date: Fri, 29 Apr 2016 14:53:07 +0200
Igor Gnatenko 70d2a33
Subject: [PATCH] Revert "using ts.addReinstall for package reinstallation
Igor Gnatenko 70d2a33
 (RhBug:1071854)"
Igor Gnatenko 70d2a33
Igor Gnatenko 70d2a33
This reverts commit 516aad977e108df0f99c0bfc03a25b180888937f.
Igor Gnatenko 70d2a33
Igor Gnatenko 70d2a33
reinstall stuff implemented in rpm 4.12 which we don't have backported into epel7
Igor Gnatenko 70d2a33
Igor Gnatenko 70d2a33
Signed-off-by: Igor Gnatenko <ignatenko@redhat.com>
Igor Gnatenko 70d2a33
---
Igor Gnatenko 70d2a33
 dnf/base.py                   | 4 ++++
Igor Gnatenko 70d2a33
 dnf/cli/commands/reinstall.py | 1 +
Igor Gnatenko 70d2a33
 dnf/rpm/transaction.py        | 1 -
Igor Gnatenko 70d2a33
 dnf/transaction.py            | 6 +++---
Igor Gnatenko 70d2a33
 tests/test_transaction.py     | 3 ++-
Igor Gnatenko 70d2a33
 5 files changed, 10 insertions(+), 5 deletions(-)
Igor Gnatenko 70d2a33
Igor Gnatenko 70d2a33
diff --git a/dnf/base.py b/dnf/base.py
Igor Gnatenko 70d2a33
index abb22ac..f56b4f6 100644
Igor Gnatenko 70d2a33
--- a/dnf/base.py
Igor Gnatenko 70d2a33
+++ b/dnf/base.py
Igor Gnatenko 70d2a33
@@ -1603,6 +1603,7 @@ class Base(object):
Igor Gnatenko 70d2a33
 
Igor Gnatenko 70d2a33
     def reinstall(self, pkg_spec, old_reponame=None, new_reponame=None,
Igor Gnatenko 70d2a33
                   new_reponame_neq=None, remove_na=False):
Igor Gnatenko 70d2a33
+        self._add_reinstall_rpm_probfilters()
Igor Gnatenko 70d2a33
         subj = dnf.subject.Subject(pkg_spec)
Igor Gnatenko 70d2a33
         q = subj.get_best_query(self.sack)
Igor Gnatenko 70d2a33
         installed_pkgs = [
Igor Gnatenko 70d2a33
@@ -1768,6 +1769,7 @@ class Base(object):
Igor Gnatenko 70d2a33
                     assert len(obsoleteds_) == 1
Igor Gnatenko 70d2a33
                     obsoleteds.append(obsoleteds_[0])
Igor Gnatenko 70d2a33
             assert len(news) == 1
Igor Gnatenko 70d2a33
+            self._add_reinstall_rpm_probfilters()
Igor Gnatenko 70d2a33
             self._transaction.add_reinstall(first(olds), news[0],
Igor Gnatenko 70d2a33
                                             obsoleteds)
Igor Gnatenko 70d2a33
 
Igor Gnatenko 70d2a33
@@ -1914,6 +1916,8 @@ class Base(object):
Igor Gnatenko 70d2a33
             myrepos += '\n'
Igor Gnatenko 70d2a33
         self.history.write_addon_data('config-repos', myrepos)
Igor Gnatenko 70d2a33
 
Igor Gnatenko 70d2a33
+    def _add_reinstall_rpm_probfilters(self):
Igor Gnatenko 70d2a33
+        self.rpm_probfilter.add(rpm.RPMPROB_FILTER_REPLACEPKG)
Igor Gnatenko 70d2a33
 
Igor Gnatenko 70d2a33
 def _msg_installed(pkg):
Igor Gnatenko 70d2a33
     name = ucd(pkg)
Igor Gnatenko 70d2a33
diff --git a/dnf/cli/commands/reinstall.py b/dnf/cli/commands/reinstall.py
Igor Gnatenko 70d2a33
index b0294c2..7b01345 100644
Igor Gnatenko 70d2a33
--- a/dnf/cli/commands/reinstall.py
Igor Gnatenko 70d2a33
+++ b/dnf/cli/commands/reinstall.py
Igor Gnatenko 70d2a33
@@ -75,6 +75,7 @@ class ReinstallCommand(commands.Command):
Igor Gnatenko 70d2a33
         local_pkgs = map(self.base.add_remote_rpm, filenames)
Igor Gnatenko 70d2a33
         results = map(self.base.package_reinstall, local_pkgs)
Igor Gnatenko 70d2a33
         done = functools.reduce(operator.or_, results, False)
Igor Gnatenko 70d2a33
+        self.base._add_reinstall_rpm_probfilters()
Igor Gnatenko 70d2a33
 
Igor Gnatenko 70d2a33
         # Reinstall packages.
Igor Gnatenko 70d2a33
         for pkg_spec in pkg_specs:
Igor Gnatenko 70d2a33
diff --git a/dnf/rpm/transaction.py b/dnf/rpm/transaction.py
Igor Gnatenko 70d2a33
index cfb4f61..117aec1 100644
Igor Gnatenko 70d2a33
--- a/dnf/rpm/transaction.py
Igor Gnatenko 70d2a33
+++ b/dnf/rpm/transaction.py
Igor Gnatenko 70d2a33
@@ -25,7 +25,6 @@ class TransactionWrapper(object):
Igor Gnatenko 70d2a33
                          'order',
Igor Gnatenko 70d2a33
                          'addErase',
Igor Gnatenko 70d2a33
                          'addInstall',
Igor Gnatenko 70d2a33
-                         'addReinstall',
Igor Gnatenko 70d2a33
                          'run',
Igor Gnatenko 70d2a33
                          'pgpImportPubkey',
Igor Gnatenko 70d2a33
                          'pgpPrtPkts',
Igor Gnatenko 70d2a33
diff --git a/dnf/transaction.py b/dnf/transaction.py
Igor Gnatenko 70d2a33
index 5cec604..1e2f584 100644
Igor Gnatenko 70d2a33
--- a/dnf/transaction.py
Igor Gnatenko 70d2a33
+++ b/dnf/transaction.py
Igor Gnatenko 70d2a33
@@ -186,9 +186,9 @@ class Transaction(object):
Igor Gnatenko 70d2a33
                 else:
Igor Gnatenko 70d2a33
                     ts.addInstall(hdr, tsi, 'i')
Igor Gnatenko 70d2a33
             elif tsi.op_type == REINSTALL:
Igor Gnatenko 70d2a33
-                # note: in rpm 4.12 there should not be set
Igor Gnatenko 70d2a33
-                # rpm.RPMPROB_FILTER_REPLACEPKG to work
Igor Gnatenko 70d2a33
-                ts.addReinstall(tsi.installed.header, tsi)
Igor Gnatenko 70d2a33
+                ts.addErase(tsi.erased.idx)
Igor Gnatenko 70d2a33
+                hdr = tsi.installed.header
Igor Gnatenko 70d2a33
+                ts.addInstall(hdr, tsi, 'i')
Igor Gnatenko 70d2a33
             elif tsi.op_type == UPGRADE:
Igor Gnatenko 70d2a33
                 hdr = tsi.installed.header
Igor Gnatenko 70d2a33
                 ts.addInstall(hdr, tsi, 'u')
Igor Gnatenko 70d2a33
diff --git a/tests/test_transaction.py b/tests/test_transaction.py
Igor Gnatenko 70d2a33
index a82dce2..c0aeb54 100644
Igor Gnatenko 70d2a33
--- a/tests/test_transaction.py
Igor Gnatenko 70d2a33
+++ b/tests/test_transaction.py
Igor Gnatenko 70d2a33
@@ -211,5 +211,6 @@ class RPMProbFilters(tests.support.TestCase):
Igor Gnatenko 70d2a33
         self.base._sack = tests.support.mock_sack('main')
Igor Gnatenko 70d2a33
         self.base._goal = dnf.goal.Goal(self.base.sack)
Igor Gnatenko 70d2a33
         self.base.reinstall("librita")
Igor Gnatenko 70d2a33
-        expected = rpm.rpm.RPMPROB_FILTER_OLDPACKAGE
Igor Gnatenko 70d2a33
+        expected = rpm.RPMPROB_FILTER_REPLACEPKG |\
Igor Gnatenko 70d2a33
+                   rpm.rpm.RPMPROB_FILTER_OLDPACKAGE
Igor Gnatenko 70d2a33
         self.base.ts.setProbFilter.assert_called_with(expected)
Igor Gnatenko 70d2a33
-- 
Igor Gnatenko 70d2a33
2.7.4
Igor Gnatenko 70d2a33