[OE-core] [PATCH v4] rpm: make rpm work in toolchain.
Zheng Ruoqin
zhengrq.fnst at cn.fujitsu.com
Tue Sep 24 23:45:23 UTC 2019
We need to configure rpm to use package architecture from yocto build system.
Install rpmrc and rpm/platform to ${SDKTARGETSYSROOT} because config file in host-sysroot as /opt/poky/2.7+snapshot/sysroots/x86_64-pokysdk-linux will be covered by another ARCH which result in previous config settings inefficacy.
To resolve it, put config file in target-sysroot like /opt/poky/2.7+snapshot/sysroots/core2-64-poky-linux. As each ARCH has its own target-sysroot, config file will not be covered.
Signed-off-by: Zheng Ruoqin <zhengrq.fnst at cn.fujitsu.com>
---
meta/recipes-devtools/rpm/files/rpm-setup.py | 27 ++++++++++++++++++++
meta/recipes-devtools/rpm/rpm_4.14.2.1.bb | 19 ++++++++++++++
2 files changed, 46 insertions(+)
create mode 100644 meta/recipes-devtools/rpm/files/rpm-setup.py
diff --git a/meta/recipes-devtools/rpm/files/rpm-setup.py b/meta/recipes-devtools/rpm/files/rpm-setup.py
new file mode 100644
index 0000000000..b3e8a1198c
--- /dev/null
+++ b/meta/recipes-devtools/rpm/files/rpm-setup.py
@@ -0,0 +1,27 @@
+#!/usr/bin/env python3
+
+import os
+import sys
+import shutil
+
+try:
+ native_sysroot = os.environ['OECORE_NATIVE_SYSROOT']
+ sdktarget_sysroot = os.environ['SDKTARGETSYSROOT']
+except KeyError:
+ print("Not in environment setup, bailing")
+ sys.exit(1)
+
+target_etc_dir = os.path.join(sdktarget_sysroot, 'etc/rpm')
+
+if not os.path.exists(target_etc_dir):
+ os.makedirs(target_etc_dir)
+
+template_file = os.path.join(native_sysroot, 'usr/share/rpm/rpmrc')
+cross_file = os.path.join(sdktarget_sysroot, 'etc/rpmrc')
+shutil.copy(template_file, cross_file)
+
+template_file = os.path.join(native_sysroot, 'usr/share/rpm/platform')
+cross_file = os.path.join(sdktarget_sysroot, 'etc/rpm/platform')
+shutil.copy(template_file, cross_file)
+
+
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 c37330eb4c..e1d1951d74 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,9 @@ 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 \
"
+SRC_URI_append_class-nativesdk = "file://rpm-setup.py \
+ "
+
PE = "1"
SRCREV = "4a9440006398646583f0d9ae1837dad2875013aa"
@@ -113,6 +116,20 @@ do_install_append_class-nativesdk() {
done
rm -rf ${D}/var
+ install -d ${D}${datadir}/rpm
+
+ cat >${D}/${datadir}/rpm/rpmrc <<EOF
+arch_compat: ${MACHINE_ARCH}: all any noarch ${PACKAGE_EXTRA_ARCHS}
+EOF
+
+# Arch Info should be fixed as '-' is instead of '_'.
+ sed -i 's/-/_/' ${D}${datadir}/rpm/rpmrc
+ cat >${D}/${datadir}/rpm/platform <<EOF
+${MACHINE_ARCH}-pc-linux
+EOF
+
+ install -d ${D}${SDKPATHNATIVE}/post-relocate-setup.d
+ install -m 0755 ${WORKDIR}/rpm-setup.py ${D}${SDKPATHNATIVE}/post-relocate-setup.d/
}
# Rpm's make install creates var/tmp which clashes with base-files packaging
@@ -134,6 +151,8 @@ FILES_${PN} += "${libdir}/rpm-plugins/*.so \
FILES_${PN}-dev += "${libdir}/rpm-plugins/*.la \
"
+FILES_${PN}_append_class-nativesdk += "${SDKPATHNATIVE}/post-relocate-setup.d"
+
PACKAGES += "python3-rpm"
PROVIDES += "python3-rpm"
--
2.17.1
More information about the Openembedded-core
mailing list