From: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
To: Jonathan Corbet <corbet@lwn.net>
Cc: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>,
Linux Doc Mailing List <linux-doc@vger.kernel.org>,
linux-kernel@vger.kernel.org,
Andy Shevchenko <andriy.shevchenko@intel.com>,
David Airlie <airlied@gmail.com>,
Jani Nikula <jani.nikula@linux.intel.com>,
Joonas Lahtinen <joonas.lahtinen@linux.intel.com>,
Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
Masahiro Yamada <masahiroy@kernel.org>,
Maxime Ripard <mripard@kernel.org>,
Nathan Chancellor <nathan@kernel.org>,
Nicolas Schier <nicolas.schier@linux.dev>,
Rodrigo Vivi <rodrigo.vivi@intel.com>,
Simona Vetter <simona@ffwll.ch>,
Thomas Zimmermann <tzimmermann@suse.de>,
Tvrtko Ursulin <tursulin@ursulin.net>,
dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
linux-kbuild@vger.kernel.org
Subject: Re: [PATCH v3 0/2] Don't create Python bytecode when building the kernel
Date: Thu, 24 Apr 2025 08:31:25 +0800 [thread overview]
Message-ID: <20250424083125.1c8a0d24@sal.lan> (raw)
In-Reply-To: <87bjspzd4e.fsf@trenco.lwn.net>
Em Mon, 21 Apr 2025 10:35:29 -0600
Jonathan Corbet <corbet@lwn.net> escreveu:
> Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> writes:
>
> > On Wed, Apr 16, 2025 at 03:51:03PM +0800, Mauro Carvalho Chehab wrote:
> >>
> >> As reported by Andy, the Kernel build system runs kernel-doc script for DRM,
> >> when W=1. Due to Python's normal behavior, its JIT compiler will create
> >> a bytecode and store it under scripts/lib/*/__pycache__.
> >>
> >> As one may be using O= and even having the sources on a read-only mount
> >> point, disable its creation during build time.
> >
> > 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...?
I sent a v4 of the series disabling *.pyc creation, basically placing
*.pyc at the right place on .gitignore.
That's said, I agree that the best would be to use PYTHONPYCACHEPREFIX,
placing the intermediate products altogether with O= results. There is
however something we need to deal with. To follow our building system
to the letter, if we have *.py files at scripts/lib/kdoc, the intermediate
files should be at: either:
- {outdir}/scripts/lib/kdoc; or:
- {outdir}/scripts/lib/kdoc/__pycache__
The same shall happen for all other places including Documentation/sphinx.
In the specific case of Sphinx extensions, it would mean that it would
produce *.pyc for both scripts/lib/*/*.py and Documentation/sphinx.
No idea how to make Python to do that without doing some horrible tricks.
An alternate approach would be to store all of them at the same place, like:
- {outdir}/__pycache__
The problem is that, if we end having two scripts with the same name, and
using PYTHONPYCACHEPREFIX would place both of them at the same place, we'll
have troubles.
IMO, let's apply this series first, and then see if we can replace patch 3
with another one using PYTHONPYCACHEPREFIX, after we're sure that there's
a way for it to do the right thing.
>
> To answer Dmitry's question, it seems that setting PYTHONPYCACHEPREFIX
> should do the trick?
Regards,
Mauro
prev parent reply other threads:[~2025-04-24 0:31 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
2025-04-24 7:44 ` Mauro Carvalho Chehab
2025-04-24 9:28 ` Andy Shevchenko
2025-04-24 0:31 ` Mauro Carvalho Chehab [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=20250424083125.1c8a0d24@sal.lan \
--to=mchehab+huawei@kernel.org \
--cc=airlied@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).