On Mon, Jun 3, 2024 at 9:35 AM Richard Purdie
<[email protected]> wrote:
>
> On Mon, 2024-06-03 at 09:25 -0700, Khem Raj via lists.openembedded.org
> wrote:
> > loader expects it to be called with 'linux-gnu' e.g
> > rpds.cpython-312-x86_64-linux-musl.so is created with musl
> > but loader expects it to called rpds.cpython-312-x86_64-linux-gnu.so
> >
> > Lets create the symlink to please the loader.
> >
> > Fixes
> > ImportError while importing test module '/usr/lib/python3-rpds-
> > py/ptest/tests/test_hash_trie_map.py'.
> > Hint: make sure your test modules/packages have valid Python names.
> > Traceback:
> > ../../python3.12/importlib/__init__.py:90: in import_module
> >     return _bootstrap._gcd_import(name[level:], package, level)
> > tests/test_hash_trie_map.py:36: in <module>
> >     from rpds import HashTrieMap
> > ../../python3.12/site-packages/rpds/__init__.py:1: in <module>
> >     from .rpds import *
> > E   ModuleNotFoundError: No module named 'rpds.rpds'
> > ERROR: tests/test_hash_trie_map.py:tests/test_hash_trie_map.py
> >
> > Signed-off-by: Khem Raj <[email protected]>
> > ---
> >  .../recipes-devtools/python/python3-rpds-py_0.18.1.bb | 11
> > +++++++++++
> >  1 file changed, 11 insertions(+)
> >
> > diff --git a/meta/recipes-devtools/python/python3-rpds-py_0.18.1.bb
> > b/meta/recipes-devtools/python/python3-rpds-py_0.18.1.bb
> > index f46df1115c8..b1f0e100332 100644
> > --- a/meta/recipes-devtools/python/python3-rpds-py_0.18.1.bb
> > +++ b/meta/recipes-devtools/python/python3-rpds-py_0.18.1.bb
> > @@ -27,4 +27,15 @@ do_install_ptest() {
> >      cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
> >  }
> >
> > +do_install:append() {
> > +    for f in ${D}/${PYTHON_SITEPACKAGES_DIR}/rpds/rpds.cpython*.so
> > +    do
> > +        fname=`basename $f`
> > +        lname=`echo $fname | sed 's/musl/gnu/'`
> > +        if [ "$fname" != "$lname" ]; then
> > +            mv $f ${D}/${PYTHON_SITEPACKAGES_DIR}/rpds/$lname
> > +        fi
> > +    done
> > +}
> > +
> >  BBCLASSEXTEND = "native nativesdk"
> >
>
> This feels like the kind of workaround that will live forever. Can we
> not fix the loader to use the right name?

OE's python interpreter is cross-built and we end up using OSABI which
is detected during build 'linux-gnu', this seems to work fine for most of
python modules since they get the OSABI from the sysconfigdata so it
all works even though the OSABI is called linux-gnu, however some modules
like this one which are using maturin to build, seems to get the OSABI
equivalent differently, I am no expert on maturin but maybe someone knows
how it happens. This problem is seen with several python modules built with
OE,  see

https://github.com/meta-homeassistant/meta-homeassistant/issues/89
https://github.com/pypa/auditwheel/issues/349

also see how it is fixed in python3-pydantic-core on meta-python
https://git.openembedded.org/meta-openembedded/tree/meta-python/recipes-devtools/python/python3-pydantic-core_2.16.3.bb#n38

Hopefully musllinux ABI tag will be sorted in pypa and this will work better
however, we also need to see how we are encoding OSABI in python builds

e.g. on qemux86-64 musl target I get

root@qemux86-64:~# python3
Python 3.12.3 (main, Apr  9 2024, 08:09:14) [Clang 19.0.0
(/home/kraj/work/llvm-project 4152c5f5ae88d8d5fe99d20b525b35f14db2 on
linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sysconfig
>>> sysconfig.get_config_var('SOABI')
'cpython-312-x86_64-linux-gnu'

>
> Also, there is not even a comment above saying why we need to do this.
>

I added the log showing how it does not work, I thought that is showing how
it's not working at all when using musl. If you have better idea what I should
add to commit msg to make it better, let me know I will send a v2.

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

Reply via email to