linux-doc.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
To: Akira Yokosawa <akiyks@gmail.com>
Cc: Andy Shevchenko <andriy.shevchenko@intel.com>,
	airlied@gmail.com, corbet@lwn.net,
	dmitry.baryshkov@oss.qualcomm.com,
	dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
	jani.nikula@linux.intel.com, joonas.lahtinen@linux.intel.com,
	linux-doc@vger.kernel.org, linux-kbuild@vger.kernel.org,
	linux-kernel@vger.kernel.org, maarten.lankhorst@linux.intel.com,
	masahiroy@kernel.org, mripard@kernel.org, nathan@kernel.org,
	nicolas.schier@linux.dev, rodrigo.vivi@intel.com,
	simona@ffwll.ch, tursulin@ursulin.net, tzimmermann@suse.de
Subject: Re: [PATCH v3 0/2] Don't create Python bytecode when building the kernel
Date: Thu, 24 Apr 2025 15:26:48 +0800	[thread overview]
Message-ID: <20250424152648.0979054f@sal.lan> (raw)
In-Reply-To: <5a8f0fc7-a2aa-4554-a603-3537d735dc9f@gmail.com>

Em Thu, 24 Apr 2025 11:07:05 +0900
Akira Yokosawa <akiyks@gmail.com> escreveu:

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

I didn't test it, but it sounds good enough for me. Could you please send
us a patch on the top of:

	https://lore.kernel.org/linux-doc/cover.1745453655.git.mchehab+huawei@kernel.org/T/#t

for us to test it? The idea is to set PYTHONPYCACHEPREFIX only when O=
is used.

Regards,
Mauro

  reply	other threads:[~2025-04-24  7:27 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-04-16  7:51 [PATCH v3 0/2] Don't create Python bytecode when building the kernel Mauro Carvalho Chehab
2025-04-16  7:51 ` [PATCH v3 1/2] scripts/kernel-doc.py: don't create *.pyc files Mauro Carvalho Chehab
2025-04-16  8:34   ` Jani Nikula
2025-04-16  9:19     ` Mauro Carvalho Chehab
2025-04-16  9:23       ` Andy Shevchenko
2025-04-16  9:29       ` Mauro Carvalho Chehab
2025-04-16  9:36         ` Andy Shevchenko
2025-04-17  6:31           ` Mauro Carvalho Chehab
2025-04-16  9:38         ` Mauro Carvalho Chehab
2025-04-16  9:41           ` Andy Shevchenko
2025-04-18 23:51             ` Mauro Carvalho Chehab
2025-04-16  9:39         ` Andy Shevchenko
2025-04-17  7:58   ` kernel test robot
2025-04-18 18:12   ` kernel test robot
2025-04-16  7:51 ` [PATCH v3 2/2] .gitignore: ignore Python compiled bytecode Mauro Carvalho Chehab
2025-04-16  9:18   ` Andy Shevchenko
2025-04-21  8:38 ` [PATCH v3 0/2] Don't create Python bytecode when building the kernel Dmitry Baryshkov
2025-04-21 16:35   ` Jonathan Corbet
2025-04-22  7:57     ` Andy Shevchenko
2025-04-23  9:30       ` Akira Yokosawa
2025-04-23 16:31         ` Andy Shevchenko
2025-04-24  2:07           ` Akira Yokosawa
2025-04-24  7:26             ` Mauro Carvalho Chehab [this message]
2025-04-24  7:44               ` Mauro Carvalho Chehab
2025-04-24  9:28             ` Andy Shevchenko
2025-04-24  0:31     ` Mauro Carvalho Chehab

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=20250424152648.0979054f@sal.lan \
    --to=mchehab+huawei@kernel.org \
    --cc=airlied@gmail.com \
    --cc=akiyks@gmail.com \
    --cc=andriy.shevchenko@intel.com \
    --cc=corbet@lwn.net \
    --cc=dmitry.baryshkov@oss.qualcomm.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=jani.nikula@linux.intel.com \
    --cc=joonas.lahtinen@linux.intel.com \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=masahiroy@kernel.org \
    --cc=mripard@kernel.org \
    --cc=nathan@kernel.org \
    --cc=nicolas.schier@linux.dev \
    --cc=rodrigo.vivi@intel.com \
    --cc=simona@ffwll.ch \
    --cc=tursulin@ursulin.net \
    --cc=tzimmermann@suse.de \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).