Message ID | 20230722044806.3867434-8-masahiroy@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [01/19] kbuild: rpm-pkg: define _arch conditionally | expand |
On Sat, Jul 22, 2023 at 01:47:55PM +0900 Masahiro Yamada wrote: > There are some cases where we want to run a command with the same > environment variables as Kbuild uses. For example, 'make coccicheck' > invokes scripts/coccicheck from the top Makefile so that the script can > reference to ${LINUXINCLUDE}, ${KBUILD_EXTMOD}, etc. The top Makefile > defines several phony targets that run a script. > > We do it also for an internally used script, which results in a somewhat > complex call graph. > > One example: > > debian/rules binary-arch > -> make intdeb-pkg > -> scripts/package/builddeb > > It is also tedious to add a dedicated target like 'intdeb-pkg' for each > use case. > > Add a generic target 'run-command' to run an arbitrary command in an > environment with all Kbuild variables set. > > The usage is: > > $ make run-command KBUILD_RUN_COMMAND=<command> > > The concept is similar to: > > $ dpkg-architecture -c <command> > > This executes <command> in an environment which has all DEB_* variables > defined. > > Convert the existing 'make intdeb-pkg'. > > Another possible usage is to interrogate a Make variable. > > $ make run-command KBUILD_RUN_COMMAND='echo $(KBUILD_CFLAGS)' nice idea, I like that. Reviewed-by: Nicolas Schier <nicolas@fjasle.eu> > > might be useful to see KBUILD_CFLAGS set by the top Makefile. > > Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> > --- > > Makefile | 4 ++++ > scripts/Makefile.package | 4 ---- > scripts/package/mkdebian | 3 ++- > 3 files changed, 6 insertions(+), 5 deletions(-) > > diff --git a/Makefile b/Makefile > index 47690c28456a..f258ef13fa5d 100644 > --- a/Makefile > +++ b/Makefile > @@ -2133,6 +2133,10 @@ kernelversion: > image_name: > @echo $(KBUILD_IMAGE) > > +PHONY += run-command > +run-command: > + $(Q)$(KBUILD_RUN_COMMAND) > + > quiet_cmd_rmfiles = $(if $(wildcard $(rm-files)),CLEAN $(wildcard $(rm-files))) > cmd_rmfiles = rm -rf $(rm-files) > > diff --git a/scripts/Makefile.package b/scripts/Makefile.package > index e9217e997c68..7cd61a374dae 100644 > --- a/scripts/Makefile.package > +++ b/scripts/Makefile.package > @@ -146,10 +146,6 @@ deb-pkg srcdeb-pkg bindeb-pkg: > --no-check-builddeps) \ > $(DPKG_FLAGS)) > > -PHONY += intdeb-pkg > -intdeb-pkg: > - +$(CONFIG_SHELL) $(srctree)/scripts/package/builddeb > - > # snap-pkg > # --------------------------------------------------------------------------- > PHONY += snap-pkg > diff --git a/scripts/package/mkdebian b/scripts/package/mkdebian > index ba2453e08d40..9105abab9728 100755 > --- a/scripts/package/mkdebian > +++ b/scripts/package/mkdebian > @@ -283,7 +283,8 @@ build: build-arch > binary-indep: > binary-arch: build-arch > \$(MAKE) -f \$(srctree)/Makefile ARCH=${ARCH} \ > - KERNELRELEASE=\$(KERNELRELEASE) intdeb-pkg > + KERNELRELEASE=\$(KERNELRELEASE) \ > + run-command KBUILD_RUN_COMMAND=+\$(srctree)/scripts/package/builddeb > > clean: > rm -rf debian/files debian/linux-* > -- > 2.39.2
diff --git a/Makefile b/Makefile index 47690c28456a..f258ef13fa5d 100644 --- a/Makefile +++ b/Makefile @@ -2133,6 +2133,10 @@ kernelversion: image_name: @echo $(KBUILD_IMAGE) +PHONY += run-command +run-command: + $(Q)$(KBUILD_RUN_COMMAND) + quiet_cmd_rmfiles = $(if $(wildcard $(rm-files)),CLEAN $(wildcard $(rm-files))) cmd_rmfiles = rm -rf $(rm-files) diff --git a/scripts/Makefile.package b/scripts/Makefile.package index e9217e997c68..7cd61a374dae 100644 --- a/scripts/Makefile.package +++ b/scripts/Makefile.package @@ -146,10 +146,6 @@ deb-pkg srcdeb-pkg bindeb-pkg: --no-check-builddeps) \ $(DPKG_FLAGS)) -PHONY += intdeb-pkg -intdeb-pkg: - +$(CONFIG_SHELL) $(srctree)/scripts/package/builddeb - # snap-pkg # --------------------------------------------------------------------------- PHONY += snap-pkg diff --git a/scripts/package/mkdebian b/scripts/package/mkdebian index ba2453e08d40..9105abab9728 100755 --- a/scripts/package/mkdebian +++ b/scripts/package/mkdebian @@ -283,7 +283,8 @@ build: build-arch binary-indep: binary-arch: build-arch \$(MAKE) -f \$(srctree)/Makefile ARCH=${ARCH} \ - KERNELRELEASE=\$(KERNELRELEASE) intdeb-pkg + KERNELRELEASE=\$(KERNELRELEASE) \ + run-command KBUILD_RUN_COMMAND=+\$(srctree)/scripts/package/builddeb clean: rm -rf debian/files debian/linux-*
There are some cases where we want to run a command with the same environment variables as Kbuild uses. For example, 'make coccicheck' invokes scripts/coccicheck from the top Makefile so that the script can reference to ${LINUXINCLUDE}, ${KBUILD_EXTMOD}, etc. The top Makefile defines several phony targets that run a script. We do it also for an internally used script, which results in a somewhat complex call graph. One example: debian/rules binary-arch -> make intdeb-pkg -> scripts/package/builddeb It is also tedious to add a dedicated target like 'intdeb-pkg' for each use case. Add a generic target 'run-command' to run an arbitrary command in an environment with all Kbuild variables set. The usage is: $ make run-command KBUILD_RUN_COMMAND=<command> The concept is similar to: $ dpkg-architecture -c <command> This executes <command> in an environment which has all DEB_* variables defined. Convert the existing 'make intdeb-pkg'. Another possible usage is to interrogate a Make variable. $ make run-command KBUILD_RUN_COMMAND='echo $(KBUILD_CFLAGS)' might be useful to see KBUILD_CFLAGS set by the top Makefile. Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> --- Makefile | 4 ++++ scripts/Makefile.package | 4 ---- scripts/package/mkdebian | 3 ++- 3 files changed, 6 insertions(+), 5 deletions(-)