Message ID | 20200304032038.14424-3-masahiroy@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | kbuild: improve DT build rules | expand |
Hi Masahiro Thanks for the nice improvements to the dt infrastructure. Stealing a thread here.. > It is also possible to run checks with a single schema file by setting the > ``DT_SCHEMA_FILES`` variable to a specific schema file. Would it be simple to enable the use of dirs for DT_SCHEMA_FILES? So I for example could do: make dt_bindings_check DT_SCHEMA_FILES=Documentation/devicetree/bindings/display/panel/ I did a very quick look add it but failed to dechiper all the makefile logic. It is a corner case when one wants to check a full dir, so unless it is very simple the current logic should not be complicated by this (if you take the bait and look at it). Sam
On Tue, Mar 3, 2020 at 11:55 PM Sam Ravnborg <sam@ravnborg.org> wrote: > > Hi Masahiro > > Thanks for the nice improvements to the dt infrastructure. > > Stealing a thread here.. > > > It is also possible to run checks with a single schema file by setting the > > ``DT_SCHEMA_FILES`` variable to a specific schema file. > Would it be simple to enable the use of dirs for DT_SCHEMA_FILES? I did name that with the intent of supporting more than one file. > So I for example could do: > > make dt_bindings_check DT_SCHEMA_FILES=Documentation/devicetree/bindings/display/panel/ Does this work?: make dt_bindings_check DT_SCHEMA_FILES="$(find Documentation/devicetree/bindings/display/panel/ -name '*.yaml' | xargs)" Rob
On Tue, Mar 3, 2020 at 9:20 PM Masahiro Yamada <masahiroy@kernel.org> wrote: > > Since commit 93512dad334d ("dt-bindings: Improve validation build error > handling"), 'make dtbs_check' does not validate the schema fully. > > If you want to check everything, you need to run two commands. > > $ make ARCH=arm dt_binding_check > $ make ARCH=arm dtbs_check > > They are exclusive each other, so you cannot do like this: > > $ make ARCH=arm dt_binding_check dtbs_check > > In this case, dt-doc-validate and dt-extract-example are skipped > because CHECK_DTBS is set. > > Let's make it possible to run those two targets simultaneously. > It will be useful for schema writers. > > Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> > --- > > Documentation/devicetree/bindings/Makefile | 8 +++----- > Documentation/devicetree/writing-schema.rst | 4 ++++ > Makefile | 6 +++++- > 3 files changed, 12 insertions(+), 6 deletions(-) Reviewed-by: Rob Herring <robh@kernel.org>
Hi Sam, Rob, On Thu, Mar 5, 2020 at 12:19 AM Rob Herring <robh+dt@kernel.org> wrote: > > On Tue, Mar 3, 2020 at 11:55 PM Sam Ravnborg <sam@ravnborg.org> wrote: > > > > Hi Masahiro > > > > Thanks for the nice improvements to the dt infrastructure. > > > > Stealing a thread here.. > > > > > It is also possible to run checks with a single schema file by setting the > > > ``DT_SCHEMA_FILES`` variable to a specific schema file. > > Would it be simple to enable the use of dirs for DT_SCHEMA_FILES? > > I did name that with the intent of supporting more than one file. > > > So I for example could do: > > > > make dt_bindings_check DT_SCHEMA_FILES=Documentation/devicetree/bindings/display/panel/ > > Does this work?: > > make dt_bindings_check DT_SCHEMA_FILES="$(find > Documentation/devicetree/bindings/display/panel/ -name '*.yaml' | > xargs)" > > Rob Rob proposed a solution, so I do not think we should extend this too much. BTW, there is a limitation that DT_SCHEMA_FILES must point to file(s) in Documentation/devicetree/bindings/. $ cp Documentation/devicetree/bindings/arm/psci.yaml ./ $ make dt_binding_check DT_SCHEMA_FILES=psci.yaml SCHEMA Documentation/devicetree/bindings/processed-schema.yaml make[1]: *** No rule to make target 'Documentation/devicetree/bindings/psci.yaml', needed by '__build'. Stop. make: *** [Makefile:1278: dt_binding_check] Error 2 $(patsubst $(src)/%.yaml,%.example.dts, $(DT_SCHEMA_FILES)) does not work if DT_SCHEMA_FILES is outside of Documentation/devicetree/bindings/, but I have no solution for this. -- Best Regards Masahiro Yamada
diff --git a/Documentation/devicetree/bindings/Makefile b/Documentation/devicetree/bindings/Makefile index b62c0470f122..1df680d07461 100644 --- a/Documentation/devicetree/bindings/Makefile +++ b/Documentation/devicetree/bindings/Makefile @@ -26,10 +26,9 @@ DT_DOCS = $(addprefix $(src)/, \ DT_SCHEMA_FILES ?= $(DT_DOCS) -ifeq ($(CHECK_DTBS),) -extra-y += $(patsubst $(src)/%.yaml,%.example.dts, $(DT_SCHEMA_FILES)) -extra-y += $(patsubst $(src)/%.yaml,%.example.dt.yaml, $(DT_SCHEMA_FILES)) -extra-y += processed-schema-examples.yaml +extra-$(CHECK_DT_BINDING) += $(patsubst $(src)/%.yaml,%.example.dts, $(DT_SCHEMA_FILES)) +extra-$(CHECK_DT_BINDING) += $(patsubst $(src)/%.yaml,%.example.dt.yaml, $(DT_SCHEMA_FILES)) +extra-$(CHECK_DT_BINDING) += processed-schema-examples.yaml override DTC_FLAGS := \ -Wno-avoid_unnecessary_addr_size \ @@ -37,7 +36,6 @@ override DTC_FLAGS := \ $(obj)/processed-schema-examples.yaml: $(DT_DOCS) FORCE $(call if_changed,mk_schema) -endif $(obj)/processed-schema.yaml: DT_MK_SCHEMA_FLAGS := -u $(obj)/processed-schema.yaml: $(DT_SCHEMA_FILES) FORCE diff --git a/Documentation/devicetree/writing-schema.rst b/Documentation/devicetree/writing-schema.rst index 7635ab230456..220cf464ed77 100644 --- a/Documentation/devicetree/writing-schema.rst +++ b/Documentation/devicetree/writing-schema.rst @@ -147,6 +147,10 @@ Note that ``dtbs_check`` will skip any binding schema files with errors. It is necessary to use ``dt_binding_check`` to get all the validation errors in the binding schema files. +It is possible to run both in a single command:: + + make dt_binding_check dtbs_check + It is also possible to run checks with a single schema file by setting the ``DT_SCHEMA_FILES`` variable to a specific schema file. diff --git a/Makefile b/Makefile index e94d4fe3ef77..7dec7b343842 100644 --- a/Makefile +++ b/Makefile @@ -1244,10 +1244,10 @@ dtbs: include/config/kernel.release scripts_dtc $(Q)$(MAKE) $(build)=$(dtstree) ifneq ($(filter dtbs_check, $(MAKECMDGOALS)),) +export CHECK_DTBS=y dtbs: dt_binding_check endif -dtbs_check: export CHECK_DTBS=1 dtbs_check: dtbs dtbs_install: @@ -1263,6 +1263,10 @@ PHONY += scripts_dtc scripts_dtc: scripts_basic $(Q)$(MAKE) $(build)=scripts/dtc +ifneq ($(filter dt_binding_check, $(MAKECMDGOALS)),) +export CHECK_DT_BINDING=y +endif + PHONY += dt_binding_check dt_binding_check: scripts_dtc $(Q)$(MAKE) $(build)=Documentation/devicetree/bindings
Since commit 93512dad334d ("dt-bindings: Improve validation build error handling"), 'make dtbs_check' does not validate the schema fully. If you want to check everything, you need to run two commands. $ make ARCH=arm dt_binding_check $ make ARCH=arm dtbs_check They are exclusive each other, so you cannot do like this: $ make ARCH=arm dt_binding_check dtbs_check In this case, dt-doc-validate and dt-extract-example are skipped because CHECK_DTBS is set. Let's make it possible to run those two targets simultaneously. It will be useful for schema writers. Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> --- Documentation/devicetree/bindings/Makefile | 8 +++----- Documentation/devicetree/writing-schema.rst | 4 ++++ Makefile | 6 +++++- 3 files changed, 12 insertions(+), 6 deletions(-)