All of lore.kernel.org
 help / color / mirror / Atom feed
* [V3][PATCH 0/2] update default prefer_color to 2
@ 2020-05-09  7:01 Changqing Li
  2020-05-09  7:01 ` [PATCH 1/2] lib/oe/package_manager: update default rpm config %_prefer_color Changqing Li
  2020-05-09  7:01 ` [PATCH 2/2] rpm: fix file conflicts for MIPS64 N32 Changqing Li
  0 siblings, 2 replies; 3+ messages in thread
From: Changqing Li @ 2020-05-09  7:01 UTC (permalink / raw)
  To: openembedded-core, alex.kanavin

From: Changqing Li <changqing.li@windriver.com>

* 0001-lib-oe-package_manager-update-default-rpm-config-_pr.patch:
don't set default prefer value, use rpm default value 2

* 0002-rpm-fix-file-conflicts-for-MIPS64-N32.patch
fix file conflicts for neither-preferred conditon

Changqing Li (2):
  lib/oe/package_manager: update default rpm config %_prefer_color
  rpm: fix file conflicts for MIPS64 N32

 meta/lib/oe/package_manager.py                |  2 -
 ....c-fix-file-conflicts-for-MIPS64-N32.patch | 61 +++++++++++++++++++
 meta/recipes-devtools/rpm/rpm_4.15.1.bb       |  1 +
 3 files changed, 62 insertions(+), 2 deletions(-)
 create mode 100644 meta/recipes-devtools/rpm/files/0001-lib-transaction.c-fix-file-conflicts-for-MIPS64-N32.patch

-- 
2.24.1


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCH 1/2] lib/oe/package_manager: update default rpm config %_prefer_color
  2020-05-09  7:01 [V3][PATCH 0/2] update default prefer_color to 2 Changqing Li
@ 2020-05-09  7:01 ` Changqing Li
  2020-05-09  7:01 ` [PATCH 2/2] rpm: fix file conflicts for MIPS64 N32 Changqing Li
  1 sibling, 0 replies; 3+ messages in thread
From: Changqing Li @ 2020-05-09  7:01 UTC (permalink / raw)
  To: openembedded-core, alex.kanavin

From: Changqing Li <changqing.li@windriver.com>

* %_prefer_color is used by rpm to determine which color's ELF file
is preferred to be installed.

Here are file colors:
0 is unknown or other
1 is Elf32
2 is Elf64
4 is MIPS64 n32 (this color is added by oe-core's patch)

if default value set to 7, all colors are preferred color, always
be last-in-wins.

For this scenario, when we have 64bits python3 installed first,
then install 32bits python3 later, 64bits python3 will be overwrited,
and sys.path will point to /usr/lib, not /usr/lib64, this may cause
some python3 modules not work. so fixed by remove setting of default
value 7, and use default value 2 of rpm

* other distro like fedora also use the default %_prefer_color 2

Signed-off-by: Changqing Li <changqing.li@windriver.com>
---
 meta/lib/oe/package_manager.py | 2 --
 1 file changed, 2 deletions(-)

diff --git a/meta/lib/oe/package_manager.py b/meta/lib/oe/package_manager.py
index b0660411ea..c055d2b0f7 100644
--- a/meta/lib/oe/package_manager.py
+++ b/meta/lib/oe/package_manager.py
@@ -805,8 +805,6 @@ class RpmPM(PackageManager):
         open(platformconfdir + "macros", 'w').write("%_transaction_color 7\n")
         if self.d.getVar('RPM_PREFER_ELF_ARCH'):
             open(platformconfdir + "macros", 'a').write("%%_prefer_color %s" % (self.d.getVar('RPM_PREFER_ELF_ARCH')))
-        else:
-            open(platformconfdir + "macros", 'a').write("%_prefer_color 7")
 
         if self.d.getVar('RPM_SIGN_PACKAGES') == '1':
             signer = get_signer(self.d, self.d.getVar('RPM_GPG_BACKEND'))
-- 
2.24.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [PATCH 2/2] rpm: fix file conflicts for MIPS64 N32
  2020-05-09  7:01 [V3][PATCH 0/2] update default prefer_color to 2 Changqing Li
  2020-05-09  7:01 ` [PATCH 1/2] lib/oe/package_manager: update default rpm config %_prefer_color Changqing Li
@ 2020-05-09  7:01 ` Changqing Li
  1 sibling, 0 replies; 3+ messages in thread
From: Changqing Li @ 2020-05-09  7:01 UTC (permalink / raw)
  To: openembedded-core, alex.kanavin

From: Changqing Li <changqing.li@windriver.com>

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 <changqing.li@windriver.com>
---
 ....c-fix-file-conflicts-for-MIPS64-N32.patch | 61 +++++++++++++++++++
 meta/recipes-devtools/rpm/rpm_4.15.1.bb       |  1 +
 2 files changed, 62 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 0000000000..c356086998
--- /dev/null
+++ b/meta/recipes-devtools/rpm/files/0001-lib-transaction.c-fix-file-conflicts-for-MIPS64-N32.patch
@@ -0,0 +1,61 @@
+From 301af100ecda948115dcc47b7e2d09565901b291 Mon Sep 17 00:00:00 2001
+From: Changqing Li <changqing.li@windriver.com>
+Date: Sat, 9 May 2020 06:18:13 +0000
+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".
+
+Upstream-Status: Pending
+
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+---
+ lib/transaction.c | 13 ++++++++++++-
+ 1 file changed, 12 insertions(+), 1 deletion(-)
+
+diff --git a/lib/transaction.c b/lib/transaction.c
+index e51cff25a..ca7944a43 100644
+--- a/lib/transaction.c
++++ b/lib/transaction.c
+@@ -389,7 +389,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.24.1
+
diff --git a/meta/recipes-devtools/rpm/rpm_4.15.1.bb b/meta/recipes-devtools/rpm/rpm_4.15.1.bb
index 5c1190a3df..8add142461 100644
--- a/meta/recipes-devtools/rpm/rpm_4.15.1.bb
+++ b/meta/recipes-devtools/rpm/rpm_4.15.1.bb
@@ -39,6 +39,7 @@ SRC_URI = "git://github.com/rpm-software-management/rpm;branch=rpm-4.15.x \
            file://0016-rpmscript.c-change-logging-level-around-scriptlets-t.patch \
            file://0001-rpmplugins.c-call-dlerror-prior-to-dlsym.patch \
            file://0001-rpmfc.c-do-not-run-file-classification-in-parallel.patch \
+           file://0001-lib-transaction.c-fix-file-conflicts-for-MIPS64-N32.patch \
            "
 
 PE = "1"
-- 
2.24.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-05-09  7:02 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-09  7:01 [V3][PATCH 0/2] update default prefer_color to 2 Changqing Li
2020-05-09  7:01 ` [PATCH 1/2] lib/oe/package_manager: update default rpm config %_prefer_color Changqing Li
2020-05-09  7:01 ` [PATCH 2/2] rpm: fix file conflicts for MIPS64 N32 Changqing Li

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.