[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openembedded-core
Subject:    Re: [OE-core][PATCH] python_hatchling: remove empty python sysroot dirs
From:       "Richard Purdie" <richard.purdie () linuxfoundation ! org>
Date:       2023-05-31 19:13:11
Message-ID: c6356dfa396b9f72c11ecf111102db4437636454.camel () linuxfoundation ! org
[Download RAW message or body]

On Wed, 2023-05-31 at 15:08 -0400, Trevor Gamblin wrote:
> In some cases, empty versioned directories are being left behind in
> sysroots from previous versions of packages. This appears to be found
> with recipes relying on hatchling, and causes errors at the do_compile
> step:
> 
> > File "/workspace/yocto/manual/openembedded-core/build/tmp-glibc/work/core2-64-oe-l \
> > inux/python3-iniconfig/2.0.0-r0/recipe-sysroot-native/usr/lib/python3.11/site-packages/packaging/version.py", \
> > line 197, in __init__ match = self._regex.search(version)
> > ^^^^^^^^^^^^^^^^^^^^^^^^^^^
> > TypeError: expected string or bytes-like object, got 'NoneType'
> 
> To fix this error, add a do_prepare_recipe_sysroot postfunc in the
> python_hatchling class that removes any nested empty directories from
> the sysroots during build, so that dependent recipes don't get caught
> on them.
> 
> Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
> ---
> meta/classes-recipe/python_hatchling.bbclass | 9 +++++++++
> 1 file changed, 9 insertions(+)
> 
> diff --git a/meta/classes-recipe/python_hatchling.bbclass \
> b/meta/classes-recipe/python_hatchling.bbclass index b9e6582eb5..a20e243161 100644
> --- a/meta/classes-recipe/python_hatchling.bbclass
> +++ b/meta/classes-recipe/python_hatchling.bbclass
> @@ -7,3 +7,12 @@
> inherit python_pep517 python3native python3-dir setuptools3-base
> 
> DEPENDS += "python3-hatchling-native"
> +
> +# delete nested, empty directories from the python site-packages path. We don't \
> use  +# ${PYTHON_SITEPACKAGES_DIR} in the path specification so that \
> python3-hatchling  +# still builds OK
> +hatchling_rm_emptydirs () {
> +        find ${RECIPE_SYSROOT_NATIVE}/usr/lib/${PYTHON_DIR}/site-packages/* -depth \
> -type d -empty -delete +}
> +
> +do_prepare_recipe_sysroot[postfuncs] += " hatchling_rm_emptydirs"

Looking at the patch, this is the right direction I'm not 100%
convinced the details are quite right.

Should we be clearing from RECIPE_SYSROOT or RECIPE_SYSROOT_NATIVE?
Also, can we avoid hardcoding /usr/lib? That probably won't work for
multilibs or some other combinations of settings some use.

Cheers,

Richard



-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#182036): https://lists.openembedded.org/g/openembedded-core/message/182036
Mute This Topic: https://lists.openembedded.org/mt/99249321/4454766
Group Owner: openembedded-core+owner@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [openembedded-core@marc.info]
-=-=-=-=-=-=-=-=-=-=-=-



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic