From 2d22ef81952b90167bb70f6e3a20097a75aecbab Mon Sep 17 00:00:00 2001 From: Alexander Kanavin Date: Wed, 4 Dec 2024 07:49:20 +0100 Subject: [PATCH] rpm: replace use of rpm2cpio with rpm2archive rpm2cpio has been deprecated upstream, so this prepares for its eventual removal. rpm2archive produces a tar archive which can be uncompressed with tar executable from the host. (From OE-Core rev: ed824d3fb23f0c89d8dfdacb2c4ef0b7c21a5144) Signed-off-by: Alexander Kanavin Signed-off-by: Mathieu Dubois-Briand Signed-off-by: Richard Purdie --- meta/classes-recipe/testexport.bbclass | 1 - meta/classes-recipe/testimage.bbclass | 1 - meta/lib/oe/package_manager/rpm/__init__.py | 6 +++--- meta/lib/oeqa/utils/testexport.py | 10 +++++----- meta/recipes-devtools/rpm/rpm_4.20.0.bb | 2 +- 5 files changed, 9 insertions(+), 11 deletions(-) diff --git a/meta/classes-recipe/testexport.bbclass b/meta/classes-recipe/testexport.bbclass index 76db4c625f..cc4088c71a 100644 --- a/meta/classes-recipe/testexport.bbclass +++ b/meta/classes-recipe/testexport.bbclass @@ -29,7 +29,6 @@ require conf/testexport.conf TEST_EXPORT_SDK_ENABLED ?= "0" TEST_EXPORT_DEPENDS = "" -TEST_EXPORT_DEPENDS += "${@bb.utils.contains('IMAGE_PKGTYPE', 'rpm', 'cpio-native:do_populate_sysroot', '', d)}" TEST_EXPORT_DEPENDS += "${@bb.utils.contains('TEST_EXPORT_SDK_ENABLED', '1', 'testexport-tarball:do_populate_sdk', '', d)}" TEST_EXPORT_LOCK = "${TMPDIR}/testimage.lock" diff --git a/meta/classes-recipe/testimage.bbclass b/meta/classes-recipe/testimage.bbclass index c218372edb..97ed4223c4 100644 --- a/meta/classes-recipe/testimage.bbclass +++ b/meta/classes-recipe/testimage.bbclass @@ -100,7 +100,6 @@ TESTIMAGE_BOOT_PATTERNS ?= "" TESTIMAGEDEPENDS = "" TESTIMAGEDEPENDS:append:qemuall = " qemu-native:do_populate_sysroot qemu-helper-native:do_populate_sysroot qemu-helper-native:do_addto_recipe_sysroot" -TESTIMAGEDEPENDS += "${@bb.utils.contains('IMAGE_PKGTYPE', 'rpm', 'cpio-native:do_populate_sysroot', '', d)}" TESTIMAGEDEPENDS += "${@bb.utils.contains('IMAGE_PKGTYPE', 'rpm', 'dnf-native:do_populate_sysroot', '', d)}" TESTIMAGEDEPENDS += "${@bb.utils.contains('IMAGE_PKGTYPE', 'rpm', 'createrepo-c-native:do_populate_sysroot', '', d)}" TESTIMAGEDEPENDS += "${@bb.utils.contains('IMAGE_PKGTYPE', 'ipk', 'opkg-utils-native:do_populate_sysroot package-index:do_package_index', '', d)}" diff --git a/meta/lib/oe/package_manager/rpm/__init__.py b/meta/lib/oe/package_manager/rpm/__init__.py index f40c880af4..323ec5008f 100644 --- a/meta/lib/oe/package_manager/rpm/__init__.py +++ b/meta/lib/oe/package_manager/rpm/__init__.py @@ -393,8 +393,8 @@ class RpmPM(PackageManager): # Strip file: prefix pkg_path = pkg_name[5:] - cpio_cmd = bb.utils.which(os.getenv("PATH"), "cpio") - rpm2cpio_cmd = bb.utils.which(os.getenv("PATH"), "rpm2cpio") + tar_cmd = bb.utils.which(os.getenv("PATH"), "tar") + rpm2archive_cmd = bb.utils.which(os.getenv("PATH"), "rpm2archive") if not os.path.isfile(pkg_path): bb.fatal("Unable to extract package for '%s'." @@ -405,7 +405,7 @@ class RpmPM(PackageManager): os.chdir(tmp_dir) try: - cmd = "%s %s | %s -idmv" % (rpm2cpio_cmd, pkg_path, cpio_cmd) + cmd = "%s -n %s | %s xv" % (rpm2archive_cmd, pkg_path, tar_cmd) output = subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True) except subprocess.CalledProcessError as e: bb.utils.remove(tmp_dir, recurse=True) diff --git a/meta/lib/oeqa/utils/testexport.py b/meta/lib/oeqa/utils/testexport.py index e89d130a9c..3ab024d9e9 100644 --- a/meta/lib/oeqa/utils/testexport.py +++ b/meta/lib/oeqa/utils/testexport.py @@ -60,17 +60,17 @@ def process_binaries(d, params): export_env = d.getVar("TEST_EXPORT_ONLY") def extract_binary(pth_to_pkg, dest_pth=None): - cpio_command = runCmd("which cpio") - rpm2cpio_command = runCmd("ls /usr/bin/rpm2cpio") - if (cpio_command.status != 0) and (rpm2cpio_command.status != 0): - bb.fatal("Either \"rpm2cpio\" or \"cpio\" tools are not available on your system." + tar_command = runCmd("which tar") + rpm2archive_command = runCmd("ls /usr/bin/rpm2archive") + if (tar_command.status != 0) and (rpm2archive_command.status != 0): + bb.fatal("Either \"rpm2archive\" or \"tar\" tools are not available on your system." "All binaries extraction processes will not be available, crashing all related tests." "Please install them according to your OS recommendations") # will exit here if dest_pth: os.chdir(dest_pth) else: os.chdir("%s" % os.sep)# this is for native package - extract_bin_command = runCmd("%s %s | %s -idm" % (rpm2cpio_command.output, pth_to_pkg, cpio_command.output)) # semi-hardcoded because of a bug on poky's rpm2cpio + extract_bin_command = runCmd("%s -n %s | %s xv" % (rpm2archive_command.output, pth_to_pkg, tar_command.output)) # semi-hardcoded because of a bug on poky's rpm2cpio return extract_bin_command if determine_if_poky_env(): # machine with poky environment diff --git a/meta/recipes-devtools/rpm/rpm_4.20.0.bb b/meta/recipes-devtools/rpm/rpm_4.20.0.bb index ec4276d16e..97483f7ddd 100644 --- a/meta/recipes-devtools/rpm/rpm_4.20.0.bb +++ b/meta/recipes-devtools/rpm/rpm_4.20.0.bb @@ -61,7 +61,7 @@ OECMAKE_GENERATOR = "Unix Makefiles" BBCLASSEXTEND = "native nativesdk" -PACKAGECONFIG ??= "" +PACKAGECONFIG ??= "archive" PACKAGECONFIG[plugins] = "-DENABLE_PLUGINS=ON,-DENABLE_PLUGINS=OFF" PACKAGECONFIG[testsuite] = "-DENABLE_TESTSUITE=ON,-DENABLE_TESTSUITE=OFF"