* [PATCH v3 1/4] docs: Makefile: get rid of KERNELDOC_CONF env variable
2025-04-18 23:50 [PATCH v3 0/4] Don't create Python bytecode when building the kernel Mauro Carvalho Chehab
@ 2025-04-18 23:50 ` Mauro Carvalho Chehab
2025-04-18 23:50 ` [PATCH v3 2/4] Makefile: move KERNELDOC macro to the main Makefile Mauro Carvalho Chehab
` (3 subsequent siblings)
4 siblings, 0 replies; 9+ messages in thread
From: Mauro Carvalho Chehab @ 2025-04-18 23:50 UTC (permalink / raw)
To: Linux Doc Mailing List
Cc: Mauro Carvalho Chehab, Jonathan Corbet, linux-kernel
Despite its name, what's there is a set of Sphinx arguments that
are passed to sphinx/kerneldoc.py:
- kerneldoc_srctree: location of the source tree;
- kerneldoc_bin: external script to excecute kernel-doc
Drop it, and just place the values at the already-existing
ALLSPHINXOPTS variable.
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
---
Documentation/Makefile | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/Documentation/Makefile b/Documentation/Makefile
index c022b97c487e..a006c7681412 100644
--- a/Documentation/Makefile
+++ b/Documentation/Makefile
@@ -61,8 +61,8 @@ endif #HAVE_LATEXMK
PAPEROPT_a4 = -D latex_paper_size=a4
PAPEROPT_letter = -D latex_paper_size=letter
KERNELDOC = $(srctree)/scripts/kernel-doc.py
-KERNELDOC_CONF = -D kerneldoc_srctree=$(srctree) -D kerneldoc_bin=$(KERNELDOC)
-ALLSPHINXOPTS = $(KERNELDOC_CONF) $(PAPEROPT_$(PAPER)) $(SPHINXOPTS)
+ALLSPHINXOPTS = -D kerneldoc_srctree=$(srctree) -D kerneldoc_bin=$(KERNELDOC)
+ALLSPHINXOPTS += $(PAPEROPT_$(PAPER)) $(SPHINXOPTS)
ifneq ($(wildcard $(srctree)/.config),)
ifeq ($(CONFIG_RUST),y)
# Let Sphinx know we will include rustdoc
--
2.49.0
^ permalink raw reply related [flat|nested] 9+ messages in thread* [PATCH v3 2/4] Makefile: move KERNELDOC macro to the main Makefile
2025-04-18 23:50 [PATCH v3 0/4] Don't create Python bytecode when building the kernel Mauro Carvalho Chehab
2025-04-18 23:50 ` [PATCH v3 1/4] docs: Makefile: get rid of KERNELDOC_CONF env variable Mauro Carvalho Chehab
@ 2025-04-18 23:50 ` Mauro Carvalho Chehab
2025-04-18 23:50 ` [PATCH v3 3/4] scripts/kernel-doc.py: don't create *.pyc files Mauro Carvalho Chehab
` (2 subsequent siblings)
4 siblings, 0 replies; 9+ messages in thread
From: Mauro Carvalho Chehab @ 2025-04-18 23:50 UTC (permalink / raw)
To: Linux Doc Mailing List
Cc: Mauro Carvalho Chehab, Jonathan Corbet, Masahiro Yamada,
Nathan Chancellor, Nicolas Schier, linux-kbuild, linux-kernel
As kernel-doc script is used not only on Documentation, but
also on scripts and drivers/drm Makefiles, move it to the
main makefile, as otherwise sub-makefiles may not have it.
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
---
Documentation/Makefile | 1 -
Makefile | 5 +++++
2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/Documentation/Makefile b/Documentation/Makefile
index a006c7681412..8c1f6a3dfc44 100644
--- a/Documentation/Makefile
+++ b/Documentation/Makefile
@@ -60,7 +60,6 @@ endif #HAVE_LATEXMK
# Internal variables.
PAPEROPT_a4 = -D latex_paper_size=a4
PAPEROPT_letter = -D latex_paper_size=letter
-KERNELDOC = $(srctree)/scripts/kernel-doc.py
ALLSPHINXOPTS = -D kerneldoc_srctree=$(srctree) -D kerneldoc_bin=$(KERNELDOC)
ALLSPHINXOPTS += $(PAPEROPT_$(PAPER)) $(SPHINXOPTS)
ifneq ($(wildcard $(srctree)/.config),)
diff --git a/Makefile b/Makefile
index 38689a0c3605..2a05988740a9 100644
--- a/Makefile
+++ b/Makefile
@@ -458,6 +458,11 @@ endif
HOSTRUSTC = rustc
HOSTPKG_CONFIG = pkg-config
+# the KERNELDOC macro needs to be exported, as scripts/Makefile.build
+# has a logic to call it
+KERNELDOC = $(srctree)/scripts/kernel-doc.py
+export KERNELDOC
+
KBUILD_USERHOSTCFLAGS := -Wall -Wmissing-prototypes -Wstrict-prototypes \
-O2 -fomit-frame-pointer -std=gnu11
KBUILD_USERCFLAGS := $(KBUILD_USERHOSTCFLAGS) $(USERCFLAGS)
--
2.49.0
^ permalink raw reply related [flat|nested] 9+ messages in thread* [PATCH v3 3/4] scripts/kernel-doc.py: don't create *.pyc files
2025-04-18 23:50 [PATCH v3 0/4] Don't create Python bytecode when building the kernel Mauro Carvalho Chehab
2025-04-18 23:50 ` [PATCH v3 1/4] docs: Makefile: get rid of KERNELDOC_CONF env variable Mauro Carvalho Chehab
2025-04-18 23:50 ` [PATCH v3 2/4] Makefile: move KERNELDOC macro to the main Makefile Mauro Carvalho Chehab
@ 2025-04-18 23:50 ` Mauro Carvalho Chehab
2025-04-18 23:50 ` [PATCH v3 4/4] .gitignore: ignore Python compiled bytecode Mauro Carvalho Chehab
2025-04-19 16:14 ` [PATCH v3 0/4] Don't create Python bytecode when building the kernel Andy Shevchenko
4 siblings, 0 replies; 9+ messages in thread
From: Mauro Carvalho Chehab @ 2025-04-18 23:50 UTC (permalink / raw)
To: Linux Doc Mailing List
Cc: Mauro Carvalho Chehab, Jonathan Corbet, David Airlie, Jani Nikula,
Joonas Lahtinen, Maarten Lankhorst, Masahiro Yamada,
Maxime Ripard, Nathan Chancellor, Nicolas Schier, Rodrigo Vivi,
Simona Vetter, Thomas Zimmermann, Tvrtko Ursulin, dri-devel,
intel-gfx, linux-kbuild, linux-kernel, Andy Shevchenko
As reported by Andy, kernel-doc.py is creating a __pycache__
directory at build time.
Disable creation of __pycache__ for the libraries used by
kernel-doc.py, when excecuted via the build system or via
scripts/find-unused-docs.sh.
Reported-by: Andy Shevchenko <andriy.shevchenko@intel.com>
Closes: https://lore.kernel.org/linux-doc/Z_zYXAJcTD-c3xTe@black.fi.intel.com/
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
---
drivers/gpu/drm/Makefile | 2 +-
drivers/gpu/drm/i915/Makefile | 2 +-
include/drm/Makefile | 2 +-
scripts/Makefile.build | 2 +-
scripts/find-unused-docs.sh | 2 +-
5 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile
index ed54a546bbe2..d21d0cd2c752 100644
--- a/drivers/gpu/drm/Makefile
+++ b/drivers/gpu/drm/Makefile
@@ -236,7 +236,7 @@ always-$(CONFIG_DRM_HEADER_TEST) += \
quiet_cmd_hdrtest = HDRTEST $(patsubst %.hdrtest,%.h,$@)
cmd_hdrtest = \
$(CC) $(c_flags) -fsyntax-only -x c /dev/null -include $< -include $<; \
- $(srctree)/scripts/kernel-doc -none $(if $(CONFIG_WERROR)$(CONFIG_DRM_WERROR),-Werror) $<; \
+ PYTHONDONTWRITEBYTECODE=1 $(KERNELDOC) -none $(if $(CONFIG_WERROR)$(CONFIG_DRM_WERROR),-Werror) $<; \
touch $@
$(obj)/%.hdrtest: $(src)/%.h FORCE
diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile
index ed05b131ed3a..ab6b89a163e7 100644
--- a/drivers/gpu/drm/i915/Makefile
+++ b/drivers/gpu/drm/i915/Makefile
@@ -408,7 +408,7 @@ obj-$(CONFIG_DRM_I915_GVT_KVMGT) += kvmgt.o
#
# Enable locally for CONFIG_DRM_I915_WERROR=y. See also scripts/Makefile.build
ifdef CONFIG_DRM_I915_WERROR
- cmd_checkdoc = $(srctree)/scripts/kernel-doc -none -Werror $<
+ cmd_checkdoc = PYTHONDONTWRITEBYTECODE=1 $(KERNELDOC) -none -Werror $<
endif
# header test
diff --git a/include/drm/Makefile b/include/drm/Makefile
index a7bd15d2803e..1df6962556ef 100644
--- a/include/drm/Makefile
+++ b/include/drm/Makefile
@@ -11,7 +11,7 @@ always-$(CONFIG_DRM_HEADER_TEST) += \
quiet_cmd_hdrtest = HDRTEST $(patsubst %.hdrtest,%.h,$@)
cmd_hdrtest = \
$(CC) $(c_flags) -fsyntax-only -x c /dev/null -include $< -include $<; \
- $(srctree)/scripts/kernel-doc -none $(if $(CONFIG_WERROR)$(CONFIG_DRM_WERROR),-Werror) $<; \
+ PYTHONDONTWRITEBYTECODE=1 $(KERNELDOC) -none $(if $(CONFIG_WERROR)$(CONFIG_DRM_WERROR),-Werror) $<; \
touch $@
$(obj)/%.hdrtest: $(src)/%.h FORCE
diff --git a/scripts/Makefile.build b/scripts/Makefile.build
index 13dcd86e74ca..884dc86ce04e 100644
--- a/scripts/Makefile.build
+++ b/scripts/Makefile.build
@@ -83,7 +83,7 @@ else ifeq ($(KBUILD_CHECKSRC),2)
endif
ifneq ($(KBUILD_EXTRA_WARN),)
- cmd_checkdoc = $(srctree)/scripts/kernel-doc -none $(KDOCFLAGS) \
+ cmd_checkdoc = PYTHONDONTWRITEBYTECODE=1 $(KERNELDOC) -none $(KDOCFLAGS) \
$(if $(findstring 2, $(KBUILD_EXTRA_WARN)), -Wall) \
$<
endif
diff --git a/scripts/find-unused-docs.sh b/scripts/find-unused-docs.sh
index ee6a50e33aba..d6d397fbf917 100755
--- a/scripts/find-unused-docs.sh
+++ b/scripts/find-unused-docs.sh
@@ -54,7 +54,7 @@ for file in `find $1 -name '*.c'`; do
if [[ ${FILES_INCLUDED[$file]+_} ]]; then
continue;
fi
- str=$(scripts/kernel-doc -export "$file" 2>/dev/null)
+ str=$(PYTHONDONTWRITEBYTECODE=1 scripts/kernel-doc -export "$file" 2>/dev/null)
if [[ -n "$str" ]]; then
echo "$file"
fi
--
2.49.0
^ permalink raw reply related [flat|nested] 9+ messages in thread* [PATCH v3 4/4] .gitignore: ignore Python compiled bytecode
2025-04-18 23:50 [PATCH v3 0/4] Don't create Python bytecode when building the kernel Mauro Carvalho Chehab
` (2 preceding siblings ...)
2025-04-18 23:50 ` [PATCH v3 3/4] scripts/kernel-doc.py: don't create *.pyc files Mauro Carvalho Chehab
@ 2025-04-18 23:50 ` Mauro Carvalho Chehab
2025-04-19 9:17 ` Miguel Ojeda
2025-04-19 16:14 ` [PATCH v3 0/4] Don't create Python bytecode when building the kernel Andy Shevchenko
4 siblings, 1 reply; 9+ messages in thread
From: Mauro Carvalho Chehab @ 2025-04-18 23:50 UTC (permalink / raw)
To: Linux Doc Mailing List
Cc: Mauro Carvalho Chehab, Jonathan Corbet, Thomas Weißschuh,
Laurent Pinchart, Li Zhijian, Masahiro Yamada, Miguel Ojeda,
Nathan Chancellor, Tamir Duberstein, Vegard Nossum, linux-kernel
While the building system doesn't create any Python JIT bytecode,
if one manually runs kernel-doc.py or get_abi.py, Python will,
by default, create a bytecode and store it under scripts/lib/*.
This is normal, and not controlled by the Kernel itself. So,
add *.pyc as an extension to be ignored.
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
---
.gitignore | 1 +
1 file changed, 1 insertion(+)
diff --git a/.gitignore b/.gitignore
index f2f63e47fb88..2e01bc0b2d2a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -39,6 +39,7 @@
*.mod.c
*.o
*.o.*
+*.pyc
*.patch
*.rmeta
*.rpm
--
2.49.0
^ permalink raw reply related [flat|nested] 9+ messages in thread* Re: [PATCH v3 4/4] .gitignore: ignore Python compiled bytecode
2025-04-18 23:50 ` [PATCH v3 4/4] .gitignore: ignore Python compiled bytecode Mauro Carvalho Chehab
@ 2025-04-19 9:17 ` Miguel Ojeda
2025-04-19 9:25 ` Miguel Ojeda
2025-04-19 16:14 ` Andy Shevchenko
0 siblings, 2 replies; 9+ messages in thread
From: Miguel Ojeda @ 2025-04-19 9:17 UTC (permalink / raw)
To: Mauro Carvalho Chehab
Cc: Linux Doc Mailing List, Jonathan Corbet, Thomas Weißschuh,
Laurent Pinchart, Li Zhijian, Masahiro Yamada, Miguel Ojeda,
Nathan Chancellor, Tamir Duberstein, Vegard Nossum, linux-kernel
On Sat, Apr 19, 2025 at 1:50 AM Mauro Carvalho Chehab
<mchehab+huawei@kernel.org> wrote:
>
> +*.pyc
> *.patch
I think the list is intended to be sorted.
Should `*.pyo` be added as well?
Thanks!
Cheers,
Miguel
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v3 4/4] .gitignore: ignore Python compiled bytecode
2025-04-19 9:17 ` Miguel Ojeda
@ 2025-04-19 9:25 ` Miguel Ojeda
2025-04-19 16:14 ` Andy Shevchenko
1 sibling, 0 replies; 9+ messages in thread
From: Miguel Ojeda @ 2025-04-19 9:25 UTC (permalink / raw)
To: Mauro Carvalho Chehab
Cc: Linux Doc Mailing List, Jonathan Corbet, Thomas Weißschuh,
Laurent Pinchart, Li Zhijian, Masahiro Yamada, Miguel Ojeda,
Nathan Chancellor, Tamir Duberstein, Vegard Nossum, linux-kernel
On Sat, Apr 19, 2025 at 11:17 AM Miguel Ojeda
<miguel.ojeda.sandonis@gmail.com> wrote:
>
> Should `*.pyo` be added as well?
I think this one is a no, given even oldoldstable Debian ships new
enough Python.
Cheers,
Miguel
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v3 4/4] .gitignore: ignore Python compiled bytecode
2025-04-19 9:17 ` Miguel Ojeda
2025-04-19 9:25 ` Miguel Ojeda
@ 2025-04-19 16:14 ` Andy Shevchenko
1 sibling, 0 replies; 9+ messages in thread
From: Andy Shevchenko @ 2025-04-19 16:14 UTC (permalink / raw)
To: Miguel Ojeda
Cc: Mauro Carvalho Chehab, Linux Doc Mailing List, Jonathan Corbet,
Thomas Weißschuh, Laurent Pinchart, Li Zhijian,
Masahiro Yamada, Miguel Ojeda, Nathan Chancellor,
Tamir Duberstein, Vegard Nossum, linux-kernel
On Sat, Apr 19, 2025 at 11:17:33AM +0200, Miguel Ojeda wrote:
> On Sat, Apr 19, 2025 at 1:50 AM Mauro Carvalho Chehab
> <mchehab+huawei@kernel.org> wrote:
> >
> > +*.pyc
> > *.patch
>
> I think the list is intended to be sorted.
+1, I told already twice, I dunno if my messages were seen.
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v3 0/4] Don't create Python bytecode when building the kernel
2025-04-18 23:50 [PATCH v3 0/4] Don't create Python bytecode when building the kernel Mauro Carvalho Chehab
` (3 preceding siblings ...)
2025-04-18 23:50 ` [PATCH v3 4/4] .gitignore: ignore Python compiled bytecode Mauro Carvalho Chehab
@ 2025-04-19 16:14 ` Andy Shevchenko
4 siblings, 0 replies; 9+ messages in thread
From: Andy Shevchenko @ 2025-04-19 16:14 UTC (permalink / raw)
To: Mauro Carvalho Chehab
Cc: Linux Doc Mailing List, linux-kernel, Jonathan Corbet,
David Airlie, Jani Nikula, Joonas Lahtinen, Maarten Lankhorst,
Masahiro Yamada, Maxime Ripard, Nathan Chancellor, Nicolas Schier,
Rodrigo Vivi, Simona Vetter, Thomas Zimmermann, Tvrtko Ursulin,
dri-devel, intel-gfx, linux-kbuild
On Sat, Apr 19, 2025 at 07:50:01AM +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.
>
> This is done by adding PYTHONDONTWRITEBYTECODE=1 on every place
> where the script is called within Kbuild and when called via another script.
>
> This only solves half of the issue though, as one may be manually running
> the script by hand, without asking Python to not store any bytecode.
> This should be OK, but afterwards, git status will list the __pycache__ as
> not committed. To prevent that, add *.pyc to .gitignore.
>
> This series contain 4 patches:
>
> - patch 1 adjusts a variable that pass extra data to scripts/kerneldoc.py;
> - patch 2moves scripts/kernel-doc location to the main makefile
> and exports it, as scripts/Makefile.build will need it;
> - patch 3 disables __pycache__ generation and ensure that the entire Kbuild
> will use KERNELDOC var for the location of kernel-doc;
> - patch 4 adds *.pyc at the list of object files to be ignored.
This one works for me, thanks!
Tested-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 9+ messages in thread