All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Böszörményi Zoltán" <zboszor@gmail.com>
To: Bruce Ashfield <bruce.ashfield@gmail.com>
Cc: openembedded-core@lists.openembedded.org,
	Bartosz Golaszewski <brgl@kernel.org>,
	Trevor Gamblin <tgamblin@baylibre.com>,
	Alexander Kanavin <alex.kanavin@gmail.com>
Subject: Re: [OE-core] [RFC][PATCH 00/14] Support Python freethreading
Date: Thu, 26 Mar 2026 06:41:09 +0100	[thread overview]
Message-ID: <3bf2c312-1d58-4ef5-acbf-72735ddf9e09@gmail.com> (raw)
In-Reply-To: <18A04D0ADBD32036.57592@lists.openembedded.org>

2026. 03. 26. 6:29 keltezéssel, Zoltan Boszormenyi via lists.openembedded.org írta:
> 2026. 03. 25. 15:17 keltezéssel, Bruce Ashfield írta:
>>
>>
>> On Wed, Mar 25, 2026 at 9:51 AM Böszörményi Zoltán <zboszor@gmail.com> wrote:
>>
>>     2026. 03. 25. 14:17 keltezéssel, Bruce Ashfield írta:
>>     >
>>     >
>>     > On Wed, Mar 25, 2026 at 9:13 AM Böszörményi Zoltán <zboszor@gmail.com> wrote:
>>     >
>>     >     2026. 03. 25. 14:01 keltezéssel, Bruce Ashfield írta:
>>     >     >
>>     >     >
>>     >     > On Wed, Mar 25, 2026 at 7:31 AM Zoltan Boszormenyi via
>>     lists.openembedded.org <http://lists.openembedded.org>
>>     >     <http://lists.openembedded.org>
>>     >     > <http://lists.openembedded.org> <zboszor=gmail.com@lists.openembedded.org>
>>     wrote:
>>     >     >
>>     >     >     This patchset allows turning on Python freethreading by using
>>     >     >     a new DISTRO_FEATURES setting:
>>     >     >
>>     >     >     DISTRO_FEATURES += "python_freethreading"
>>     >     >
>>     >     >     and optionally:
>>     >     >
>>     >     >     DISTRO_FEATURES_NATIVE += "python_freethreading"
>>     >     >
>>     >     >     The change to python3-dir.bbclass is crucial, as all python module
>>     >     >     build helper classes rely on it.
>>     >     >
>>     >     >     I also added native variants of some settings because another
>>     >     >     series against meta-openembedded is needed to complete this one.
>>     >     >     In that, the change to the fontforge recipe relies on the native
>>     >     >     setting for setting BUILD_LDFLAGS.
>>     >     >
>>     >     >
>>     >     > Looking at those other patches in the series, they don't seem to
>>     >     > be conditional on the distro feature.
>>     >     >
>>     >     > Are those changes valid for a build with and without freethreading ?
>>     >
>>     >     Yes!
>>     >
>>     >     The main change is in python3-dir.bbclass, and the recipe tweaks
>>     >     are just adaptations to the fact that only ${PYTHON_DIR} is needed,
>>     >     not ${PYTHON_DIR}${PYTHON_ABI} from that point.
>>     >
>>     >     I was thinking that the introductory mail stressed this enough.
>>     >
>>     >
>>     > Obviously not :)
>>
>>     Obviously. :)
>>
>>     > I didn't get that impression at all from reading the introductory
>>     > message or looking at the patches themselves.
>>     >
>>     > You have the overview knowledge of the feature, why it is
>>     > useful, how it impacts existing recipes, how the migration would
>>     > work, what is the compatibility, etc.
>>
>>     I think the Python 3.14 release notes has enough details.
>>     See also https://www.phoronix.com/news/Python-3.14
>>
>>
>> The information needs to be distilled into your commit, not left
>> to the patch reader to go off and read release notes. That's the
>> point I'm trying to make.
>>
>>
>>
>>     With the two series I sent, only a single recipe is left (cmpi-bindings)
>>     in openembedded-core and meta-openembedded that uses
>>     the PYTHON_ABI setting explicitly.
>>
>>     Migration (of python scripts) should not be a problem.
>>     If it worked with 3.14 as is, it works with freethreading enabled.
>>
>>     Compatibility is poor for a lot of modules, that clearly spell this out
>>     in their pyproject.toml or PKG-INFO:
>>
>>          "Programming Language :: Python :: Free Threading :: 1 - Unstable"
>>
>>     or something not quite production level support.
>>     It's still experimental for 3rd party modules, despite being officially
>>     supported for the interpreter and built-in modules in 3.14.
>>
>>     This is the reason this was an RFC series.
>>
>>     Anyway, the reason I was experimenting with this was that
>>     with heavily threaded python code, an import storm can cause
>>     a crash in 3.12.11 or the manually updated 3.13.12 in Yocto 5.3 in
>>     importlib._bootstrap according to the backtrace.
>>
>>     I would like to see if Python 3.14 (with and without freethreading)
>>     fixes such crashes.
>>
>>
>> Definitely worth putting in the RFC as well, the motivation for
>> the change matters!
>>
>>
>>     > The patch reader doesn't, so that all needs to be clearly
>>     > supplied.
>>
>>     Maybe next time for v2 after I have a complete image
>>     successfully built with freethreading enabled.
>>
>
> No such luck.
>
> lldb in clang won't build because its swig source wants to play games
> with PyObject->ob_refcnt directly instead of using the proper macros.
> That struct member does not exist when freethreading is enabled.
> In fact, the whole struct _object (the PyObject implementation)
> is different when freethreading is enabled.
>
> The llvm sources, even in the newly released 22.x and main
> do not have any reference to the Py_GIL_DISABLED macro,
> so as a whole, it does not support Python freethreading.
>
> I can revisit this series a few year later when llvm adds the
> necessary support, which can be backported to older clang
> versions in my meta-clang-revival.
>
> This concludes my little experiment.
>
> That being said, I think the cleanup in the recipes is a good direction.
> PYTHON_DIR should include PYTHON_ABI in python3-dir.bbclass
> because build helper classes rely on it. Then PYTHON_DIR must be
> used consistently in recipes that need it, even if PYTHON_ABI stays empty.

Which means I can re-send the whole series as a cleanup
or preparation series without the DISTRO_FEATURES enablement
part in python3-dir.bbclass.

That one can stay RFC as a standalone patch, separate from
the cleanup series.

I will re-test my build without enabling freethreading
before I would do that.

>
>>
>> Ack'd
>>
>> Bruce
>>
>>
>>     >
>>     > Bruce
>>     >
>>     >
>>     >
>>     >     FWIW, less than 30 recipes was spelling the latter out in
>>     >     openembedded-core and meta-openembedded combined.
>>     >
>>     >     > That's the type of information, along with the benefits of enabling
>>     >     > this would be information expected in a 0/N introductory patch.
>>     >     >
>>     >     > Cheers,
>>     >     >
>>     >     > Bruce
>>     >     >
>>     >     >
>>     >     >     All of the changes included here were successfully build tested,
>>     >     >     except for the gdb-cross-canadian change. That one failed, but
>>     >     >     it's included for completeness.
>>     >     >
>>     >     >     Quite a few of python modules were build tested for native and
>>     >     >     target builds, including python3-pytorch from my meta-python-ai
>>     >     >     with reduced RDEPENDS because e.g. python3-onnx there failed
>>     >     >     to build with freethreading enabled.
>>     >     >
>>     >     >     All in all, this series at least allows to get things going.
>>     >     >     Though maybe not for Yocto 6.0, as it's quite late.
>>     >     >
>>     >     >     Best regards,
>>     >     >     Zoltán Böszörményi
>>     >     >
>>     >     >
>>     >     >
>>     >     >
>>     >     >
>>     >     > --
>>     >     > - Thou shalt not follow the NULL pointer, for chaos and madness await thee
>>     at its end
>>     >     > - "Use the force Harry" - Gandalf, Star Trek II
>>     >     >
>>     >
>>     >
>>     >
>>     > --
>>     > - Thou shalt not follow the NULL pointer, for chaos and madness await thee at its 
>> end
>>     > - "Use the force Harry" - Gandalf, Star Trek II
>>     >
>>
>>
>>
>> -- 
>> - Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end
>> - "Use the force Harry" - Gandalf, Star Trek II
>>
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#233951): https://lists.openembedded.org/g/openembedded-core/message/233951
> Mute This Topic: https://lists.openembedded.org/mt/118499141/3617728
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [zboszor@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>



      parent reply	other threads:[~2026-03-26  5:41 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-25 11:24 [RFC][PATCH 00/14] Support Python freethreading Zoltán Böszörményi
2026-03-25 11:24 ` [RFC][PATCH 01/14] python3-dir.bbclass: Support python freethreading Zoltán Böszörményi
2026-03-25 11:24 ` [RFC][PATCH 02/14] python3: Adapt recipe to freethreading Zoltán Böszörményi
2026-03-25 11:24 ` [RFC][PATCH 03/14] python3native.bbclass: Fix settings Zoltán Böszörményi
2026-03-25 11:24 ` [RFC][PATCH 04/14] python_pyo3.bbclass: Pass ABI flag and PYTHON_MAINVERSION Zoltán Böszörményi
2026-03-25 11:24 ` [RFC][PATCH 05/14] clang: Use PYTHON_MAINVERSION for python module versioning Zoltán Böszörményi
2026-03-25 11:24 ` [RFC][PATCH 06/14] gdb, gdb-cross-canadian: Fix settings for python freethreading Zoltán Böszörményi
2026-03-25 11:24 ` [RFC][PATCH 07/14] boost: " Zoltán Böszörményi
2026-03-25 11:24 ` [RFC][PATCH 08/14] lttng-tools: Simplify setting PYTHON_INCLUDE Zoltán Böszörményi
2026-03-25 11:24 ` [RFC][PATCH 09/14] lttng-ust: " Zoltán Böszörményi
2026-03-25 11:24 ` [RFC][PATCH 10/14] libcap-ng-python: Use PYTHON_DIR for FILES Zoltán Böszörményi
2026-03-25 11:24 ` [RFC][PATCH 11/14] hwlatdetect: Use PYTHON_DIR to support python freethreading Zoltán Böszörményi
2026-03-25 11:24 ` [RFC][PATCH 12/14] rpm: Support Python freethreading Zoltán Böszörményi
2026-03-25 11:24 ` [RFC][PATCH 13/14] xcb-proto: " Zoltán Böszörményi
2026-03-25 11:24 ` [RFC][PATCH 14/14] libxcb: " Zoltán Böszörményi
2026-03-25 12:58 ` [RFC][PATCH 00/14] " Alexander Kanavin
2026-03-25 13:08   ` Böszörményi Zoltán
2026-03-25 13:01 ` [OE-core] " Bruce Ashfield
2026-03-25 13:13   ` Böszörményi Zoltán
2026-03-25 13:17     ` Bruce Ashfield
2026-03-25 13:51       ` Böszörményi Zoltán
2026-03-25 14:17         ` Bruce Ashfield
2026-03-26  5:29           ` Böszörményi Zoltán
     [not found]           ` <18A04D0ADBD32036.57592@lists.openembedded.org>
2026-03-26  5:41             ` Böszörményi Zoltán [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3bf2c312-1d58-4ef5-acbf-72735ddf9e09@gmail.com \
    --to=zboszor@gmail.com \
    --cc=alex.kanavin@gmail.com \
    --cc=brgl@kernel.org \
    --cc=bruce.ashfield@gmail.com \
    --cc=openembedded-core@lists.openembedded.org \
    --cc=tgamblin@baylibre.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.