[OE-core] [morty][PATCH v2] rpm: fix failure to report file conflicts
Martin Vuille
jpmv27 at yahoo.com
Tue Mar 13 21:22:57 UTC 2018
Signed-off-by: Martin Vuille <jpmv27 at yahoo.com>
---
.../rpm-fix-failure-to-report-file-conflicts.patch | 44 ++++++++++++++++++++++
meta/recipes-devtools/rpm/rpm_5.4.16.bb | 1 +
2 files changed, 45 insertions(+)
create mode 100644 meta/recipes-devtools/rpm/rpm/rpm-fix-failure-to-report-file-conflicts.patch
diff --git a/meta/recipes-devtools/rpm/rpm/rpm-fix-failure-to-report-file-conflicts.patch b/meta/recipes-devtools/rpm/rpm/rpm-fix-failure-to-report-file-conflicts.patch
new file mode 100644
index 0000000000..3b0d36d21a
--- /dev/null
+++ b/meta/recipes-devtools/rpm/rpm/rpm-fix-failure-to-report-file-conflicts.patch
@@ -0,0 +1,44 @@
+Problem: Conflicts between two packages trying to install different versions
+ of the same file are not detected. Both copies of the file are
+ installed and the build is not deterministic because a different
+ outcome results depending on which package is installed last.
+
+Cause: All conflicts are treated as color conflicts, even when the files
+ are not ELF files. And one of the ways that these conflicts are
+ handled is to install both conflicting files and letting the one
+ installed last win.
+
+Fix: Backport from upstream (see function handleColorConflict in
+ lib/transaction.c). Only treat as a color conflict when both of the
+ conflicting files have a color and they do not both have the same
+ color. Do not handle color conflicts by installing both conflicting
+ files.
+
+Upstream-Status: Backport
+
+Signed-off-by: Martin Vuille <jpmv27 at yahoo.com>
+
+--- a/lib/transaction.c
++++ b/lib/transaction.c
+@@ -411,7 +411,7 @@ assert(otherFi != NULL);
+
+ rConflicts = reportConflicts;
+ /* Resolve file conflicts to prefer Elf64 (if not forced) ... */
+- if (tscolor != 0) {
++ if (tscolor != 0 && FColor != 0 && oFColor != 0 && FColor != oFColor) {
+ if (FColor & prefcolor) {
+ /* ... last file of preferred colour is installed ... */
+ if (!iosmFileActionSkipped((iosmFileAction) fi->actions[i])) {
+@@ -431,12 +431,6 @@ assert(otherFi != NULL);
+ otherFi->actions[otherFileNum] = FA_CREATE;
+ fi->actions[i] = FA_SKIPCOLOR;
+ rConflicts = 0;
+- } else
+- {
+- /* ... otherwise, do both, last in wins. */
+- otherFi->actions[otherFileNum] = FA_CREATE;
+- fi->actions[i] = FA_CREATE;
+- rConflicts = 0;
+ }
+ done = 1;
+ }
diff --git a/meta/recipes-devtools/rpm/rpm_5.4.16.bb b/meta/recipes-devtools/rpm/rpm_5.4.16.bb
index 497af8e055..296f6b8a97 100644
--- a/meta/recipes-devtools/rpm/rpm_5.4.16.bb
+++ b/meta/recipes-devtools/rpm/rpm_5.4.16.bb
@@ -120,6 +120,7 @@ SRC_URI += " \
file://0001-system.h-query.c-support-nosignature.patch \
file://rpm-ensure-rpm2cpio-call-rpm-relocation-code.patch \
file://0001-macros-add-_gpg_sign_cmd_extra_args.patch \
+ file://rpm-fix-failure-to-report-file-conflicts.patch \
"
# OE specific changes
--
2.13.6
More information about the Openembedded-core
mailing list