With the Python 3.14.0 upgrade, rpm is finding the wrong paths with CMake, leading to a QA issue for files that we have listed in FILES already:
|ERROR: QA Issue: rpm: Files/directories were installed but not shipped in any package: | /home/tgamblin/workspace/yocto/openembedded-core/build/tmp/work/x86-64-v3-poky-linux/rpm/4.20.1/recipe-sysroot-native/usr/lib/python3.14/site-packages/rpm-4.20.1-py3.14.egg-info | /home/tgamblin/workspace/yocto/openembedded-core/build/tmp/work/x86-64-v3-poky-linux/rpm/4.20.1/recipe-sysroot-native/usr/lib/python3.14/site-packages/rpm/_rpm.so | /home/tgamblin/workspace/yocto/openembedded-core/build/tmp/work/x86-64-v3-poky-linux/rpm/4.20.1/recipe-sysroot-native/usr/lib/python3.14/site-packages/rpm/transaction.py | /home/tgamblin/workspace/yocto/openembedded-core/build/tmp/work/x86-64-v3-poky-linux/rpm/4.20.1/recipe-sysroot-native/usr/lib/python3.14/site-packages/rpm/__init__.py |Please set FILES such that these items are packaged. Alternatively if they are unneeded, avoid installing them or delete them within do_install. |rpm: 4 installed and not shipped files. [installed-vs-shipped] Add a patch to make it possible to override Python3_SITEARCH in rpm's python/CMakeLists.txt by setting PYTHON_INSTALL_DIR in EXTRA_OECMAKE. Build looks OK, as does reproducibility: |2025-12-12 12:29:00,504 - oe-selftest - INFO - Adding: "include selftest.inc" in /home/tgamblin/workspace/yocto/openembedded-core/build-st/conf/local.conf |2025-12-12 12:29:00,504 - oe-selftest - INFO - Adding: "include bblayers.inc" in bblayers.conf |2025-12-12 12:29:00,504 - oe-selftest - INFO - test_reproducible_builds (reproducible.ReproducibleTests.test_reproducible_builds) |2025-12-12 12:30:41,633 - oe-selftest - INFO - Building reproducibleA (sstate allowed)... |2025-12-12 12:35:08,628 - oe-selftest - INFO - Building reproducibleB-extended (sstate NOT allowed)... |2025-12-12 12:54:33,755 - oe-selftest - INFO - Checking deb packages for differences... |2025-12-12 12:54:34,147 - oe-selftest - INFO - Reproducibility summary for deb: same=937 different=0 different_excluded=0 missing=0 total=937 |unused_exclusions=[] |2025-12-12 12:54:34,148 - oe-selftest - INFO - Checking ipk packages for differences... |2025-12-12 12:54:34,427 - oe-selftest - INFO - Reproducibility summary for ipk: same=937 different=0 different_excluded=0 missing=0 total=937 |unused_exclusions=[] |2025-12-12 12:54:34,427 - oe-selftest - INFO - Checking rpm packages for differences... |2025-12-12 12:54:34,655 - oe-selftest - INFO - Reproducibility summary for rpm: same=937 different=0 different_excluded=0 missing=0 total=937 |unused_exclusions=[] |2025-12-12 12:54:34,656 - oe-selftest - INFO - ... ok |2025-12-12 12:56:15,651 - oe-selftest - INFO - ---------------------------------------------------------------------- |2025-12-12 12:56:15,651 - oe-selftest - INFO - Ran 1 test in 1635.716s |2025-12-12 12:56:15,651 - oe-selftest - INFO - OK |2025-12-12 12:56:18,842 - oe-selftest - INFO - RESULTS: |2025-12-12 12:56:18,842 - oe-selftest - INFO - RESULTS - reproducible.ReproducibleTests.test_reproducible_builds: PASSED (1534.15s) |2025-12-12 12:56:20,706 - oe-selftest - INFO - SUMMARY: |2025-12-12 12:56:20,706 - oe-selftest - INFO - oe-selftest () - Ran 1 test in 1635.716s |2025-12-12 12:56:20,706 - oe-selftest - INFO - oe-selftest - OK - All required tests passed (successes=1, skipped=0, failures=0, errors=0) Signed-off-by: Trevor Gamblin <[email protected]> --- ...s.txt-allow-overriding-Python-instal.patch | 53 +++++++++++++++++++ meta/recipes-devtools/rpm/rpm_4.20.1.bb | 3 +- 2 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 meta/recipes-devtools/rpm/files/0001-python-CMakeLists.txt-allow-overriding-Python-instal.patch diff --git a/meta/recipes-devtools/rpm/files/0001-python-CMakeLists.txt-allow-overriding-Python-instal.patch b/meta/recipes-devtools/rpm/files/0001-python-CMakeLists.txt-allow-overriding-Python-instal.patch new file mode 100644 index 0000000000..bd04c49261 --- /dev/null +++ b/meta/recipes-devtools/rpm/files/0001-python-CMakeLists.txt-allow-overriding-Python-instal.patch @@ -0,0 +1,53 @@ +From a5c21ca9c925aac2ea43a443a31e390a6dfe5e40 Mon Sep 17 00:00:00 2001 +From: Trevor Gamblin <[email protected]> +Date: Fri, 12 Dec 2025 10:59:24 -0500 +Subject: [PATCH] python/CMakeLists.txt: allow overriding Python install dir + +Upstream-Status: Submitted [https://github.com/rpm-software-management/rpm/pull/4072] + +Allow optionally overriding the PYTHON_INSTALL_DIR variable instead of +relying solely on the value of Python3_SITEARCH. This is useful for +cross-compilation scenarios as of Python 3.14 (which has stricter +sysconfig settings), e.g. with Yocto builds, where Python files get +installed to native instead of target paths. In such cases the +FindPython3 function may find the native version and use those sysconfig +values, which is incorrect. + +If PYTHON_INSTALL_DIR is not set, we continue using the computed value +of Python3_SITEARCH. + +Signed-off-by: Trevor Gamblin <[email protected]> +--- + python/CMakeLists.txt | 12 +++++++++--- + 1 file changed, 9 insertions(+), 3 deletions(-) + +diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt +index 21f89edfd..4eca82129 100644 +--- a/python/CMakeLists.txt ++++ b/python/CMakeLists.txt +@@ -23,13 +23,19 @@ target_compile_definitions(_rpm PRIVATE Py_LIMITED_API=0x030A0000) + + target_link_libraries(_rpm PRIVATE librpmio librpm librpmbuild librpmsign) + ++# Allow overriding of Python installation directory for cross-compilation ++# scenarios ++if(NOT DEFINED PYTHON_INSTALL_DIR) ++ set(PYTHON_INSTALL_DIR ${Python3_SITEARCH}) ++endif() ++ + install(TARGETS _rpm +- DESTINATION ${Python3_SITEARCH}/rpm) ++ DESTINATION ${PYTHON_INSTALL_DIR}/rpm) + install(FILES rpm/transaction.py rpm/__init__.py +- DESTINATION ${Python3_SITEARCH}/rpm) ++ DESTINATION ${PYTHON_INSTALL_DIR}/rpm) + install(DIRECTORY examples TYPE DOC) + + set(egginfo ${PROJECT_NAME}-${PROJECT_VERSION}-py${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}.egg-info) + configure_file(rpm.egg-info.in ${egginfo} @ONLY) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${egginfo} +- DESTINATION ${Python3_SITEARCH}) ++ DESTINATION ${PYTHON_INSTALL_DIR}) +-- +2.52.0 + diff --git a/meta/recipes-devtools/rpm/rpm_4.20.1.bb b/meta/recipes-devtools/rpm/rpm_4.20.1.bb index ba967ec1fa..803fa272dc 100644 --- a/meta/recipes-devtools/rpm/rpm_4.20.1.bb +++ b/meta/recipes-devtools/rpm/rpm_4.20.1.bb @@ -39,6 +39,7 @@ SRC_URI = "git://github.com/rpm-software-management/rpm;branch=rpm-4.20.x;protoc file://0002-rpmio-rpmglob.c-avoid-using-GLOB_BRACE-if-undefined-.patch \ file://0001-CMakeLists.txt-set-libdir-to-CMAKE_INSTALL_FULL_LIBD.patch \ file://0001-CMakeLists.txt-Fix-checking-for-CFLAGS.patch \ + file://0001-python-CMakeLists.txt-allow-overriding-Python-instal.patch \ " PE = "1" @@ -47,7 +48,7 @@ SRCREV = "c8dc5ea575a2e9c1488036d12f4b75f6a5a49120" DEPENDS = "lua libgcrypt file popt xz bzip2 elfutils python3 sqlite3 zstd" DEPENDS:append:class-native = " file-replacement-native bzip2-replacement-native" -EXTRA_OECMAKE:append = " -D__CURL:FILEPATH=curl" +EXTRA_OECMAKE:append = " -D__CURL:FILEPATH=curl -DPYTHON_INSTALL_DIR=${PYTHON_SITEPACKAGES_DIR}" EXTRA_OECMAKE:append:libc-musl = " -DENABLE_NLS=OFF -DENABLE_OPENMP=OFF" # --sysconfdir prevents rpm from attempting to access machine-specific configuration in sysroot/etc; we need to have it in rootfs -- 2.52.0
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#227959): https://lists.openembedded.org/g/openembedded-core/message/227959 Mute This Topic: https://lists.openembedded.org/mt/116810281/21656 Group Owner: [email protected] Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
