[packages/rpm/dirdeps] check parent directory dependencies also during package removal
draenog
draenog at pld-linux.org
Fri Aug 30 19:59:48 CEST 2013
commit 7975c3aa00f6b1d3e9072f6eeb0d9729ecc82b80
Author: Kacper Kornet <draenog at pld-linux.org>
Date: Fri Aug 30 18:36:45 2013 +0100
check parent directory dependencies also during package removal
rpm-dirdeps-erasures.patch | 49 ++++++++++++++++++++++++++++++++++++++++++++++
rpm.spec | 4 +++-
2 files changed, 52 insertions(+), 1 deletion(-)
---
diff --git a/rpm.spec b/rpm.spec
index 44e666f..a277294 100644
--- a/rpm.spec
+++ b/rpm.spec
@@ -43,7 +43,7 @@ Summary(ru.UTF-8): Менеджер пакетов от RPM
Summary(uk.UTF-8): Менеджер пакетів від RPM
Name: rpm
Version: 5.4.12
-Release: 2.2
+Release: 2.6
License: LGPL v2.1
Group: Base
# http://rpm5.org/files/rpm/rpm-5.4/rpm-5.4.12-0.20130725.src.rpm
@@ -156,6 +156,7 @@ Patch71: %{name}-changelog-encoding.patch
Patch72: %{name}-preserve-tag-type.patch
Patch73: gem_helper-spec-arg.patch
Patch74: rpm-fix-internal-lua-build.patch
+Patch75: %{name}-dirdeps-erasures.patch
# Patches imported from Mandriva
@@ -896,6 +897,7 @@ Dokumentacja API RPM-a oraz przewodniki w formacie HTML generowane ze
%patch72 -p1
%patch73 -p1
%patch74 -p1
+%patch75 -p1
%patch1000 -p1
%patch1001 -p1
diff --git a/rpm-dirdeps-erasures.patch b/rpm-dirdeps-erasures.patch
new file mode 100644
index 0000000..f39ca87
--- /dev/null
+++ b/rpm-dirdeps-erasures.patch
@@ -0,0 +1,49 @@
+commit 47f436a57cbf1312782f7204ed72b6bdba2d154d
+Author: Kacper Kornet <draenog at pld-linux.org>
+Date: Thu Aug 29 21:53:22 2013 +0100
+
+ Check for dir dependencies also during erasure
+
+diff --git a/lib/depends.c b/lib/depends.c
+index 20bd53a..1a07fdc 100644
+--- a/lib/depends.c
++++ b/lib/depends.c
+@@ -1860,6 +1860,21 @@ static int checkDependentPackages(rpmts ts, const char * depName)
+ return rc;
+ }
+
++static int checkDependentDirs(rpmts ts, const char * depName, nsType depNS)
++ /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
++ /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/
++{
++ int rc = 0;
++
++ /* XXX rpmdb can be closed here, avoid error msg. */
++ if (rpmtsGetRdb(ts) != NULL) {
++ rpmmi mi;
++ mi = rpmtsInitIterator(ts, RPMTAG_DIRNAMES, depName, 0);
++ rc = checkPackageSet(ts, depName, depNS, mi, 0);
++ }
++ return rc;
++}
++
+ /**
+ * Check to-be-added dependencies against installed conflicts.
+ * @param ts transaction set
+@@ -1932,6 +1932,7 @@ int _rpmtsCheck(rpmts ts)
+ int terminate = 2; /* XXX terminate if rc >= terminate */
+ int rc = 0;
+ int ourrc = 0;
++ int dirname_deps = rpmExpandNumeric("%{?_check_dirname_deps}%{?!_check_dirname_deps:1}");
+
+ if (_rpmts_debug)
+ fprintf(stderr, "--> %s(%p) tsFlags 0x%x\n", __FUNCTION__, ts, rpmtsFlags(ts));
+@@ -2021,6 +2036,8 @@ fprintf(stderr, "--> %s(%p) tsFlags 0x%x\n", __FUNCTION__, ts, rpmtsFlags(ts));
+ /* Erasing: check filename against requiredby matches. */
+ if (checkDependentPackages(ts, depName, RPMNS_TYPE_UNKNOWN))
+ rc = 1;
++ if (dirname_deps && checkDependentDirs(ts, depName, RPMNS_TYPE_UNKNOWN))
++ rc = 1;
+ }
+ if (rc && (ourrc = rc) >= terminate)
+ break;
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/rpm.git/commitdiff/7975c3aa00f6b1d3e9072f6eeb0d9729ecc82b80
More information about the pld-cvs-commit
mailing list