summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/transaction.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/transaction.c b/lib/transaction.c
index 82d570c62..9d8dbcf0a 100644
--- a/lib/transaction.c
+++ b/lib/transaction.c
@@ -571,8 +571,14 @@ assert(otherFi != NULL);
} else {
/* Skip create on all but the first instance of a shared file */
rpmFileAction oaction = rpmfsGetAction(otherFs, otherFileNum);
- if (oaction != FA_UNKNOWN && !XFA_SKIPPING(oaction))
- rpmfsSetAction(fs, i, FA_SKIP);
+ if (oaction != FA_UNKNOWN && !XFA_SKIPPING(oaction)) {
+ rpmfileAttrs oflags;
+ /* ...but ghosts aren't really created so... */
+ oflags = rpmfiFFlagsIndex(otherFi, otherFileNum);
+ if (!(oflags & RPMFILE_GHOST)) {
+ rpmfsSetAction(fs, i, FA_SKIP);
+ }
+ }
}
/* Skipped files dont need fixup size or backups, %config or not */