From: Changqing Li <[email protected]> The following error occurred when prefer_color set to 2: Error: Transaction check error: file /sbin/ldconfig conflicts between attempted installs of ldconfig-2.31+git0+71f2b249a2-r0.mips64_n32 and lib32-ldconfig-2.31+git0+71f2b249a2-r0.mips32r2 file /usr/bin/gencat conflicts between attempted installs of lib32-libc6-utils-2.31+git0+71f2b249a2-r0.mips32r2 ...
This was because: transactions_color = 001 (ELF32) & 010 (ELF64) & 100 (ELF32 N32 MIPS64) FColor = Current file color (001) & transaction_color (111) oFcolor = Previous file color (100) & transaction_color (111) when "neither preferred" happened, handled as conflicts. this is too restrictive for three way conflicts(mips64/mips64 n32/mips(32)). Fixed by perform a 'last-in-wins' resolution when "neither is preferred". refer: https://github.com/rpm-software-management/rpm/issues/193 https://git.openembedded.org/openembedded-core/commit/meta/recipes-devtools/rpm?id=36c225704daa58b98a4b7f2ef315eb944d8628b5 Signed-off-by: Changqing Li <[email protected]> --- ...ction.c-fix-file-conflicts-for-MIPS64-N32.patch | 58 ++++++++++++++++++++++ meta/recipes-devtools/rpm/rpm_4.14.2.1.bb | 1 + 2 files changed, 59 insertions(+) create mode 100644 meta/recipes-devtools/rpm/files/0001-lib-transaction.c-fix-file-conflicts-for-MIPS64-N32.patch diff --git a/meta/recipes-devtools/rpm/files/0001-lib-transaction.c-fix-file-conflicts-for-MIPS64-N32.patch b/meta/recipes-devtools/rpm/files/0001-lib-transaction.c-fix-file-conflicts-for-MIPS64-N32.patch new file mode 100644 index 0000000..b515075 --- /dev/null +++ b/meta/recipes-devtools/rpm/files/0001-lib-transaction.c-fix-file-conflicts-for-MIPS64-N32.patch @@ -0,0 +1,58 @@ +From 1ed066fc6fa7d7afffe3545c4e3ea937529e6c49 Mon Sep 17 00:00:00 2001 +From: Changqing Li <[email protected]> +Date: Thu, 7 May 2020 17:40:58 +0800 +Subject: [PATCH] lib/transaction.c: fix file conflicts for MIPS64 N32 + +This patch is from: +https://github.com/rpm-software-management/rpm/issues/193 + +Error: Transaction check error: + file /sbin/ldconfig conflicts between attempted installs of +ldconfig-2.31+git0+71f2b249a2-r0.mips64_n32 and +lib32-ldconfig-2.31+git0+71f2b249a2-r0.mips32r2 +... + +This was because: +transactions_color = 001 (ELF32) & 010 (ELF64) & 100 (ELF32 N32 MIPS64) +FColor = Current file color (001) & transaction_color (111) +oFcolor = Previous file color (100) & transaction_color (111) + +In handleColorConflict, it only deal with conditons "new preferred" or +"old preferred". But not deal with the situation where neither is the +preferred type. so for tri-lib system, like mips64/mips64 n32/mips(32), +"Transaction check error" occurred. + +Fixed by performing a 'last-in-wins' resolution when "neither is preferred". + +Signed-off-by: Changqing Li <[email protected]> +--- + lib/transaction.c | 13 ++++++++++++- + 1 file changed, 12 insertions(+), 1 deletion(-) + +diff --git a/lib/transaction.c b/lib/transaction.c +index 67b9db5..82386b8 100644 +--- a/lib/transaction.c ++++ b/lib/transaction.c +@@ -391,7 +391,18 @@ static int handleColorConflict(rpmts ts, + rpmfsSetAction(ofs, ofx, FA_CREATE); + rpmfsSetAction(fs, fx, FA_SKIPCOLOR); + rConflicts = 0; +- } ++ }else { ++ /* ++ * If neither is already skipped, we skip the old one, and ++ * install the new one (last in wins). ++ */ ++ if (ofs && !XFA_SKIPPING(rpmfsGetAction(ofs, ofx)) && ++ fs && !XFA_SKIPPING(rpmfsGetAction(fs, fx))) { ++ rpmfsSetAction(ofs, ofx, FA_SKIPCOLOR); ++ rpmfsSetAction(fs, fx, FA_CREATE); ++ } ++ rConflicts = 0; ++ } + } + } + +-- +2.7.4 + diff --git a/meta/recipes-devtools/rpm/rpm_4.14.2.1.bb b/meta/recipes-devtools/rpm/rpm_4.14.2.1.bb index 17255dc..3e2c6d1 100644 --- a/meta/recipes-devtools/rpm/rpm_4.14.2.1.bb +++ b/meta/recipes-devtools/rpm/rpm_4.14.2.1.bb @@ -44,6 +44,7 @@ SRC_URI = "git://github.com/rpm-software-management/rpm;branch=rpm-4.14.x \ file://0001-mono-find-provides-requires-do-not-use-monodis-from-.patch \ file://0001-Rip-out-partial-support-for-unused-MD2-and-RIPEMD160.patch \ file://0001-rpmplugins.c-call-dlerror-prior-to-dlsym.patch \ + file://0001-lib-transaction.c-fix-file-conflicts-for-MIPS64-N32.patch \ " PE = "1" -- 2.7.4
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#138045): https://lists.openembedded.org/g/openembedded-core/message/138045 Mute This Topic: https://lists.openembedded.org/mt/74065313/21656 Group Owner: [email protected] Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
