Re: [PATCH v3 0/2] Don't create Python bytecode when building the kernel

Andy Shevchenko
2025-04-23T16:31:46Z

On Wed, Apr 23, 2025 at 06:30:48PM +0900, Akira Yokosawa wrote:
> On Tue, 22 Apr 2025 10:57:33 +0300, Andy Shevchenko wrote:
> > On Mon, Apr 21, 2025 at 10:35:29AM -0600, Jonathan Corbet wrote:
> >> Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> writes:

[...]

> >> > Would it be possible to properly support O= and create pyc / pycache
> >> > inside the object/output dir?
> >>
> >> I have to confess, I've been wondering if we should be treating the .pyc
> >> files like we treat .o files or other intermediate products. Rather
> >> than trying to avoid their creation entirely, perhaps we should just be
> >> sure they end up in the right place and are properly cleaned up...?
> >>
> >> To answer Dmitry's question, it seems that setting PYTHONPYCACHEPREFIX
> >> should do the trick?
> >
> > It's not so easy. The Python is written in a way that it thinks it will never
> > runs object files separately from the source. Hence that variable sets only
> > the folder per script as _home_ for the cache. It's completely unusable. They
> > took it wrong. It still can be _painfully_ used, but it will make Makefiles
> > uglier.
>
> But, PYTHONPYCACHEPREFIX can be set as an environment variable.
>
> For example, try:
>
> export PYTHONPYCACHEPREFIX="$HOME/.cache/__pycache__"
>
> Wouldn't it be good enough for you?

Of course not. We have _many_ scripts in python in kernel and having a cache
there for _all_ of them is simply WRONG. You never know what clashes can be
there with two complicated enough scripts which may have same module names,
etc.

--
With Best Regards,
Andy Shevchenko