From patchwork Fri Oct 30 17:30:07 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ross Burton X-Patchwork-Id: 102506 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.msgproc02-g2.17049.1793381414632111408 for ; Fri, 30 Oct 2026 10:30:15 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="dkim: body hash did not verify" header.i=@arm.com header.s=foss header.b=eoZV/4mI; spf=pass (domain: arm.com, ip: 217.140.110.172, mailfrom: ross.burton@arm.com) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id F29A91682 for ; Fri, 30 Oct 2026 10:30:10 -0700 (PDT) Received: from cesw-amp-gbt-1s-m12830-04.lab.cambridge.arm.com (usa-sjc-imap-foss1.foss.arm.com [10.121.207.14]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id C4A643F59E for ; Fri, 30 Oct 2026 10:30:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1793381414; bh=hIfpg6RFos+leMvHNZyLkj4qT7y3BbTb/cp6p5RDkEg=; h=From:To:Subject:Date:From; b=eoZV/4mIaLj1hXtbq4s/O9qrwiH+18a6GkrrIMgFRUmvEMPpcLG2pTNcCWvaBrNE8 m8OUeBOoZvQ1q1+Ox3nIW0wuob9MhOuns8b/rAHbTC7Y+tlKEgFWc+jaHrCrXCaqYn lV0/AD104i/J9hrB5UjpylZdyEHO29pDNZY9EZno= From: Ross Burton To: openembedded-core@lists.openembedded.org Subject: [PATCH 1/3] python3: clean up recompilation of sysconfigdata.py Date: Fri, 30 Oct 2026 17:30:07 +0000 Message-ID: <20261030173010.4102708-1-ross.burton@arm.com> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 X-ARM-No-Footer: NoDisclaimer List-Id: X-Webhook-Received: from 45-33-107-173.ip.linodeusercontent.com [45.33.107.173] by lin-tor-korg-lkml-alma10-1 with HTTPS for ; Fri, 30 Oct 2026 17:30:25 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/249058 There's no need to compile sysconfigdata.py for all optimisation levels, as we only ship the rest of the standard library compiled without optimisation: ... stringprep.cpython-314.pyc struct.cpython-314.pyc subprocess.cpython-314.pyc _sysconfigdata__linux_aarch64-linux-gnu.cpython-314.opt-1.pyc _sysconfigdata__linux_aarch64-linux-gnu.cpython-314.opt-2.pyc _sysconfigdata__linux_aarch64-linux-gnu.cpython-314.pyc textwrap.cpython-314.pyc threading.cpython-314.pyc token.cpython-314.pyc ... Invoke compileall as a module after reformatting the source, so we do not need to find the files twice. Pass the correct prefix manipulation so that the path to the source is correct. Previous, as the file was found with 'find', the source filename in the .pyc started with './usr/lib' instead of '/usr/lib'. Signed-off-by: Ross Burton --- meta/recipes-devtools/python/python3_3.14.10.bb | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/meta/recipes-devtools/python/python3_3.14.10.bb b/meta/recipes-devtools/python/python3_3.14.10.bb index b062b4e7c50..d6e84e782a2 100644 --- a/meta/recipes-devtools/python/python3_3.14.10.bb +++ b/meta/recipes-devtools/python/python3_3.14.10.bb @@ -379,23 +379,13 @@ py_package_preprocess () { ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py \ ${PKGD}/${bindir}/python${PYTHON_MAJMIN}-config - # Reformat _sysconfigdata after modifying it so that it remains + # Reformat and recompile _sysconfigdata after modifying it so that it remains # reproducible for c in ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py; do python3 ${UNPACKDIR}/reformat_sysconfig.py $c + python3 -mcompileall $c -s ${PKGD} -p / done - # Recompile _sysconfigdata after modifying it - cd ${PKGD} - sysconfigfile=`find . -name _sysconfigdata_*.py` - ${STAGING_BINDIR_NATIVE}/python3-native/python3 \ - -c "from py_compile import compile; compile('$sysconfigfile')" - ${STAGING_BINDIR_NATIVE}/python3-native/python3 \ - -c "from py_compile import compile; compile('$sysconfigfile', optimize=1)" - ${STAGING_BINDIR_NATIVE}/python3-native/python3 \ - -c "from py_compile import compile; compile('$sysconfigfile', optimize=2)" - cd - - mv ${PKGD}/${bindir}/python${PYTHON_MAJMIN}-config ${PKGD}/${bindir}/python${PYTHON_MAJMIN}-config-${MULTILIB_SUFFIX} #Remove the unneeded copy of target sysconfig data From patchwork Fri Oct 30 17:30:08 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ross Burton X-Patchwork-Id: 102504 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.msgproc01-g2.17191.1793381415247022046 for ; Fri, 30 Oct 2026 10:30:15 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="dkim: body hash did not verify" header.i=@arm.com header.s=foss header.b=Rh6IPP+M; spf=pass (domain: arm.com, ip: 217.140.110.172, mailfrom: ross.burton@arm.com) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 91F98168F for ; Fri, 30 Oct 2026 10:30:11 -0700 (PDT) Received: from cesw-amp-gbt-1s-m12830-04.lab.cambridge.arm.com (usa-sjc-imap-foss1.foss.arm.com [10.121.207.14]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 64DD73F59E for ; Fri, 30 Oct 2026 10:30:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1793381414; bh=yg032j4JEWWnY4lOPRi2AcaLp/lyI8hI8+l6EQXuOZI=; h=From:To:Subject:Date:In-Reply-To:References:From; b=Rh6IPP+MwqluUzhQ+jlBUEyGsReOOpk+X07Lo9w5x+tlNOwV19XfsMfVeVCaZEBFJ EQRsE+AW8Gcb07LQ4bGnTnd8PujQwHWil6ZZKHtYJWxeY7mVliN/RgrrnImOeWcM6y Ngx9icsGbX0agpsYtPXha+8F8xU3+DG1Mjz7kFac= From: Ross Burton To: openembedded-core@lists.openembedded.org Subject: [PATCH 2/3] python3: conslidate sysconfigdata cleanup Date: Fri, 30 Oct 2026 17:30:08 +0000 Message-ID: <20261030173010.4102708-2-ross.burton@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20261030173010.4102708-1-ross.burton@arm.com> References: <20261030173010.4102708-1-ross.burton@arm.com> MIME-Version: 1.0 X-ARM-No-Footer: NoDisclaimer List-Id: X-Webhook-Received: from 45-33-107-173.ip.linodeusercontent.com [45.33.107.173] by lin-tor-korg-lkml-alma10-1 with HTTPS for ; Fri, 30 Oct 2026 17:30:24 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/249059 There's no need to have two almost-identical blocks for removing build references from the Python and JSON representations of the same data. Signed-off-by: Ross Burton --- meta/recipes-devtools/python/python3_3.14.10.bb | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/meta/recipes-devtools/python/python3_3.14.10.bb b/meta/recipes-devtools/python/python3_3.14.10.bb index d6e84e782a2..81da730c0c0 100644 --- a/meta/recipes-devtools/python/python3_3.14.10.bb +++ b/meta/recipes-devtools/python/python3_3.14.10.bb @@ -366,7 +366,8 @@ PACKAGE_PREPROCESS_FUNCS += "py_package_preprocess" py_package_preprocess () { # Remove references to buildmachine paths in target Makefile and _sysconfigdata - sed -i -e 's:--sysroot=${STAGING_DIR_TARGET}::g' -e s:'--with-libtool-sysroot=${STAGING_DIR_TARGET}'::g \ + sed -i -e 's:--sysroot=${STAGING_DIR_TARGET}::g' \ + -e s:'--with-libtool-sysroot=${STAGING_DIR_TARGET}'::g \ -e 's|${DEBUG_PREFIX_MAP}||g' \ -e 's:${HOSTTOOLS_DIR}/::g' \ -e 's:${RECIPE_SYSROOT_NATIVE}::g' \ @@ -375,8 +376,10 @@ py_package_preprocess () { -e 's:BUILD_GNU_TYPE\(.*\)=\(.*\)[a-z\-]*:BUILD_GNU_TYPE\1=\2${HOST_SYS}:g' \ -e 's:build_alias=${BUILD_ARCH}:build_alias=${HOST_ARCH}:g' \ -e 's:--build=${BUILD_ARCH}:--build=${HOST_ARCH}:g' \ + -e 's|"userbase": ".*"|"userbase": ""|g' \ ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/config-${PYTHON_MAJMIN}${PYTHON_ABI}*/Makefile \ ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py \ + ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/_sysconfig_vars*.json \ ${PKGD}/${bindir}/python${PYTHON_MAJMIN}-config # Reformat and recompile _sysconfigdata after modifying it so that it remains @@ -391,18 +394,6 @@ py_package_preprocess () { #Remove the unneeded copy of target sysconfig data rm -rf ${PKGD}/${libdir}/python-sysconfigdata - # Remove references to buildpaths in _sysconfig_vars JSON files - sed -i -e 's:--sysroot=${STAGING_DIR_TARGET}::g' -e s:'--with-libtool-sysroot=${STAGING_DIR_TARGET}'::g \ - -e 's|${DEBUG_PREFIX_MAP}||g' \ - -e 's:${HOSTTOOLS_DIR}/::g' \ - -e 's:${RECIPE_SYSROOT_NATIVE}::g' \ - -e 's:${RECIPE_SYSROOT}::g' \ - -e 's:${BASE_WORKDIR}/${MULTIMACH_TARGET_SYS}::g' \ - -e 's:build_alias=${BUILD_ARCH}:build_alias=${HOST_ARCH}:g' \ - -e 's:--build=${BUILD_ARCH}:--build=${HOST_ARCH}:g' \ - -e 's|"userbase": ".*"|"userbase": ""|g' \ - ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/_sysconfig_vars*.json - # Fix extensions in build-details.json sed -i -e 's:${BUILD_ARCH}-${HOST_OS}:${HOST_ARCH}-${HOST_OS}:g' ${PKGD}/${libdir}/python${PYTHON_MAJMIN}/build-details.json } From patchwork Fri Oct 30 17:30:09 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ross Burton X-Patchwork-Id: 102505 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.msgproc02-g2.17050.1793381415817763819 for ; Fri, 30 Oct 2026 10:30:15 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="dkim: body hash did not verify" header.i=@arm.com header.s=foss header.b=iMIPxrpX; spf=pass (domain: arm.com, ip: 217.140.110.172, mailfrom: ross.burton@arm.com) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 30E4D1682 for ; Fri, 30 Oct 2026 10:30:12 -0700 (PDT) Received: from cesw-amp-gbt-1s-m12830-04.lab.cambridge.arm.com (usa-sjc-imap-foss1.foss.arm.com [10.121.207.14]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 03AD93F59E for ; Fri, 30 Oct 2026 10:30:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=arm.com; s=foss; t=1793381415; bh=bkueleo54n21+P0BJBjWsqZS73AaVfh2vaiUZwFK6a0=; h=From:To:Subject:Date:In-Reply-To:References:From; b=iMIPxrpXrKHIiiTH+KfZICfFLmDn5Ubsa3FKZ+mI3KzCMNebRN0HP/9WqIa6slCZy SBWnDj5DSbpqgOJksdMlnN0hvIz7nYi8NhHrIo7+OfqoHvpX9jJQSkWvuVkzgonMy0 9UHi58++tcsvi5Y9miecyp23S+uLRw2/3CFhlWKM= From: Ross Burton To: openembedded-core@lists.openembedded.org Subject: [PATCH 3/3] python3: fix packaging of zipimport.pyc and sysconfig_vars.json Date: Fri, 30 Oct 2026 17:30:09 +0000 Message-ID: <20261030173010.4102708-3-ross.burton@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20261030173010.4102708-1-ross.burton@arm.com> References: <20261030173010.4102708-1-ross.burton@arm.com> MIME-Version: 1.0 X-ARM-No-Footer: NoDisclaimer List-Id: X-Webhook-Received: from 45-33-107-173.ip.linodeusercontent.com [45.33.107.173] by lin-tor-korg-lkml-alma10-1 with HTTPS for ; Fri, 30 Oct 2026 17:30:25 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/249060 Neither of these files were explicitly packaged, so they ended up in python3-misc. The JSON sysconfig data should be packaged in -core alongside the Python sysconfigdata. zipimport.py is now in core, so zipimport.pyc should also be in core. Signed-off-by: Ross Burton --- meta/recipes-devtools/python/python3/python3-manifest.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/meta/recipes-devtools/python/python3/python3-manifest.json b/meta/recipes-devtools/python/python3/python3-manifest.json index 008d41e5654..50fdf5d0eae 100644 --- a/meta/recipes-devtools/python/python3/python3-manifest.json +++ b/meta/recipes-devtools/python/python3/python3-manifest.json @@ -201,6 +201,7 @@ "${libdir}/python${PYTHON_MAJMIN}/_pyrepl/pager.py", "${libdir}/python${PYTHON_MAJMIN}/_sitebuiltins.py", "${libdir}/python${PYTHON_MAJMIN}/_sysconfigdata*.py", + "${libdir}/python${PYTHON_MAJMIN}/_sysconfig_vars*.json", "${libdir}/python${PYTHON_MAJMIN}/_weakrefset.py", "${libdir}/python${PYTHON_MAJMIN}/abc.py", "${libdir}/python${PYTHON_MAJMIN}/annotationlib.py", @@ -402,6 +403,7 @@ "${libdir}/python${PYTHON_MAJMIN}/__pycache__/typing.*.pyc", "${libdir}/python${PYTHON_MAJMIN}/__pycache__/warnings.*.pyc", "${libdir}/python${PYTHON_MAJMIN}/__pycache__/weakref.*.pyc", + "${libdir}/python${PYTHON_MAJMIN}/__pycache__/zipimport.*.pyc", "${libdir}/python${PYTHON_MAJMIN}/_pyrepl/__pycache__", "${libdir}/python${PYTHON_MAJMIN}/_pyrepl/__pycache__/pager.*.pyc", "${libdir}/python${PYTHON_MAJMIN}/collections/__pycache__",