From cd50f6f50999e31df780103023299aff33fbf5bc Mon Sep 17 00:00:00 2001 From: Thomas Perl Date: Wed, 27 May 2015 19:19:33 +0200 Subject: [PATCH] [rpm] Fix compatibility with RPM < 4.12.x (Contributes to JB#28828) --- ...nd-execute-posttrans-scripts-delayed.patch | 76 +++++++++++++++++++ rpm/libzypp.spec | 2 + 2 files changed, 78 insertions(+) create mode 100644 rpm/0002-Revert-Collect-and-execute-posttrans-scripts-delayed.patch diff --git a/rpm/0002-Revert-Collect-and-execute-posttrans-scripts-delayed.patch b/rpm/0002-Revert-Collect-and-execute-posttrans-scripts-delayed.patch new file mode 100644 index 0000000..945badc --- /dev/null +++ b/rpm/0002-Revert-Collect-and-execute-posttrans-scripts-delayed.patch @@ -0,0 +1,76 @@ +From 09a9767a6919a986f3ac1add444a6760007d5d78 Mon Sep 17 00:00:00 2001 +From: Thomas Perl +Date: Wed, 27 May 2015 19:05:22 +0200 +Subject: [PATCH] Revert "Collect and execute %posttrans scripts delayed + (Fate#313506)" + +This temporarily reverts commit 40f1e5737baa7082850925573fdd2b45d91deade. + +The reason is that the old RPM doesn't have the --noposttrans flag (as already +established). This was added in this commit: + + https://github.com/rpm-software-management/rpm/commit/23e82afcbc8a9ddde13f0d20c75a549196920139 + +The commit in libzypp that introduced usage of this is the following: + + https://github.com/openSUSE/libzypp/commit/40f1e5737baa7082850925573fdd2b45d91deade + +Following the breadcrumbs (Fate#313506) with a Google search from there leads us to: + + https://bugzilla.novell.com/show_bug.cgi?id=786318 + +So basically libzypp uses this to move the posttrans scriptlets to after the +transaction has finished. + +As a stopgap measure, we revert that patch in our newer libzypp package to +avoid that specific error. Once the new RPM is integrated, we can remove the +revert and get the right posttrans behavior. +--- + zypp/target/TargetImpl.cc | 10 ---------- + 1 file changed, 10 deletions(-) + +diff --git a/zypp/target/TargetImpl.cc b/zypp/target/TargetImpl.cc +index 89506ed..cd15cbc 100644 +--- a/zypp/target/TargetImpl.cc ++++ b/zypp/target/TargetImpl.cc +@@ -45,7 +45,6 @@ + #include "zypp/target/TargetCallbackReceiver.h" + #include "zypp/target/rpm/librpmDb.h" + #include "zypp/target/CommitPackageCache.h" +-#include "zypp/target/RpmPostTransCollector.h" + + #include "zypp/parser/ProductFileReader.h" + +@@ -1508,7 +1507,6 @@ namespace zypp + MIL << "TargetImpl::commit(" << policy_r << ")" << steps.size() << endl; + + bool abort = false; +- RpmPostTransCollector postTransCollector( _root ); + std::vector successfullyInstalledPackages; + TargetImpl::PoolItemList remaining; + +@@ -1585,8 +1583,6 @@ namespace zypp + try + { + progress.tryLevel( target::rpm::InstallResolvableReport::RPM_NODEPS_FORCE ); +- if ( postTransCollector.collectScriptFromPackage( localfile ) ) +- flags |= rpm::RPMINST_NOPOSTTRANS; + rpm().installPackage( localfile, flags ); + HistoryLog().install(citem); + +@@ -1731,12 +1727,6 @@ namespace zypp + + } // for + +- // process all remembered posttrans scripts. +- if ( !abort ) +- postTransCollector.executeScripts(); +- else +- postTransCollector.discardScripts(); +- + // Check presence of update scripts/messages. If aborting, + // at least log omitted scripts. + if ( ! successfullyInstalledPackages.empty() ) +-- +2.1.4 + diff --git a/rpm/libzypp.spec b/rpm/libzypp.spec index 4b6a727..dfac16a 100644 --- a/rpm/libzypp.spec +++ b/rpm/libzypp.spec @@ -7,6 +7,7 @@ Release: 1 Source: %{name}-%{version}.tar.bz2 Source1: %{name}-rpmlintrc Patch0: 0001-zypp-PublicKey.cc-Use-GPG_BINARY-from-KeyRing.cc.patch +Patch1: 0002-Revert-Collect-and-execute-posttrans-scripts-delayed.patch BuildRequires: cmake BuildRequires: openssl-devel BuildRequires: libudev-devel @@ -76,6 +77,7 @@ Authors: %prep %setup -q -n %{name}-%{version}/%{name} %patch0 -p1 +%patch1 -p1 %build mkdir -p build