From d8085d2c563f86d2c6047dee6ce6b7da55da8059 Mon Sep 17 00:00:00 2001 From: Paul Nasrat Date: Tue, 29 Nov 2005 17:01:59 +0000 Subject: [PATCH] New version --- rpm-4.4.2-exclude.patch | 60 +++++++++++++++++++++++++++++++++++++++++ rpm.spec | 7 ++++- 2 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 rpm-4.4.2-exclude.patch diff --git a/rpm-4.4.2-exclude.patch b/rpm-4.4.2-exclude.patch new file mode 100644 index 0000000..3803f5b --- /dev/null +++ b/rpm-4.4.2-exclude.patch @@ -0,0 +1,60 @@ +--- rpm-4.4.2/rpmdb/fprint.h.exclude 2003-05-08 16:39:31.000000000 -0400 ++++ rpm-4.4.2/rpmdb/fprint.h 2005-11-29 11:40:29.000000000 -0500 +@@ -79,6 +79,12 @@ + /*@modifies db, *matchList, rpmGlobalMacroContext, + fileSystem, internalState @*/; + ++int rpmdbFindFpListExclude(/*@null@*/ rpmdb db, fingerPrint * fpList, ++ /*@out@*/ dbiIndexSet * matchList, int numItems, unsigned int exclude) ++ /*@globals rpmGlobalMacroContext, fileSystem, internalState @*/ ++ /*@modifies db, *matchList, rpmGlobalMacroContext, ++ fileSystem, internalState @*/; ++ + /* Be carefull with the memory... assert(*fullName == '/' || !scareMemory) */ + + /** +--- rpm-4.4.2/rpmdb/rpmdb.c.exclude 2005-02-15 22:18:19.000000000 -0500 ++++ rpm-4.4.2/rpmdb/rpmdb.c 2005-11-29 11:47:10.000000000 -0500 +@@ -3388,11 +3388,17 @@ + return 0; + } + +-/* XXX transaction.c */ +-/*@-compmempass@*/ + int rpmdbFindFpList(rpmdb db, fingerPrint * fpList, dbiIndexSet * matchList, + int numItems) + { ++ return rpmdbFindFpListExclude(db, fpList, matchList, numItems, 0); ++} ++ ++/* XXX transaction.c */ ++/*@-compmempass@*/ ++int rpmdbFindFpListExclude(rpmdb db, fingerPrint * fpList, dbiIndexSet * matchList, ++ int numItems, unsigned int exclude) ++{ + DBT * key; + DBT * data; + HGE_t hge = (HGE_t)headerGetEntryMinMemory; +@@ -3424,7 +3430,10 @@ + key->size = strlen((char *)key->data); + if (key->size == 0) key->size++; /* XXX "/" fixup. */ + +- if (skipDir(fpList[i].entry->dirName)) ++ /* HACK HACK HACK: don't skip dirs while removing ++ * packages as we will loose files on conflicts. ++ * exclude is not zero when removing */ ++ if (!exclude && skipDir(fpList[i].entry->dirName)) + continue; + + xx = rpmdbGrowIterator(mi, i); +--- rpm-4.4.2/lib/transaction.c.exclude 2005-11-29 11:40:29.000000000 -0500 ++++ rpm-4.4.2/lib/transaction.c 2005-11-29 11:40:29.000000000 -0500 +@@ -1750,7 +1750,7 @@ + (void) rpmswEnter(rpmtsOp(ts, RPMTS_OP_FINGERPRINT), 0); + /* Extract file info for all files in this package from the database. */ + matches = xcalloc(fc, sizeof(*matches)); +- if (rpmdbFindFpList(rpmtsGetRdb(ts), fi->fps, matches, fc)) { ++ if (rpmdbFindFpListExclude(rpmtsGetRdb(ts), fi->fps, matches, fc, rpmteType(p) == TR_REMOVED ? fi->record : 0)) { + ps = rpmpsFree(ps); + rpmtsFreeLock(lock); + return 1; /* XXX WTFO? */ diff --git a/rpm.spec b/rpm.spec index 68972b7..472a3e8 100644 --- a/rpm.spec +++ b/rpm.spec @@ -20,7 +20,7 @@ Name: rpm %define version 4.4.2 Version: %{version} %{expand: %%define rpm_version %{version}} -Release: 8 +Release: 9 Group: System Environment/Base Source: ftp://wraptastic.org/pub/rpm-4.4.x/rpm-%{rpm_version}.tar.gz Patch0: rpm-4.4.1-hkp-disable.patch @@ -35,6 +35,7 @@ Patch8: rpm-4.4.2-db3-param.patch Patch9: rpm-4.4.2-contextverify.patch Patch10: rpm-4.4.2-popt-charset.patch Patch11: rpm-4.4.2-ghost-conflicts.patch +Patch12: rpm-4.4.2-exclude.patch License: GPL Conflicts: patch < 2.5 %ifos linux @@ -158,6 +159,7 @@ shell-like rules. %patch9 -p1 -b .contextverify %patch10 -p1 -b .charset %patch11 -p1 -b .ghostconflicts +%patch12 -p1 -b .exclude %build @@ -550,6 +552,9 @@ exit 0 %{__includedir}/popt.h %changelog +* Tue Nov 29 2005 Paul Nasrat - 4.4.2-9 +- Don't skipDirs on erasures (#140055) + * Mon Nov 28 2005 Paul Nasrat - 4.4.2-8 - Add elfutils Build Requires to rpmbuild (#155129) - Don't do conflicts if both files %ghost(#155256)