- fix regression on paths shared between a real file/dir and a ghost
This commit is contained in:
parent
3b3e157787
commit
8020bfa4fe
50
rpm-4.11-beta-skip-ghost.patch
Normal file
50
rpm-4.11-beta-skip-ghost.patch
Normal file
@ -0,0 +1,50 @@
|
||||
commit a712252392eca75443ca45c10a72873cabec7963
|
||||
Author: Panu Matilainen <pmatilai@redhat.com>
|
||||
Date: Mon Jan 28 12:50:39 2013 +0200
|
||||
|
||||
Be more careful about skipping shared file/directory creation
|
||||
|
||||
- Only skip shared file/dir creation if its actually being created
|
||||
by another package. Previously we could've decided to skip an entry
|
||||
where the other file was also being skipped for some other reason.
|
||||
- Ensure %ghost entries always have FA_SKIP on install, previously
|
||||
they often were FA_CREATE which makes no sense for %ghost. We dont
|
||||
encounter %ghosts at all during install in the FSM as they dont
|
||||
exist in the payload, but the file disposition calculations need
|
||||
to take them into account now that we're avoiding redundant creates.
|
||||
- Fixes a regression from commit f7f5f88f9f3d6587e747b034ccb64a3f00ff4e1e
|
||||
which unearthed the %ghost FA_CREATE issue, reported here:
|
||||
http://lists.fedoraproject.org/pipermail/buildsys/2013-January/004047.html
|
||||
|
||||
diff --git a/lib/transaction.c b/lib/transaction.c
|
||||
index 6e9e025..397f23d 100644
|
||||
--- a/lib/transaction.c
|
||||
+++ b/lib/transaction.c
|
||||
@@ -572,7 +572,8 @@ assert(otherFi != NULL);
|
||||
}
|
||||
} else {
|
||||
/* Skip create on all but the first instance of a shared file */
|
||||
- if (rpmfsGetAction(otherFs, otherFileNum) != FA_UNKNOWN)
|
||||
+ rpmFileAction oaction = rpmfsGetAction(otherFs, otherFileNum);
|
||||
+ if (oaction != FA_UNKNOWN && !XFA_SKIPPING(oaction))
|
||||
rpmfsSetAction(fs, i, FA_SKIP);
|
||||
}
|
||||
|
||||
@@ -760,6 +761,17 @@ static void skipInstallFiles(const rpmts ts, rpmte p)
|
||||
ix = rpmfiDX(fi);
|
||||
drc[ix]++;
|
||||
|
||||
+ /*
|
||||
+ * Always skip %ghosts on install.
|
||||
+ * XXX: Should we skip directory creation if there are only
|
||||
+ * %ghosts in it? Traditionally we create the (empty) directory, so
|
||||
+ * preserving that behavior for now at least: leave the refcount alone.
|
||||
+ */
|
||||
+ if (rpmfiFFlags(fi) & RPMFILE_GHOST) {
|
||||
+ rpmfsSetAction(fs, i, FA_SKIP);
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
/* Don't bother with skipped files */
|
||||
if (XFA_SKIPPING(rpmfsGetAction(fs, i))) {
|
||||
drc[ix]--; dff[ix] = 1;
|
4
rpm.spec
4
rpm.spec
@ -46,6 +46,7 @@ Patch5: rpm-4.9.90-armhfp.patch
|
||||
Patch6: rpm-4.9.0-armhfp-logic.patch
|
||||
|
||||
# Patches already in upstream
|
||||
Patch100: rpm-4.11-beta-skip-ghost.patch
|
||||
|
||||
# These are not yet upstream
|
||||
Patch301: rpm-4.6.0-niagara.patch
|
||||
@ -219,6 +220,8 @@ packages on a system.
|
||||
%patch3 -p1 -b .no-man-dirs
|
||||
%patch4 -p1 -b .use-gpg2
|
||||
|
||||
%patch100 -p1 -b .skip-ghost
|
||||
|
||||
%patch301 -p1 -b .niagara
|
||||
%patch302 -p1 -b .geode
|
||||
%patch304 -p1 -b .ldflags
|
||||
@ -454,6 +457,7 @@ exit 0
|
||||
* Mon Jan 28 2013 Panu Matilainen <pmatilai@redhat.com> - 4.11.0-0.beta1.2
|
||||
- armv7hl and armv7hnl should not have -mthumb (#901901)
|
||||
- fix duplicate directory ownership between rpm and rpm-build (#894201)
|
||||
- fix regression on paths shared between a real file/dir and a ghost
|
||||
|
||||
* Mon Dec 10 2012 Panu Matilainen <pmatilai@redhat.com> - 4.11.0-0.beta1.1
|
||||
- update to 4.11 beta
|
||||
|
Loading…
Reference in New Issue
Block a user