On Fri Dec 19, 2025 at 2:47 PM CET, Trevor Gamblin wrote:
> Compared to v1
> (https://lists.openembedded.org/g/openembedded-core/message/227955):
>
> - Drop python3-bcrypt upgrade, as someone else has submitted that;
> - Drop rpm patch to manually override Python3_SITEARCH with a patch, as that 
> was
>   masking the real issue (see below);
> - Add a new patch to fix python3targetconfig by exporting 
> _PYTHON_PROJECT_BASE,
>   which Python's sysconfig looks for (as of 3.14.0) when doing
>   cross-compilation. The absence of this was resulting in packages like rpm
>   finding paths for the native interpreter when making use of sysconfig, when
>   they needed the host values.
>
> Note that I've dropped my own version of the python3-bcrypt upgrade, but I
> tested this patch series on top of the other one that was submitted, as
> otherwise the ptest images would break during build (version mismatch errors
> around PyO3, which is fixed with the bcrypt upgrade).
>
> v1 details below.
>
> This supersedes a previous series sent, which only did the 3.14.0 upgrade.
>
> Compared to the first series
> (https://lists.openembedded.org/g/openembedded-core/message/227310), I've
> done the following:
>
> - Added a commit for including the '_py_warnings' and 'annotationlib' modules 
> in
>   python3-core;
> - Adds the python 3.14.2 upgrade;
> - Removed commits for adding python3-misc to RDEPENDS for python3-pytest and
>   python3-jsonpointer, as these are now solved by a new patch to add new 
> modules
>   to python3-core in the manifest. Doing it this way was fragile in the sense
>   that there were many other recipes needing this same fix that testing didn't
>   easily catch, and it doesn't make sense to add python3-misc to recipe 
> RDEPENDS
>   just because (for example) python3-logging (another package split) is trying
>   to make use of warnings, but can't find the right module;
> - Modified the rpm commit to apply a patch (submitted upstream) to fix
>   CMakeLists.txt, rather than a do_configure prepend;
> - Fixed the Python 3.14.0 upgrade commit so that one of the patches we carry 
> to
>   skip tests doesn't include duplicate calls to the relevant skip functions.
>
> I've kept the upgrades from 3.13.9 to 3.14.0 and 3.14.0 to 3.14.2 separate to
> reflect separate testing and let people review those changelogs individually 
> if
> desired.
>
> Trevor Gamblin (5):
>   python3: upgrade 3.13.9 -> 3.14.0
>   python3targetconfig: export _PYTHON_PROJECT_BASE
>   python_pep517: add --prefix to nativepython3 call
>   python3: upgrade 3.14.0 -> 3.14.2
>   python3: add _py_warnings, annotationlib to core
>

Hi Trevor,

Thanks for the new version. It looks like we are having issues with
maturin and click.

Testing 'maturin develop' requires Rust cross-canadian in the SDK
Traceback (most recent call last):
  File 
"/srv/pokybuild/yocto-worker/qemux86/build/layers/openembedded-core/meta/lib/oeqa/sdk/cases/maturin.py",
 line 30, in test_maturin_list_python
    self.assertIn(expected, output)
    ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
AssertionError: '3.14 at 
/srv/pokybuild/yocto-worker/qemux86/build/build/tmp/work/qemux86-poky-linux/core-image-minimal/1.0/testsdkext/buildtools/sysroots/x86_64-pokysdk-linux/usr/bin/python3'
 not found in '🐍 1 python interpreter found:\n - CPython 3.13 at 
/srv/pokybuild/yocto-worker/qemux86/build/buildtools/sysroots/x86_64-pokysdk-linux/usr/bin/python3.13\n'
...
RESULTS - maturin.MaturinTest.test_maturin_list_python: FAILED (3.57s)

https://autobuilder.yoctoproject.org/valkyrie/#/builders/30/builds/2876
https://autobuilder.yoctoproject.org/valkyrie/#/builders/36/builds/2900
https://autobuilder.yoctoproject.org/valkyrie/#/builders/45/builds/837

AssertionError:
Failed ptests:
{'python3-click': 'START: ptest-runner\n'
                  '2025-12-21T20:15\n'
                  '\n'
                  '../../python3.14/ast.py:620: in unparse\n'
                  '    unparser = _Unparser()\n'
                  '               ^^^^^^^^^\n'
                  "E   NameError: name '_Unparser' is not defined\n"
                  '\n'
                  'During handling of the above exception, another exception '
                  'occurred:\n'
                  '../../python3.14/site-packages/pluggy/_hooks.py:512: in '
                  '__call__\n'
                  '    return self._hookexec(self.name, '
                  'self._hookimpls.copy(), kwargs, firstresult)\n'
                  '           '
                  
'^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n'
                  '../../python3.14/site-packages/pluggy/_manager.py:120: in '
                  '_hookexec\n'
                  '    return self._inner_hookexec(hook_name, methods, kwargs, '
                  'firstresult)\n'
                  '           '
                  
'^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n'
                  '../../python3.14/site-packages/_pytest/python.py:240: in '
                  'pytest_pycollect_makeitem\n'
                  '    return list(collector._genfunctions(name, obj))\n'
                  '           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n'
                  '../../python3.14/site-packages/_pytest/python.py:448: in '
                  '_genfunctions\n'
                  '    definition = FunctionDefinition.from_parent(self, '
                  'name=name, callobj=funcobj)\n'
                  '                 '
                  
'^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n'
                  '../../python3.14/site-packages/_pytest/python.py:1625: in '
                  'from_parent\n'
                  '    return super().from_parent(parent=parent, **kw)\n'
                  '           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n'
                  '../../python3.14/site-packages/_pytest/nodes.py:233: in '
                  'from_parent\n'
                  '    return cls._create(parent=parent, **kw)\n'
                  '           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n'
                  '../../python3.14/site-packages/_pytest/nodes.py:110: in '
                  '_create\n'
                  '    return super().__call__(*k, **kw)  # type: '
                  'ignore[no-any-return,misc]\n'
                  '           ^^^^^^^^^^^^^^^^^^^^^^^^^^\n'
                  '../../python3.14/site-packages/_pytest/python.py:1616: in '
                  '__init__\n'
                  '    fixtureinfo = fm.getfixtureinfo(self, self.obj, '
                  'self.cls)\n'
                  '                  '
                  '^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n'
                  '../../python3.14/site-packages/_pytest/fixtures.py:1565: in '
                  'getfixtureinfo\n'
                  '    argnames = getfuncargnames(func, name=node.name, '
                  'cls=cls)\n'
                  '               '
                  '^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n'
                  '../../python3.14/site-packages/_pytest/compat.py:136: in '
                  'getfuncargnames\n'
                  '    parameters = signature(function).parameters.values()\n'
                  '                 ^^^^^^^^^^^^^^^^^^^\n'
                  '../../python3.14/site-packages/_pytest/compat.py:70: in '
                  'signature\n'
                  '    return inspect.signature(obj, '
                  'annotation_format=Format.STRING)\n'
                  '           '
                  '^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n'
                  '../../python3.14/inspect.py:3321: in signature\n'
                  '    return Signature.from_callable(obj, '
                  'follow_wrapped=follow_wrapped,\n'
                  '../../python3.14/inspect.py:3036: in from_callable\n'
                  '    return _signature_from_callable(obj, sigcls=cls,\n'
                  '../../python3.14/inspect.py:2511: in '
                  '_signature_from_callable\n'
                  '    return _signature_from_function(sigcls, obj,\n'
                  '../../python3.14/inspect.py:2334: in '
                  '_signature_from_function\n'
                  '    annotations = get_annotations(func, globals=globals, '
                  'locals=locals, eval_str=eval_str,\n'
                  '../../python3.14/annotationlib.py:981: in get_annotations\n'
                  '    ann = _get_and_call_annotate(obj, format)\n'
                  '          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n'
                  '../../python3.14/annotationlib.py:1112: in '
                  '_get_and_call_annotate\n'
                  '    ann = call_annotate_function(annotate, format, '
                  'owner=obj)\n'
                  '          '
                  '^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n'
                  '../../python3.14/annotationlib.py:750: in '
                  'call_annotate_function\n'
                  '    key: _stringify_single(val)\n'
                  '         ^^^^^^^^^^^^^^^^^^^^^^\n'
                  '../../python3.14/annotationlib.py:883: in '
                  '_stringify_single\n'
                  '    return repr(anno)\n'
                  '           ^^^^^^^^^^\n'
                  '../../python3.14/annotationlib.py:487: in __repr__\n'
                  '    return ast.unparse(self.__ast_node__)\n'
                  '           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n'
                  '../../python3.14/ast.py:622: in unparse\n'
                  '    from _ast_unparse import Unparser as _Unparser\n'
                  "E   ModuleNotFoundError: No module named '_ast_unparse'\n"
                  'ERROR: '
                  
'tests/test_shell_completion.py:tests/test_shell_completion.py\n'
                  
'============================================================================\n'
                  'Testsuite summary\n'
                  '# TOTAL: 1\n'
                  '# PASS: 0\n'
                  '# SKIP: 0\n'
                  '# XFAIL: 0\n'
                  '# FAIL: 0\n'
                  '# XPASS: 0\n'
                  '# ERROR: 1\n'
                  '\n'
                  'ERROR: Exit status is 2\n'
                  'DURATION: 28\n'}

ptests which had no test results:
['python3-click']

https://autobuilder.yoctoproject.org/valkyrie/#/builders/56/builds/860
https://autobuilder.yoctoproject.org/valkyrie/#/builders/61/builds/2751
https://autobuilder.yoctoproject.org/valkyrie/#/builders/73/builds/2794

Ptest logs can be found here:

http://valkyrie.yocto.io/pub/non-release/20251221-102/testresults/qemuriscv64-ptest/core-image-ptest-python3-click/
http://valkyrie.yocto.io/pub/non-release/20251221-102/testresults/qemuarm64-ptest/core-image-ptest-python3-click/
http://valkyrie.yocto.io/pub/non-release/20251221-102/testresults/qemux86-64-ptest/core-image-ptest-python3-click/

Can you have a look at these failures?

Thanks,
Mathieu

-- 
Mathieu Dubois-Briand, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

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

Reply via email to