package_manager.py: fix RPM_PREFER_ELF_ARCH for mips
cover package_manager.py: fix RPM_PREFER_ELF_ARCH for mips
The following changes since commit 6f98c39418c60b7c0b25b30983d2e5257158a6a4:
gcc: Drop 4.8 (2015-11-16 14:59:07 +0000)
are available in the git repository at:
git://git.openembedded.org/openembedded-core-contrib rbt/elf
http://cgit.openembedded.org/cgit.cgi/openembedded-core-contrib/log/?h=rbt/elf
Robert Yang (1):
package_manager.py: fix RPM_PREFER_ELF_ARCH for mips
meta/lib/oe/package_manager.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-)
Signature · 1 line
1.7.9.5
PATCH 1/1 package_manager.py: fix RPM_PREFER_ELF_ARCH for mips
We can install 64 bit pkg to 32 bit pkg, so the previous checking is incorrect, it should not only check mips64 or mips64el, the "mips" should work, and 64bit ELF can also use mips as TUNE_ARCH, and there are other mips varieties, so only check whether TUNE_ARCH starts with mips or not.
--- meta/lib/oe/package_manager.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-)
meta/lib/oe/package_manager.py +4 -5
@@ -954,12 +954,11 @@ class RpmPM(PackageManager): bb.fatal("Invalid RPM_PREFER_ELF_ARCH: %s, it should be one of:\n" "\t1: ELF32 wins\n" "\t2: ELF64 wins\n" - "\t4: ELF64 N32 wins (mips64 or mips64el only)" % + "\t4: ELF64 N32 wins (mips only)" % prefer_color) - if prefer_color == "4" and self.d.getVar("TUNE_ARCH", True) not in \ - ['mips64', 'mips64el']: - bb.fatal("RPM_PREFER_ELF_ARCH = \"4\" is for mips64 or mips64el " - "only.") + if prefer_color == "4" and not \ + self.d.getVar("TUNE_ARCH", True).startswith('mips'): + bb.fatal("RPM_PREFER_ELF_ARCH = \"4\" is for mips only.") self._invoke_smart('config --set rpm-extra-macros._prefer_color=%s' % prefer_color)
Signature · 1 line
1.7.9.5
Quoted 16 lines · Robert Yang
We can install 64 bit pkg to 32 bit pkg, so the previous checking is incorrect, it should not only check mips64 or mips64el, the "mips" should work, and 64bit ELF can also use mips as
TUNE_ARCH, and there are other mips varieties, so only check whetherTUNE_ARCHstarts with mips or not.Signed-off-by Robert Yang <[email protected]>--- meta/lib/oe/package_manager.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-)meta/lib/oe/package_manager.py +0
-0
meta/lib/oe/package_manager.py class RpmPM(PackageManager): · line 957
Quoted 5 lines
meta/lib/oe/package_manager.py +1
-1@@ -954,12 +954,11 @@ class RpmPM(PackageManager): bb.fatal("Invalid RPM_PREFER_ELF_ARCH: %s, it should be one of:\n" "\t1: ELF32 wins\n" "\t2: ELF64 wins\n" - "\t4: ELF64 N32 wins (mips64 or mips64el only)" % + "\t4: ELF64 N32 wins (mips only)" %
N32 is only available on a MIPS64 platform. It requires MIPS64 instructions, which is why it is documented as such above.
meta/lib/oe/package_manager.py class RpmPM(PackageManager): · line 961
Quoted 8 lines
meta/lib/oe/package_manager.py +3
-4prefer_color) - if prefer_color == "4" and self.d.getVar("TUNE_ARCH", True) not in \ - ['mips64', 'mips64el']: - bb.fatal("RPM_PREFER_ELF_ARCH = \"4\" is for mips64 or mips64el " - "only.") + if prefer_color == "4" and not \ + self.d.getVar("TUNE_ARCH", True).startswith('mips'): + bb.fatal("RPM_PREFER_ELF_ARCH = \"4\" is for mips only.")
The bug is that it's looking for TUNE_ARCH, it should be MACHINE_ARCH in this case. Since the overall MACHINE Is what defined if it can be used or not.
--Mark
Quoted 4 lines
meta/lib/oe/package_manager.py +0
-0self._invoke_smart('config --set rpm-extra-macros._prefer_color=%s' % prefer_color)
Quoted 35 lines · Mark Hatle
Quoted 16 lines · Robert Yang
We can install 64 bit pkg to 32 bit pkg, so the previous checking is incorrect, it should not only check mips64 or mips64el, the "mips" should work, and 64bit ELF can also use mips as
TUNE_ARCH, and there are other mips varieties, so only check whetherTUNE_ARCHstarts with mips or not.Signed-off-by Robert Yang <[email protected]>--- meta/lib/oe/package_manager.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-)meta/lib/oe/package_manager.py +0
-0meta/lib/oe/package_manager.py class RpmPM(PackageManager): · line 957
Quoted 5 lines
meta/lib/oe/package_manager.py +1
-1@@ -954,12 +954,11 @@ class RpmPM(PackageManager): bb.fatal("Invalid RPM_PREFER_ELF_ARCH: %s, it should be one of:\n" "\t1: ELF32 wins\n" "\t2: ELF64 wins\n" - "\t4: ELF64 N32 wins (mips64 or mips64el only)" % + "\t4: ELF64 N32 wins (mips only)" %N32 is only available on a MIPS64 platform. It requires MIPS64 instructions, which is why it is documented as such above.
meta/lib/oe/package_manager.py class RpmPM(PackageManager): · line 961
Quoted 8 lines
meta/lib/oe/package_manager.py +3
-4prefer_color) - if prefer_color == "4" and self.d.getVar("TUNE_ARCH", True) not in \ - ['mips64', 'mips64el']: - bb.fatal("RPM_PREFER_ELF_ARCH = \"4\" is for mips64 or mips64el " - "only.") + if prefer_color == "4" and not \ + self.d.getVar("TUNE_ARCH", True).startswith('mips'): + bb.fatal("RPM_PREFER_ELF_ARCH = \"4\" is for mips only.")
Quoted 2 lines
The bug is that it's looking for
TUNE_ARCH, it should beMACHINE_ARCHin this case. Since the overall MACHINE Is what defined if it can be used or not.
I just realized, it's not MACHINE_ARCH either. It's the canonical arch that is derived from the MACHINE_ARCH -- which may not be available at this point.
So doing the sanity based on the TUNE_ARCH starting with mips might be the best compromise. But the comment should remain that it's only applicable on MIPS64.
--Mark
Quoted 7 lines
--Mark
Quoted 4 lines
meta/lib/oe/package_manager.py +0
-0self._invoke_smart('config --set rpm-extra-macros._prefer_color=%s' % prefer_color)