python distutils/sysconfig.get_platform() falls back to
distutils.util.get_platform() when the _PYTHON_HOST_PLATFORM
environment variable is unset, and returns the *build host* arch.
The result is baked into the produced wheel's filename
(pkg-<ver>-cp3XX-cp3XX-<PLAT>.whl) and its <pkg>.dist-info/WHEEL
metadata.

Without this export, extension-module wheels tag themselves with
whichever arch the autobuilder worker happens to have, which makes
the resulting rpm non-reproducible across mixed-arch autobuilder
pools.

Since python 3.14 + wheel >=0.44 also rejects wheels with an empty
platform tag ("Bad wheel filename"), the value has to be non-empty
in every class scope. HOST_ARCH is class-scoped by bitbake
(target/native/cross/nativesdk), so `linux-${HOST_ARCH}` covers
every case with a single unconditional assignment. Setting per-class
overrides to "" (as an earlier draft did) trips the wheel filename
check and must be avoided.

Pure-python wheels ignore _PYTHON_HOST_PLATFORM and remain tagged
"any", so this change only affects wheels that ship compiled
extensions (cffi, cryptography, numpy, bcrypt, markupsafe, psutil,
rpds-py, websockets, ...).

Assisted-by: AI - OpenAI
Signed-off-by: Alejandro Hernandez <[email protected]>
---
 meta/classes-recipe/python_pep517.bbclass | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/meta/classes-recipe/python_pep517.bbclass 
b/meta/classes-recipe/python_pep517.bbclass
index d6246af5c2..06b23d3cba 100644
--- a/meta/classes-recipe/python_pep517.bbclass
+++ b/meta/classes-recipe/python_pep517.bbclass
@@ -30,6 +30,22 @@ PEP517_INSTALL_PYTHON:class-native = "nativepython3"
 # pypa/installer option to control the bytecode compilation
 INSTALL_WHEEL_COMPILE_BYTECODE ?= "--compile-bytecode=0"
 
+# Force the wheel's platform tag to reflect the target machine rather than the
+# build host. Without this, extension-module wheels bake the build host's arch
+# (e.g. linux_x86_64) into <pkg>.dist-info/WHEEL via distutils/sysconfig's
+# get_platform(), which breaks reproducibility across autobuilder workers of
+# different architectures. Pure-python wheels ignore this variable and remain
+# tagged "any".
+#
+# HOST_ARCH is class-scoped by bitbake:
+#   - target:     HOST_ARCH == TARGET_ARCH (reproducible across workers)
+#   - native:     HOST_ARCH == BUILD_ARCH  (matches worker arch, unpackaged)
+#   - cross:      HOST_ARCH == BUILD_ARCH
+#   - nativesdk:  HOST_ARCH == SDK_ARCH
+# so a single expression covers every class without producing an empty tag
+# (which python 3.14 + wheel >=0.44 rejects with "Bad wheel filename").
+export _PYTHON_HOST_PLATFORM = "linux-${HOST_ARCH}"
+
 # PEP517 doesn't have a specific configure step, so set an empty do_configure 
to avoid
 # running base_do_configure.
 python_pep517_do_configure () {
-- 
2.43.0

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#242806): 
https://lists.openembedded.org/g/openembedded-core/message/242806
Mute This Topic: https://lists.openembedded.org/mt/120602086/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

  • [OE-core] [PATCH ... Alejandro Hernandez Samaniego via lists.openembedded.org
    • [OE-core] [P... Alejandro Hernandez Samaniego via lists.openembedded.org
      • Re: [OE-... Richard Purdie via lists.openembedded.org
        • Re: ... Alejandro Hernandez Samaniego via lists.openembedded.org
          • ... Richard Purdie via lists.openembedded.org
            • ... Alejandro Hernandez Samaniego via lists.openembedded.org
    • [OE-core] [P... Alejandro Hernandez Samaniego via lists.openembedded.org
    • [OE-core] [P... Alejandro Hernandez Samaniego via lists.openembedded.org
      • Re: [OE-... Mathieu Dubois-Briand via lists.openembedded.org
        • Re: ... Alejandro Hernandez Samaniego via lists.openembedded.org
      • Re: [OE-... Richard Purdie via lists.openembedded.org
        • Re: ... Alejandro Hernandez Samaniego via lists.openembedded.org

Reply via email to