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-linux/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 <[email protected]>
> ---
>  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/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to