lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <5a8f0fc7-a2aa-4554-a603-3537d735dc9f@gmail.com>
Date: Thu, 24 Apr 2025 11:07:05 +0900
From: Akira Yokosawa <akiyks@...il.com>
To: Andy Shevchenko <andriy.shevchenko@...el.com>
Cc: airlied@...il.com, corbet@....net, dmitry.baryshkov@....qualcomm.com,
 dri-devel@...ts.freedesktop.org, intel-gfx@...ts.freedesktop.org,
 jani.nikula@...ux.intel.com, joonas.lahtinen@...ux.intel.com,
 linux-doc@...r.kernel.org, linux-kbuild@...r.kernel.org,
 linux-kernel@...r.kernel.org, maarten.lankhorst@...ux.intel.com,
 masahiroy@...nel.org, mchehab+huawei@...nel.org, mripard@...nel.org,
 nathan@...nel.org, nicolas.schier@...ux.dev, rodrigo.vivi@...el.com,
 simona@...ll.ch, tursulin@...ulin.net, tzimmermann@...e.de
Subject: Re: [PATCH v3 0/2] Don't create Python bytecode when building the
 kernel

On Wed, 23 Apr 2025 19:31:36 +0300, Andy Shevchenko wrote:
> 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@....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.
> 

Interesting...

I'm suspecting you replied without having tried the setting...

FYI, this is an excerpt from list of .pyc files under __pycache__ after
building defconfig kernel and "make htmldocs"; and running

$ find . -name *.pyc" -print" under ~/.cache/__pycache__
---------------------------------------------------------------------
./home/.../git/linux/scripts/lib/kdoc/kdoc_files.cpython-312.pyc
./home/.../git/linux/scripts/lib/kdoc/kdoc_parser.cpython-312.pyc
./home/.../git/linux/scripts/lib/kdoc/kdoc_re.cpython-312.pyc
./home/.../git/linux/scripts/lib/kdoc/kdoc_output.cpython-312.pyc
[...]
./usr/lib/python3.12/xml/__init__.cpython-312.pyc
./usr/lib/python3.12/xml/parsers/expat.cpython-312.pyc
./usr/lib/python3.12/xml/parsers/__init__.cpython-312.pyc
./usr/lib/python3.12/xml/etree/ElementPath.cpython-312.pyc
./usr/lib/python3.12/xml/etree/__init__.cpython-312.pyc
./usr/lib/python3.12/xml/etree/cElementTree.cpython-312.pyc
./usr/lib/python3.12/xml/etree/ElementTree.cpython-312.pyc
./usr/lib/python3.12/mimetypes.cpython-312.pyc
[...]
./usr/lib/python3/dist-packages/sphinx/deprecation.cpython-312.pyc
./usr/lib/python3/dist-packages/sphinx/highlighting.cpython-312.pyc
./usr/lib/python3/dist-packages/sphinx/pycode/ast.cpython-312.pyc
./usr/lib/python3/dist-packages/sphinx/pycode/__init__.cpython-312.pyc
./usr/lib/python3/dist-packages/sphinx/pycode/parser.cpython-312.pyc
./usr/lib/python3/dist-packages/sphinx/config.cpython-312.pyc
[...]
./home/.../sphinx-WIP/lib/python3.12/site-packages/sphinx/deprecation.cpython-312.pyc
./home/.../sphinx-WIP/lib/python3.12/site-packages/sphinx/highlighting.cpython-312.pyc
./home/.../sphinx-WIP/lib/python3.12/site-packages/sphinx/pycode/ast.cpython-312.pyc
./home/.../sphinx-WIP/lib/python3.12/site-packages/sphinx/pycode/__init__.cpython-312.pyc
./home/.../sphinx-WIP/lib/python3.12/site-packages/sphinx/pycode/parser.cpython-312.pyc
./home/.../sphinx-WIP/lib/python3.12/site-packages/sphinx/config.cpython-312.pyc
[...]
-------------------------------------------------------------------------

As you see, each of them are stored at a path corresponding to its original
.py file.  The final part of the excerpt came from me running in-development
Sphinx in a python venv with the same PYTHONPYCACHEPREFIX setting.

I don't see any possibility of clashes as you mentioned above, quoting again:

>                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.

Or my imagination might be too limited to see your point ...

Regards,
Akira


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ