Jumping in to note that the python3native patch mentioned above worked for
us (removing the env var). We did not test any target packages.

-Glenn


On Fri, Nov 13, 2020 at 5:45 AM Alexander Kanavin <alex.kana...@gmail.com>
wrote:

> I think I have to go back to my original patch. Using a wrapper for native
> python is problematic for two reasons:
> - thwarts target python build as target python needs native python, but
> *without* the environment variable set
> - adds an unconditional dependency on target python to a few items, even
> if those items only want to run some scripts
>
> I think we're better off separating the two classes: python3native for
> those who need native python, python3targetconfig for those
> who also want to use target python config.
>
> Alex
>
> On Thu, 12 Nov 2020 at 21:02, Alexander Kanavin via lists.openembedded.org
> <alex.kanavin=gmail....@lists.openembedded.org> wrote:
>
>> Right, I think this is better too. The only problematic bit is that
>> situations where target _sysconfigdata is needed can produce really
>> unhelpful errors (e.g. meson hides this behind a generic 'python is not
>> working' message), and it is not obvious that these errors can be resolved
>> by adding a target python dependency.
>>
>> Alex
>>
>> On Thu, 12 Nov 2020 at 20:39, Martin Jansa <martin.ja...@gmail.com>
>> wrote:
>>
>>> Do you remember kergoth's take on this? From "[RFC PATCH] devtool:
>>> remove _PYTHON_SYSCONFIGDATA_NAME to fix do_unpack" thread and
>>> https://lists.yoctoproject.org/g/yocto/topic/74637733#49571
>>>
>>>
>>> https://github.com/openembedded/openembedded-core/compare/master...kergoth:python-sysconfig
>>>
>>> I think wrapper is a bit better, because it will also catch cases where
>>> host python3 is being called from e.g. do_compile (e.g. by full path -
>>> after debugging ROS catkin in last few days, some components are really
>>> creative how to find their preferred python) even when python3native is
>>> inherited. And also doesn't need another bbclass to be inherited in cases
>>> where target _sysconfigdata is really needed.
>>>
>>> On Thu, Nov 12, 2020 at 8:26 PM Alexander Kanavin <
>>> alex.kana...@gmail.com> wrote:
>>>
>>>> Thanks - I have a preliminary fix here (needs thorough testing):
>>>>
>>>> http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/commit/?h=akanavin/package-version-updates&id=d6b6a6f67cc967c0ead6dbab3c95435b7ca85246
>>>>
>>>> Alex
>>>>
>>>> On Thu, 12 Nov 2020 at 19:46, Glenn Stroz <gst...@uber.com> wrote:
>>>>
>>>>> Hi Alex,
>>>>>
>>>>> We have a custom fetcher implemented as a bbclass that calls out to a
>>>>> python script.  That is why we see these issues with native. Here's a
>>>>> sample bbclass and recipe that reproduces the issue:
>>>>>
>>>>> impfail.bbclass
>>>>> ```
>>>>> inherit python3native
>>>>>
>>>>> do_unpack[noexec] = "1"
>>>>> do_patch[noexec] = "1"
>>>>> do_install[noexec] = "1"
>>>>>
>>>>> do_fetch() {
>>>>>     python3 -c "import pydoc"
>>>>> }
>>>>> ```
>>>>>
>>>>> classrunner_0.0.1.bb
>>>>> ```
>>>>> SUMMARY = "Python runner"
>>>>> LICENSE = "CLOSED"
>>>>> inherit impfail
>>>>> ```
>>>>>
>>>>> -Glenn
>>>>>
>>>>>
>>>>> On Thu, Nov 12, 2020 at 4:52 AM Alexander Kanavin <
>>>>> alex.kana...@gmail.com> wrote:
>>>>>
>>>>>> A quick fix may be to add a target python3 dependency to your recipe,
>>>>>> yes ugly, but I can't figure out how to provide target python 
>>>>>> configuration
>>>>>> to native python used in the context of building target recipes 
>>>>>> otherwise.
>>>>>>
>>>>>> Alex
>>>>>>
>>>>>>
>>>>>> On Thu, 12 Nov 2020 at 10:49, Alexander Kanavin <
>>>>>> alex.kana...@gmail.com> wrote:
>>>>>>
>>>>>>> On Thu, 12 Nov 2020 at 02:23, Glenn Stroz via lists.openembedded.org
>>>>>>> <gstroz=uber....@lists.openembedded.org> wrote:
>>>>>>>
>>>>>>>> We've been upgrading our work to Dunfell and have encountered an
>>>>>>>> issue with python3-native.
>>>>>>>>
>>>>>>>> One of our python3-native scripts uses pydoc and that in turn
>>>>>>>> eventually pulls in python's sysconfig. However, this is failing to 
>>>>>>>> import
>>>>>>>> with the following stack trace:
>>>>>>>>
>>>>>>>> ```
>>>>>>>>     import pydoc
>>>>>>>>   File
>>>>>>>> "/home/gstroz/.cache/avos/_avos_gstroz/avos/yocto-dunfell/build/tmp/work/corei7-64-poky-linux/ebpf-daemon/2020.282.17-r0/recipe-sysroot-native/usr/lib/python3.8/pydoc.py",
>>>>>>>> line 366, in <module>
>>>>>>>>     class Doc:
>>>>>>>>   File
>>>>>>>> "/home/gstroz/.cache/avos/_avos_gstroz/avos/yocto-dunfell/build/tmp/work/corei7-64-poky-linux/ebpf-daemon/2020.282.17-r0/recipe-sysroot-native/usr/lib/python3.8/pydoc.py",
>>>>>>>> line 396, in Doc
>>>>>>>>     def getdocloc(self, object,
>>>>>>>> basedir=sysconfig.get_path('stdlib')):
>>>>>>>>   File
>>>>>>>> "/home/gstroz/.cache/avos/_avos_gstroz/avos/yocto-dunfell/build/tmp/work/corei7-64-poky-linux/ebpf-daemon/2020.282.17-r0/recipe-sysroot-native/usr/lib/python3.8/sysconfig.py",
>>>>>>>> line 519, in get_path
>>>>>>>>     return get_paths(scheme, vars, expand)[name]
>>>>>>>>   File
>>>>>>>> "/home/gstroz/.cache/avos/_avos_gstroz/avos/yocto-dunfell/build/tmp/work/corei7-64-poky-linux/ebpf-daemon/2020.282.17-r0/recipe-sysroot-native/usr/lib/python3.8/sysconfig.py",
>>>>>>>> line 509, in get_paths
>>>>>>>>     return _expand_vars(scheme, vars)
>>>>>>>>   File
>>>>>>>> "/home/gstroz/.cache/avos/_avos_gstroz/avos/yocto-dunfell/build/tmp/work/corei7-64-poky-linux/ebpf-daemon/2020.282.17-r0/recipe-sysroot-native/usr/lib/python3.8/sysconfig.py",
>>>>>>>> line 172, in _expand_vars
>>>>>>>>     _extend_dict(vars, get_config_vars())
>>>>>>>>   File
>>>>>>>> "/home/gstroz/.cache/avos/_avos_gstroz/avos/yocto-dunfell/build/tmp/work/corei7-64-poky-linux/ebpf-daemon/2020.282.17-r0/recipe-sysroot-native/usr/lib/python3.8/sysconfig.py",
>>>>>>>> line 558, in get_config_vars
>>>>>>>>     _init_posix(_CONFIG_VARS)
>>>>>>>>   File
>>>>>>>> "/home/gstroz/.cache/avos/_avos_gstroz/avos/yocto-dunfell/build/tmp/work/corei7-64-poky-linux/ebpf-daemon/2020.282.17-r0/recipe-sysroot-native/usr/lib/python3.8/sysconfig.py",
>>>>>>>> line 428, in _init_posix
>>>>>>>>     _temp = __import__(name, globals(), locals(),
>>>>>>>> ['build_time_vars'], 0)
>>>>>>>> ModuleNotFoundError: No module named '_sysconfigdata'
>>>>>>>> ```
>>>>>>>>
>>>>>>>> I did a little digging and the following commit seems to reference
>>>>>>>> related work:
>>>>>>>>
>>>>>>>>
>>>>>>>> https://github.com/openembedded/openembedded-core/commit/02714c105426b0d687620913c1a7401b386428b6
>>>>>>>>
>>>>>>>> I see that there is a patch added which adds the following to
>>>>>>>> `sysconfig.py`:
>>>>>>>>
>>>>>>>> ```
>>>>>>>>   if 'STAGING_LIBDIR' in os.environ:
>>>>>>>>
>>>>>>>> sys.path.append(os.environ['STAGING_LIBDIR']+'/python-sysconfigdata')
>>>>>>>> ```
>>>>>>>>
>>>>>>>> However, STAGING_LIBDIR does not contain this path:
>>>>>>>>
>>>>>>>> ```
>>>>>>>> ls
>>>>>>>> /home/gstroz/.cache/avos/_avos_gstroz/avos/yocto-dunfell/build/tmp/work/corei7-64-poky-linux/ebpf-daemon/2020.282.17-r0/recipe-sysroot/usr/lib/python-sysconfigdata
>>>>>>>>
>>>>>>>> ls: cannot access
>>>>>>>> '/home/gstroz/.cache/avos/_avos_gstroz/avos/yocto-dunfell/build/tmp/work/corei7-64-poky-linux/ebpf-daemon/2020.282.17-r0/recipe-sysroot/usr/lib/python-sysconfigdata':
>>>>>>>> No such file or directory
>>>>>>>> ```
>>>>>>>>
>>>>>>>> It appears as if this should really be pointing
>>>>>>>> to STAGING_LIBDIR_NATIVE which does exist:
>>>>>>>>
>>>>>>>> ```
>>>>>>>> ls
>>>>>>>> /home/gstroz/.cache/avos/_avos_gstroz/avos/yocto-dunfell/build/tmp/work/corei7-64-poky-linux/ebpf-daemon/2020.282.17-r0/recipe-sysroot-native/usr/lib/python-sysconfigdata
>>>>>>>> _sysconfigdata.py
>>>>>>>> ```
>>>>>>>>
>>>>>>>> The referenced commit made efforts to combine the native and cross
>>>>>>>> python3 bbclass files into one. However, I think this may be something 
>>>>>>>> that
>>>>>>>> needs to be treated differently.
>>>>>>>>
>>>>>>>> Anyone have any thoughts on how to proceed?
>>>>>>>>
>>>>>>>
>>>>>>> Can you share the exact context where this is happening? Is your
>>>>>>> script coming from a recipe and can you show that recipe?
>>>>>>>
>>>>>>> Alex
>>>>>>>
>>>>>>>
>>>>>>
>>>>
>>>>
>>>>
>> 
>>
>>
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#144547): 
https://lists.openembedded.org/g/openembedded-core/message/144547
Mute This Topic: https://lists.openembedded.org/mt/78197661/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to