* [PATCH v2 2/2] kbuild: Build DT binding examples with dtc warnings enabled
2020-02-29 0:37 [PATCH v2 1/2] kbuild: Always validate DT binding examples Rob Herring
@ 2020-02-29 0:37 ` Rob Herring
2020-02-29 4:25 ` [PATCH v2 1/2] kbuild: Always validate DT binding examples Masahiro Yamada
2020-04-21 10:07 ` Laurent Pinchart
2 siblings, 0 replies; 18+ messages in thread
From: Rob Herring @ 2020-02-29 0:37 UTC (permalink / raw)
To: Masahiro Yamada; +Cc: devicetree, linux-kernel, Michal Marek, linux-kbuild
Now that we have a separate rule for DT binding examples, we can customize
the dtc options. Let's adjust the dtc warnings to me more strict by
default so the examples get cleaned up as they get converted to schema.
Leaving 'avoid_unnecessary_addr_size' and 'graph_child_address' warnings
disabled as examples tend to be incomplete and they generates a lot of
warnings.
Cc: Michal Marek <michal.lkml@markovi.net>
Cc: linux-kbuild@vger.kernel.org
Co-developed-by: Masahiro Yamada <masahiroy@kernel.org>
Signed-off-by: Rob Herring <robh@kernel.org>
---
Documentation/devicetree/bindings/Makefile | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/Documentation/devicetree/bindings/Makefile b/Documentation/devicetree/bindings/Makefile
index 7c40d5ba1b51..b62c0470f122 100644
--- a/Documentation/devicetree/bindings/Makefile
+++ b/Documentation/devicetree/bindings/Makefile
@@ -31,6 +31,10 @@ 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
+override DTC_FLAGS := \
+ -Wno-avoid_unnecessary_addr_size \
+ -Wno-graph_child_address
+
$(obj)/processed-schema-examples.yaml: $(DT_DOCS) FORCE
$(call if_changed,mk_schema)
endif
--
2.20.1
^ permalink raw reply related [flat|nested] 18+ messages in thread
* Re: [PATCH v2 1/2] kbuild: Always validate DT binding examples
2020-02-29 0:37 [PATCH v2 1/2] kbuild: Always validate DT binding examples Rob Herring
2020-02-29 0:37 ` [PATCH v2 2/2] kbuild: Build DT binding examples with dtc warnings enabled Rob Herring
@ 2020-02-29 4:25 ` Masahiro Yamada
2020-03-02 16:06 ` Rob Herring
2020-04-21 10:07 ` Laurent Pinchart
2 siblings, 1 reply; 18+ messages in thread
From: Masahiro Yamada @ 2020-02-29 4:25 UTC (permalink / raw)
To: Rob Herring
Cc: DTML, Linux Kernel Mailing List, Michal Marek, Linux Kbuild mailing list
Hi Rob,
On Sat, Feb 29, 2020 at 9:37 AM Rob Herring <robh@kernel.org> wrote:
>
> Most folks only run dt_binding_check on the single schema they care about
> by setting DT_SCHEMA_FILES. That means example is only checked against
> that one schema which is not always sufficient.
>
> Let's address this by splitting processed-schema.yaml into 2 files: one
> that's always all schemas for the examples and one that's just the schema
> in DT_SCHEMA_FILES for dtbs.
>
> Cc: Michal Marek <michal.lkml@markovi.net>
> Cc: linux-kbuild@vger.kernel.org
> Co-developed-by: Masahiro Yamada <masahiroy@kernel.org>
> Signed-off-by: Rob Herring <robh@kernel.org>
> ---
> Masahiro, given you pretty much re-wrote this, I added you as
> Co-developed-by.
I can apply both to my kbuild tree.
Or, if you want to apply them to your tree,
please add my
Acked-by: Masahiro Yamada <masahiroy@kernel.org>
Either way is fine.
Thanks.
>
> Based on next/master
>
> Documentation/devicetree/bindings/.gitignore | 2 +-
> Documentation/devicetree/bindings/Makefile | 22 +++++++++++++-------
> scripts/Makefile.lib | 3 ++-
> 3 files changed, 17 insertions(+), 10 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/.gitignore b/Documentation/devicetree/bindings/.gitignore
> index ef82fcfcccab..57afa1533a5f 100644
> --- a/Documentation/devicetree/bindings/.gitignore
> +++ b/Documentation/devicetree/bindings/.gitignore
> @@ -1,2 +1,2 @@
> *.example.dts
> -processed-schema.yaml
> +processed-schema*.yaml
> diff --git a/Documentation/devicetree/bindings/Makefile b/Documentation/devicetree/bindings/Makefile
> index 646cb3525373..7c40d5ba1b51 100644
> --- a/Documentation/devicetree/bindings/Makefile
> +++ b/Documentation/devicetree/bindings/Makefile
> @@ -2,7 +2,6 @@
> DT_DOC_CHECKER ?= dt-doc-validate
> DT_EXTRACT_EX ?= dt-extract-example
> DT_MK_SCHEMA ?= dt-mk-schema
> -DT_MK_SCHEMA_FLAGS := $(if $(DT_SCHEMA_FILES), -u)
>
> quiet_cmd_chk_binding = CHKDT $(patsubst $(srctree)/%,%,$<)
> cmd_chk_binding = $(DT_DOC_CHECKER) -u $(srctree)/$(src) $< ; \
> @@ -11,26 +10,33 @@ quiet_cmd_chk_binding = CHKDT $(patsubst $(srctree)/%,%,$<)
> $(obj)/%.example.dts: $(src)/%.yaml FORCE
> $(call if_changed,chk_binding)
>
> -DT_TMP_SCHEMA := processed-schema.yaml
> +# Use full schemas when checking %.example.dts
> +DT_TMP_SCHEMA := $(obj)/processed-schema-examples.yaml
>
> quiet_cmd_mk_schema = SCHEMA $@
> cmd_mk_schema = $(DT_MK_SCHEMA) $(DT_MK_SCHEMA_FLAGS) -o $@ $(real-prereqs)
>
> -DT_DOCS = $(shell \
> +DT_DOCS = $(addprefix $(src)/, \
> + $(shell \
> cd $(srctree)/$(src) && \
> find * \( -name '*.yaml' ! \
> - -name $(DT_TMP_SCHEMA) ! \
> + -name 'processed-schema*' ! \
> -name '*.example.dt.yaml' \) \
> - )
> + ))
>
> -DT_SCHEMA_FILES ?= $(addprefix $(src)/,$(DT_DOCS))
> +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
> +
> +$(obj)/processed-schema-examples.yaml: $(DT_DOCS) FORCE
> + $(call if_changed,mk_schema)
> endif
>
> -$(obj)/$(DT_TMP_SCHEMA): $(DT_SCHEMA_FILES) FORCE
> +$(obj)/processed-schema.yaml: DT_MK_SCHEMA_FLAGS := -u
> +$(obj)/processed-schema.yaml: $(DT_SCHEMA_FILES) FORCE
> $(call if_changed,mk_schema)
>
> -extra-y += $(DT_TMP_SCHEMA)
> +extra-y += processed-schema.yaml
> diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
> index f5ff506e4a24..b12dd5ba4896 100644
> --- a/scripts/Makefile.lib
> +++ b/scripts/Makefile.lib
> @@ -307,7 +307,8 @@ $(obj)/%.dtb: $(src)/%.dts $(DTC) FORCE
>
> DT_CHECKER ?= dt-validate
> DT_BINDING_DIR := Documentation/devicetree/bindings
> -DT_TMP_SCHEMA := $(objtree)/$(DT_BINDING_DIR)/processed-schema.yaml
> +# DT_TMP_SCHEMA may be overridden from Documentation/devicetree/bindings/Makefile
> +DT_TMP_SCHEMA ?= $(objtree)/$(DT_BINDING_DIR)/processed-schema.yaml
>
> quiet_cmd_dtb_check = CHECK $@
> cmd_dtb_check = $(DT_CHECKER) -u $(srctree)/$(DT_BINDING_DIR) -p $(DT_TMP_SCHEMA) $@
> --
> 2.20.1
>
--
Best Regards
Masahiro Yamada
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH v2 1/2] kbuild: Always validate DT binding examples
2020-02-29 4:25 ` [PATCH v2 1/2] kbuild: Always validate DT binding examples Masahiro Yamada
@ 2020-03-02 16:06 ` Rob Herring
2020-03-03 13:45 ` Masahiro Yamada
0 siblings, 1 reply; 18+ messages in thread
From: Rob Herring @ 2020-03-02 16:06 UTC (permalink / raw)
To: Masahiro Yamada
Cc: DTML, Linux Kernel Mailing List, Michal Marek, Linux Kbuild mailing list
On Fri, Feb 28, 2020 at 10:25 PM Masahiro Yamada <masahiroy@kernel.org> wrote:
>
> Hi Rob,
>
> On Sat, Feb 29, 2020 at 9:37 AM Rob Herring <robh@kernel.org> wrote:
> >
> > Most folks only run dt_binding_check on the single schema they care about
> > by setting DT_SCHEMA_FILES. That means example is only checked against
> > that one schema which is not always sufficient.
> >
> > Let's address this by splitting processed-schema.yaml into 2 files: one
> > that's always all schemas for the examples and one that's just the schema
> > in DT_SCHEMA_FILES for dtbs.
> >
> > Cc: Michal Marek <michal.lkml@markovi.net>
> > Cc: linux-kbuild@vger.kernel.org
> > Co-developed-by: Masahiro Yamada <masahiroy@kernel.org>
> > Signed-off-by: Rob Herring <robh@kernel.org>
> > ---
> > Masahiro, given you pretty much re-wrote this, I added you as
> > Co-developed-by.
>
>
>
> I can apply both to my kbuild tree.
Please apply to your tree.
Rob
>
> Or, if you want to apply them to your tree,
> please add my
> Acked-by: Masahiro Yamada <masahiroy@kernel.org>
>
>
> Either way is fine.
>
> Thanks.
>
>
>
> >
> > Based on next/master
> >
> > Documentation/devicetree/bindings/.gitignore | 2 +-
> > Documentation/devicetree/bindings/Makefile | 22 +++++++++++++-------
> > scripts/Makefile.lib | 3 ++-
> > 3 files changed, 17 insertions(+), 10 deletions(-)
> >
> > diff --git a/Documentation/devicetree/bindings/.gitignore b/Documentation/devicetree/bindings/.gitignore
> > index ef82fcfcccab..57afa1533a5f 100644
> > --- a/Documentation/devicetree/bindings/.gitignore
> > +++ b/Documentation/devicetree/bindings/.gitignore
> > @@ -1,2 +1,2 @@
> > *.example.dts
> > -processed-schema.yaml
> > +processed-schema*.yaml
> > diff --git a/Documentation/devicetree/bindings/Makefile b/Documentation/devicetree/bindings/Makefile
> > index 646cb3525373..7c40d5ba1b51 100644
> > --- a/Documentation/devicetree/bindings/Makefile
> > +++ b/Documentation/devicetree/bindings/Makefile
> > @@ -2,7 +2,6 @@
> > DT_DOC_CHECKER ?= dt-doc-validate
> > DT_EXTRACT_EX ?= dt-extract-example
> > DT_MK_SCHEMA ?= dt-mk-schema
> > -DT_MK_SCHEMA_FLAGS := $(if $(DT_SCHEMA_FILES), -u)
> >
> > quiet_cmd_chk_binding = CHKDT $(patsubst $(srctree)/%,%,$<)
> > cmd_chk_binding = $(DT_DOC_CHECKER) -u $(srctree)/$(src) $< ; \
> > @@ -11,26 +10,33 @@ quiet_cmd_chk_binding = CHKDT $(patsubst $(srctree)/%,%,$<)
> > $(obj)/%.example.dts: $(src)/%.yaml FORCE
> > $(call if_changed,chk_binding)
> >
> > -DT_TMP_SCHEMA := processed-schema.yaml
> > +# Use full schemas when checking %.example.dts
> > +DT_TMP_SCHEMA := $(obj)/processed-schema-examples.yaml
> >
> > quiet_cmd_mk_schema = SCHEMA $@
> > cmd_mk_schema = $(DT_MK_SCHEMA) $(DT_MK_SCHEMA_FLAGS) -o $@ $(real-prereqs)
> >
> > -DT_DOCS = $(shell \
> > +DT_DOCS = $(addprefix $(src)/, \
> > + $(shell \
> > cd $(srctree)/$(src) && \
> > find * \( -name '*.yaml' ! \
> > - -name $(DT_TMP_SCHEMA) ! \
> > + -name 'processed-schema*' ! \
> > -name '*.example.dt.yaml' \) \
> > - )
> > + ))
> >
> > -DT_SCHEMA_FILES ?= $(addprefix $(src)/,$(DT_DOCS))
> > +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
> > +
> > +$(obj)/processed-schema-examples.yaml: $(DT_DOCS) FORCE
> > + $(call if_changed,mk_schema)
> > endif
> >
> > -$(obj)/$(DT_TMP_SCHEMA): $(DT_SCHEMA_FILES) FORCE
> > +$(obj)/processed-schema.yaml: DT_MK_SCHEMA_FLAGS := -u
> > +$(obj)/processed-schema.yaml: $(DT_SCHEMA_FILES) FORCE
> > $(call if_changed,mk_schema)
> >
> > -extra-y += $(DT_TMP_SCHEMA)
> > +extra-y += processed-schema.yaml
> > diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
> > index f5ff506e4a24..b12dd5ba4896 100644
> > --- a/scripts/Makefile.lib
> > +++ b/scripts/Makefile.lib
> > @@ -307,7 +307,8 @@ $(obj)/%.dtb: $(src)/%.dts $(DTC) FORCE
> >
> > DT_CHECKER ?= dt-validate
> > DT_BINDING_DIR := Documentation/devicetree/bindings
> > -DT_TMP_SCHEMA := $(objtree)/$(DT_BINDING_DIR)/processed-schema.yaml
> > +# DT_TMP_SCHEMA may be overridden from Documentation/devicetree/bindings/Makefile
> > +DT_TMP_SCHEMA ?= $(objtree)/$(DT_BINDING_DIR)/processed-schema.yaml
> >
> > quiet_cmd_dtb_check = CHECK $@
> > cmd_dtb_check = $(DT_CHECKER) -u $(srctree)/$(DT_BINDING_DIR) -p $(DT_TMP_SCHEMA) $@
> > --
> > 2.20.1
> >
>
>
> --
> Best Regards
> Masahiro Yamada
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH v2 1/2] kbuild: Always validate DT binding examples
2020-03-02 16:06 ` Rob Herring
@ 2020-03-03 13:45 ` Masahiro Yamada
0 siblings, 0 replies; 18+ messages in thread
From: Masahiro Yamada @ 2020-03-03 13:45 UTC (permalink / raw)
To: Rob Herring
Cc: DTML, Linux Kernel Mailing List, Michal Marek, Linux Kbuild mailing list
On Tue, Mar 3, 2020 at 1:06 AM Rob Herring <robh@kernel.org> wrote:
>
> On Fri, Feb 28, 2020 at 10:25 PM Masahiro Yamada <masahiroy@kernel.org> wrote:
> >
> > Hi Rob,
> >
> > On Sat, Feb 29, 2020 at 9:37 AM Rob Herring <robh@kernel.org> wrote:
> > >
> > > Most folks only run dt_binding_check on the single schema they care about
> > > by setting DT_SCHEMA_FILES. That means example is only checked against
> > > that one schema which is not always sufficient.
> > >
> > > Let's address this by splitting processed-schema.yaml into 2 files: one
> > > that's always all schemas for the examples and one that's just the schema
> > > in DT_SCHEMA_FILES for dtbs.
> > >
> > > Cc: Michal Marek <michal.lkml@markovi.net>
> > > Cc: linux-kbuild@vger.kernel.org
> > > Co-developed-by: Masahiro Yamada <masahiroy@kernel.org>
> > > Signed-off-by: Rob Herring <robh@kernel.org>
> > > ---
> > > Masahiro, given you pretty much re-wrote this, I added you as
> > > Co-developed-by.
> >
> >
> >
> > I can apply both to my kbuild tree.
>
> Please apply to your tree.
Done.
Thanks.
--
Best Regards
Masahiro Yamada
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH v2 1/2] kbuild: Always validate DT binding examples
2020-02-29 0:37 [PATCH v2 1/2] kbuild: Always validate DT binding examples Rob Herring
2020-02-29 0:37 ` [PATCH v2 2/2] kbuild: Build DT binding examples with dtc warnings enabled Rob Herring
2020-02-29 4:25 ` [PATCH v2 1/2] kbuild: Always validate DT binding examples Masahiro Yamada
@ 2020-04-21 10:07 ` Laurent Pinchart
2020-04-21 10:45 ` Masahiro Yamada
2 siblings, 1 reply; 18+ messages in thread
From: Laurent Pinchart @ 2020-04-21 10:07 UTC (permalink / raw)
To: Rob Herring
Cc: Masahiro Yamada, devicetree, linux-kernel, Michal Marek, linux-kbuild
Hi Rob,
On Fri, Feb 28, 2020 at 06:37:30PM -0600, Rob Herring wrote:
> Most folks only run dt_binding_check on the single schema they care about
> by setting DT_SCHEMA_FILES. That means example is only checked against
> that one schema which is not always sufficient.
>
> Let's address this by splitting processed-schema.yaml into 2 files: one
> that's always all schemas for the examples and one that's just the schema
> in DT_SCHEMA_FILES for dtbs.
This broke
make DT_SCHEMA_FILES=Documentation/devicetree/.. dt_binding_check
for me :-(
make[1]: Entering directory '/home/laurent/src/linux/output/arm32'
make[2]: execvp: /bin/sh: Argument list too long
make[2]: *** [/home/laurent/src/linux/Documentation/devicetree/bindings/Makefile:35: Documentation/devicetree/bindings/processed-schema-examples.yaml] Error 127
make[1]: *** [/home/laurent/src/linux/Makefile:1296: dt_binding_check] Error 2
make[1]: Leaving directory '/home/laurent/src/linux/output/arm32'
make: *** [Makefile:180: sub-make] Error 2
Before the patch, dt-mk-schema was called with DT_SCHEMA_FILES only, and
it is now called with DT_DOCS unconditionally.
> Cc: Michal Marek <michal.lkml@markovi.net>
> Cc: linux-kbuild@vger.kernel.org
> Co-developed-by: Masahiro Yamada <masahiroy@kernel.org>
> Signed-off-by: Rob Herring <robh@kernel.org>
> ---
> Masahiro, given you pretty much re-wrote this, I added you as
> Co-developed-by.
>
> Based on next/master
>
> Documentation/devicetree/bindings/.gitignore | 2 +-
> Documentation/devicetree/bindings/Makefile | 22 +++++++++++++-------
> scripts/Makefile.lib | 3 ++-
> 3 files changed, 17 insertions(+), 10 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/.gitignore b/Documentation/devicetree/bindings/.gitignore
> index ef82fcfcccab..57afa1533a5f 100644
> --- a/Documentation/devicetree/bindings/.gitignore
> +++ b/Documentation/devicetree/bindings/.gitignore
> @@ -1,2 +1,2 @@
> *.example.dts
> -processed-schema.yaml
> +processed-schema*.yaml
> diff --git a/Documentation/devicetree/bindings/Makefile b/Documentation/devicetree/bindings/Makefile
> index 646cb3525373..7c40d5ba1b51 100644
> --- a/Documentation/devicetree/bindings/Makefile
> +++ b/Documentation/devicetree/bindings/Makefile
> @@ -2,7 +2,6 @@
> DT_DOC_CHECKER ?= dt-doc-validate
> DT_EXTRACT_EX ?= dt-extract-example
> DT_MK_SCHEMA ?= dt-mk-schema
> -DT_MK_SCHEMA_FLAGS := $(if $(DT_SCHEMA_FILES), -u)
>
> quiet_cmd_chk_binding = CHKDT $(patsubst $(srctree)/%,%,$<)
> cmd_chk_binding = $(DT_DOC_CHECKER) -u $(srctree)/$(src) $< ; \
> @@ -11,26 +10,33 @@ quiet_cmd_chk_binding = CHKDT $(patsubst $(srctree)/%,%,$<)
> $(obj)/%.example.dts: $(src)/%.yaml FORCE
> $(call if_changed,chk_binding)
>
> -DT_TMP_SCHEMA := processed-schema.yaml
> +# Use full schemas when checking %.example.dts
> +DT_TMP_SCHEMA := $(obj)/processed-schema-examples.yaml
>
> quiet_cmd_mk_schema = SCHEMA $@
> cmd_mk_schema = $(DT_MK_SCHEMA) $(DT_MK_SCHEMA_FLAGS) -o $@ $(real-prereqs)
>
> -DT_DOCS = $(shell \
> +DT_DOCS = $(addprefix $(src)/, \
> + $(shell \
> cd $(srctree)/$(src) && \
> find * \( -name '*.yaml' ! \
> - -name $(DT_TMP_SCHEMA) ! \
> + -name 'processed-schema*' ! \
> -name '*.example.dt.yaml' \) \
> - )
> + ))
>
> -DT_SCHEMA_FILES ?= $(addprefix $(src)/,$(DT_DOCS))
> +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
> +
> +$(obj)/processed-schema-examples.yaml: $(DT_DOCS) FORCE
> + $(call if_changed,mk_schema)
> endif
>
> -$(obj)/$(DT_TMP_SCHEMA): $(DT_SCHEMA_FILES) FORCE
> +$(obj)/processed-schema.yaml: DT_MK_SCHEMA_FLAGS := -u
> +$(obj)/processed-schema.yaml: $(DT_SCHEMA_FILES) FORCE
> $(call if_changed,mk_schema)
>
> -extra-y += $(DT_TMP_SCHEMA)
> +extra-y += processed-schema.yaml
> diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
> index f5ff506e4a24..b12dd5ba4896 100644
> --- a/scripts/Makefile.lib
> +++ b/scripts/Makefile.lib
> @@ -307,7 +307,8 @@ $(obj)/%.dtb: $(src)/%.dts $(DTC) FORCE
>
> DT_CHECKER ?= dt-validate
> DT_BINDING_DIR := Documentation/devicetree/bindings
> -DT_TMP_SCHEMA := $(objtree)/$(DT_BINDING_DIR)/processed-schema.yaml
> +# DT_TMP_SCHEMA may be overridden from Documentation/devicetree/bindings/Makefile
> +DT_TMP_SCHEMA ?= $(objtree)/$(DT_BINDING_DIR)/processed-schema.yaml
>
> quiet_cmd_dtb_check = CHECK $@
> cmd_dtb_check = $(DT_CHECKER) -u $(srctree)/$(DT_BINDING_DIR) -p $(DT_TMP_SCHEMA) $@
--
Regards,
Laurent Pinchart
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH v2 1/2] kbuild: Always validate DT binding examples
2020-04-21 10:07 ` Laurent Pinchart
@ 2020-04-21 10:45 ` Masahiro Yamada
2020-04-21 11:05 ` Laurent Pinchart
0 siblings, 1 reply; 18+ messages in thread
From: Masahiro Yamada @ 2020-04-21 10:45 UTC (permalink / raw)
To: Laurent Pinchart
Cc: Rob Herring, DTML, Linux Kernel Mailing List, Michal Marek,
Linux Kbuild mailing list
On Tue, Apr 21, 2020 at 7:08 PM Laurent Pinchart
<laurent.pinchart@ideasonboard.com> wrote:
>
> Hi Rob,
>
> On Fri, Feb 28, 2020 at 06:37:30PM -0600, Rob Herring wrote:
> > Most folks only run dt_binding_check on the single schema they care about
> > by setting DT_SCHEMA_FILES. That means example is only checked against
> > that one schema which is not always sufficient.
> >
> > Let's address this by splitting processed-schema.yaml into 2 files: one
> > that's always all schemas for the examples and one that's just the schema
> > in DT_SCHEMA_FILES for dtbs.
>
> This broke
>
> make DT_SCHEMA_FILES=Documentation/devicetree/.. dt_binding_check
What is intended by
"DT_SCHEMA_FILES=Documentation/devicetree/.." ?
>
> for me :-(
>
> make[1]: Entering directory '/home/laurent/src/linux/output/arm32'
> make[2]: execvp: /bin/sh: Argument list too long
> make[2]: *** [/home/laurent/src/linux/Documentation/devicetree/bindings/Makefile:35: Documentation/devicetree/bindings/processed-schema-examples.yaml] Error 127
> make[1]: *** [/home/laurent/src/linux/Makefile:1296: dt_binding_check] Error 2
> make[1]: Leaving directory '/home/laurent/src/linux/output/arm32'
> make: *** [Makefile:180: sub-make] Error 2
>
> Before the patch, dt-mk-schema was called with DT_SCHEMA_FILES only, and
> it is now called with DT_DOCS unconditionally.
>
> > Cc: Michal Marek <michal.lkml@markovi.net>
> > Cc: linux-kbuild@vger.kernel.org
> > Co-developed-by: Masahiro Yamada <masahiroy@kernel.org>
> > Signed-off-by: Rob Herring <robh@kernel.org>
> > ---
> > Masahiro, given you pretty much re-wrote this, I added you as
> > Co-developed-by.
> >
> > Based on next/master
> >
> > Documentation/devicetree/bindings/.gitignore | 2 +-
> > Documentation/devicetree/bindings/Makefile | 22 +++++++++++++-------
> > scripts/Makefile.lib | 3 ++-
> > 3 files changed, 17 insertions(+), 10 deletions(-)
> >
> > diff --git a/Documentation/devicetree/bindings/.gitignore b/Documentation/devicetree/bindings/.gitignore
> > index ef82fcfcccab..57afa1533a5f 100644
> > --- a/Documentation/devicetree/bindings/.gitignore
> > +++ b/Documentation/devicetree/bindings/.gitignore
> > @@ -1,2 +1,2 @@
> > *.example.dts
> > -processed-schema.yaml
> > +processed-schema*.yaml
> > diff --git a/Documentation/devicetree/bindings/Makefile b/Documentation/devicetree/bindings/Makefile
> > index 646cb3525373..7c40d5ba1b51 100644
> > --- a/Documentation/devicetree/bindings/Makefile
> > +++ b/Documentation/devicetree/bindings/Makefile
> > @@ -2,7 +2,6 @@
> > DT_DOC_CHECKER ?= dt-doc-validate
> > DT_EXTRACT_EX ?= dt-extract-example
> > DT_MK_SCHEMA ?= dt-mk-schema
> > -DT_MK_SCHEMA_FLAGS := $(if $(DT_SCHEMA_FILES), -u)
> >
> > quiet_cmd_chk_binding = CHKDT $(patsubst $(srctree)/%,%,$<)
> > cmd_chk_binding = $(DT_DOC_CHECKER) -u $(srctree)/$(src) $< ; \
> > @@ -11,26 +10,33 @@ quiet_cmd_chk_binding = CHKDT $(patsubst $(srctree)/%,%,$<)
> > $(obj)/%.example.dts: $(src)/%.yaml FORCE
> > $(call if_changed,chk_binding)
> >
> > -DT_TMP_SCHEMA := processed-schema.yaml
> > +# Use full schemas when checking %.example.dts
> > +DT_TMP_SCHEMA := $(obj)/processed-schema-examples.yaml
> >
> > quiet_cmd_mk_schema = SCHEMA $@
> > cmd_mk_schema = $(DT_MK_SCHEMA) $(DT_MK_SCHEMA_FLAGS) -o $@ $(real-prereqs)
> >
> > -DT_DOCS = $(shell \
> > +DT_DOCS = $(addprefix $(src)/, \
> > + $(shell \
> > cd $(srctree)/$(src) && \
> > find * \( -name '*.yaml' ! \
> > - -name $(DT_TMP_SCHEMA) ! \
> > + -name 'processed-schema*' ! \
> > -name '*.example.dt.yaml' \) \
> > - )
> > + ))
> >
> > -DT_SCHEMA_FILES ?= $(addprefix $(src)/,$(DT_DOCS))
> > +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
> > +
> > +$(obj)/processed-schema-examples.yaml: $(DT_DOCS) FORCE
> > + $(call if_changed,mk_schema)
> > endif
> >
> > -$(obj)/$(DT_TMP_SCHEMA): $(DT_SCHEMA_FILES) FORCE
> > +$(obj)/processed-schema.yaml: DT_MK_SCHEMA_FLAGS := -u
> > +$(obj)/processed-schema.yaml: $(DT_SCHEMA_FILES) FORCE
> > $(call if_changed,mk_schema)
> >
> > -extra-y += $(DT_TMP_SCHEMA)
> > +extra-y += processed-schema.yaml
> > diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
> > index f5ff506e4a24..b12dd5ba4896 100644
> > --- a/scripts/Makefile.lib
> > +++ b/scripts/Makefile.lib
> > @@ -307,7 +307,8 @@ $(obj)/%.dtb: $(src)/%.dts $(DTC) FORCE
> >
> > DT_CHECKER ?= dt-validate
> > DT_BINDING_DIR := Documentation/devicetree/bindings
> > -DT_TMP_SCHEMA := $(objtree)/$(DT_BINDING_DIR)/processed-schema.yaml
> > +# DT_TMP_SCHEMA may be overridden from Documentation/devicetree/bindings/Makefile
> > +DT_TMP_SCHEMA ?= $(objtree)/$(DT_BINDING_DIR)/processed-schema.yaml
> >
> > quiet_cmd_dtb_check = CHECK $@
> > cmd_dtb_check = $(DT_CHECKER) -u $(srctree)/$(DT_BINDING_DIR) -p $(DT_TMP_SCHEMA) $@
>
> --
> Regards,
>
> Laurent Pinchart
--
Best Regards
Masahiro Yamada
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH v2 1/2] kbuild: Always validate DT binding examples
2020-04-21 10:45 ` Masahiro Yamada
@ 2020-04-21 11:05 ` Laurent Pinchart
2020-04-21 13:15 ` Masahiro Yamada
0 siblings, 1 reply; 18+ messages in thread
From: Laurent Pinchart @ 2020-04-21 11:05 UTC (permalink / raw)
To: Masahiro Yamada
Cc: Rob Herring, DTML, Linux Kernel Mailing List, Michal Marek,
Linux Kbuild mailing list
Hi Yamada-san,
On Tue, Apr 21, 2020 at 07:45:05PM +0900, Masahiro Yamada wrote:
> On Tue, Apr 21, 2020 at 7:08 PM Laurent Pinchart wrote:
> > On Fri, Feb 28, 2020 at 06:37:30PM -0600, Rob Herring wrote:
> > > Most folks only run dt_binding_check on the single schema they care about
> > > by setting DT_SCHEMA_FILES. That means example is only checked against
> > > that one schema which is not always sufficient.
> > >
> > > Let's address this by splitting processed-schema.yaml into 2 files: one
> > > that's always all schemas for the examples and one that's just the schema
> > > in DT_SCHEMA_FILES for dtbs.
> >
> > This broke
> >
> > make DT_SCHEMA_FILES=Documentation/devicetree/.. dt_binding_check
>
> What is intended by
> "DT_SCHEMA_FILES=Documentation/devicetree/.." ?
My bad, I forgot to write that ... is the continuation of the string.
It's any yaml schema file that has an example.
> > for me :-(
> >
> > make[1]: Entering directory '/home/laurent/src/linux/output/arm32'
> > make[2]: execvp: /bin/sh: Argument list too long
> > make[2]: *** [/home/laurent/src/linux/Documentation/devicetree/bindings/Makefile:35: Documentation/devicetree/bindings/processed-schema-examples.yaml] Error 127
> > make[1]: *** [/home/laurent/src/linux/Makefile:1296: dt_binding_check] Error 2
> > make[1]: Leaving directory '/home/laurent/src/linux/output/arm32'
> > make: *** [Makefile:180: sub-make] Error 2
> >
> > Before the patch, dt-mk-schema was called with DT_SCHEMA_FILES only, and
> > it is now called with DT_DOCS unconditionally.
> >
> > > Cc: Michal Marek <michal.lkml@markovi.net>
> > > Cc: linux-kbuild@vger.kernel.org
> > > Co-developed-by: Masahiro Yamada <masahiroy@kernel.org>
> > > Signed-off-by: Rob Herring <robh@kernel.org>
> > > ---
> > > Masahiro, given you pretty much re-wrote this, I added you as
> > > Co-developed-by.
> > >
> > > Based on next/master
> > >
> > > Documentation/devicetree/bindings/.gitignore | 2 +-
> > > Documentation/devicetree/bindings/Makefile | 22 +++++++++++++-------
> > > scripts/Makefile.lib | 3 ++-
> > > 3 files changed, 17 insertions(+), 10 deletions(-)
> > >
> > > diff --git a/Documentation/devicetree/bindings/.gitignore b/Documentation/devicetree/bindings/.gitignore
> > > index ef82fcfcccab..57afa1533a5f 100644
> > > --- a/Documentation/devicetree/bindings/.gitignore
> > > +++ b/Documentation/devicetree/bindings/.gitignore
> > > @@ -1,2 +1,2 @@
> > > *.example.dts
> > > -processed-schema.yaml
> > > +processed-schema*.yaml
> > > diff --git a/Documentation/devicetree/bindings/Makefile b/Documentation/devicetree/bindings/Makefile
> > > index 646cb3525373..7c40d5ba1b51 100644
> > > --- a/Documentation/devicetree/bindings/Makefile
> > > +++ b/Documentation/devicetree/bindings/Makefile
> > > @@ -2,7 +2,6 @@
> > > DT_DOC_CHECKER ?= dt-doc-validate
> > > DT_EXTRACT_EX ?= dt-extract-example
> > > DT_MK_SCHEMA ?= dt-mk-schema
> > > -DT_MK_SCHEMA_FLAGS := $(if $(DT_SCHEMA_FILES), -u)
> > >
> > > quiet_cmd_chk_binding = CHKDT $(patsubst $(srctree)/%,%,$<)
> > > cmd_chk_binding = $(DT_DOC_CHECKER) -u $(srctree)/$(src) $< ; \
> > > @@ -11,26 +10,33 @@ quiet_cmd_chk_binding = CHKDT $(patsubst $(srctree)/%,%,$<)
> > > $(obj)/%.example.dts: $(src)/%.yaml FORCE
> > > $(call if_changed,chk_binding)
> > >
> > > -DT_TMP_SCHEMA := processed-schema.yaml
> > > +# Use full schemas when checking %.example.dts
> > > +DT_TMP_SCHEMA := $(obj)/processed-schema-examples.yaml
> > >
> > > quiet_cmd_mk_schema = SCHEMA $@
> > > cmd_mk_schema = $(DT_MK_SCHEMA) $(DT_MK_SCHEMA_FLAGS) -o $@ $(real-prereqs)
> > >
> > > -DT_DOCS = $(shell \
> > > +DT_DOCS = $(addprefix $(src)/, \
> > > + $(shell \
> > > cd $(srctree)/$(src) && \
> > > find * \( -name '*.yaml' ! \
> > > - -name $(DT_TMP_SCHEMA) ! \
> > > + -name 'processed-schema*' ! \
> > > -name '*.example.dt.yaml' \) \
> > > - )
> > > + ))
> > >
> > > -DT_SCHEMA_FILES ?= $(addprefix $(src)/,$(DT_DOCS))
> > > +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
> > > +
> > > +$(obj)/processed-schema-examples.yaml: $(DT_DOCS) FORCE
> > > + $(call if_changed,mk_schema)
> > > endif
> > >
> > > -$(obj)/$(DT_TMP_SCHEMA): $(DT_SCHEMA_FILES) FORCE
> > > +$(obj)/processed-schema.yaml: DT_MK_SCHEMA_FLAGS := -u
> > > +$(obj)/processed-schema.yaml: $(DT_SCHEMA_FILES) FORCE
> > > $(call if_changed,mk_schema)
> > >
> > > -extra-y += $(DT_TMP_SCHEMA)
> > > +extra-y += processed-schema.yaml
> > > diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
> > > index f5ff506e4a24..b12dd5ba4896 100644
> > > --- a/scripts/Makefile.lib
> > > +++ b/scripts/Makefile.lib
> > > @@ -307,7 +307,8 @@ $(obj)/%.dtb: $(src)/%.dts $(DTC) FORCE
> > >
> > > DT_CHECKER ?= dt-validate
> > > DT_BINDING_DIR := Documentation/devicetree/bindings
> > > -DT_TMP_SCHEMA := $(objtree)/$(DT_BINDING_DIR)/processed-schema.yaml
> > > +# DT_TMP_SCHEMA may be overridden from Documentation/devicetree/bindings/Makefile
> > > +DT_TMP_SCHEMA ?= $(objtree)/$(DT_BINDING_DIR)/processed-schema.yaml
> > >
> > > quiet_cmd_dtb_check = CHECK $@
> > > cmd_dtb_check = $(DT_CHECKER) -u $(srctree)/$(DT_BINDING_DIR) -p $(DT_TMP_SCHEMA) $@
--
Regards,
Laurent Pinchart
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH v2 1/2] kbuild: Always validate DT binding examples
2020-04-21 11:05 ` Laurent Pinchart
@ 2020-04-21 13:15 ` Masahiro Yamada
2020-04-21 13:46 ` Laurent Pinchart
2020-04-21 13:47 ` Rob Herring
0 siblings, 2 replies; 18+ messages in thread
From: Masahiro Yamada @ 2020-04-21 13:15 UTC (permalink / raw)
To: Laurent Pinchart
Cc: Rob Herring, DTML, Linux Kernel Mailing List, Michal Marek,
Linux Kbuild mailing list
Hi Laurent,
On Tue, Apr 21, 2020 at 8:05 PM Laurent Pinchart
<laurent.pinchart@ideasonboard.com> wrote:
>
> Hi Yamada-san,
>
> On Tue, Apr 21, 2020 at 07:45:05PM +0900, Masahiro Yamada wrote:
> > On Tue, Apr 21, 2020 at 7:08 PM Laurent Pinchart wrote:
> > > On Fri, Feb 28, 2020 at 06:37:30PM -0600, Rob Herring wrote:
> > > > Most folks only run dt_binding_check on the single schema they care about
> > > > by setting DT_SCHEMA_FILES. That means example is only checked against
> > > > that one schema which is not always sufficient.
> > > >
> > > > Let's address this by splitting processed-schema.yaml into 2 files: one
> > > > that's always all schemas for the examples and one that's just the schema
> > > > in DT_SCHEMA_FILES for dtbs.
> > >
> > > This broke
> > >
> > > make DT_SCHEMA_FILES=Documentation/devicetree/.. dt_binding_check
> >
> > What is intended by
> > "DT_SCHEMA_FILES=Documentation/devicetree/.." ?
>
> My bad, I forgot to write that ... is the continuation of the string.
> It's any yaml schema file that has an example.
Ah, OK. I just input verbatim.
Is it broken?
You can specify any individual file(s) under Documentation/devicetree/bindings/.
For example, the following worked for me.
$ make DT_SCHEMA_FILES=Documentation/devicetree/bindings/arm/psci.yaml
dt_binding_check
HOSTCC scripts/basic/fixdep
HOSTCC scripts/dtc/dtc.o
HOSTCC scripts/dtc/flattree.o
HOSTCC scripts/dtc/fstree.o
HOSTCC scripts/dtc/data.o
HOSTCC scripts/dtc/livetree.o
HOSTCC scripts/dtc/treesource.o
HOSTCC scripts/dtc/srcpos.o
HOSTCC scripts/dtc/checks.o
HOSTCC scripts/dtc/util.o
LEX scripts/dtc/dtc-lexer.lex.c
YACC scripts/dtc/dtc-parser.tab.[ch]
HOSTCC scripts/dtc/dtc-lexer.lex.o
HOSTCC scripts/dtc/dtc-parser.tab.o
HOSTCC scripts/dtc/yamltree.o
HOSTLD scripts/dtc/dtc
CHKDT Documentation/devicetree/bindings/arm/psci.yaml
SCHEMA Documentation/devicetree/bindings/processed-schema-examples.yaml
DTC Documentation/devicetree/bindings/arm/psci.example.dt.yaml
CHECK Documentation/devicetree/bindings/arm/psci.example.dt.yaml
SCHEMA Documentation/devicetree/bindings/processed-schema.yaml
--
Best Regards
Masahiro Yamada
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH v2 1/2] kbuild: Always validate DT binding examples
2020-04-21 13:15 ` Masahiro Yamada
@ 2020-04-21 13:46 ` Laurent Pinchart
2020-04-21 14:01 ` Rob Herring
2020-04-21 17:36 ` Masahiro Yamada
2020-04-21 13:47 ` Rob Herring
1 sibling, 2 replies; 18+ messages in thread
From: Laurent Pinchart @ 2020-04-21 13:46 UTC (permalink / raw)
To: Masahiro Yamada
Cc: Rob Herring, DTML, Linux Kernel Mailing List, Michal Marek,
Linux Kbuild mailing list
Hi Yamada-san,
On Tue, Apr 21, 2020 at 10:15:02PM +0900, Masahiro Yamada wrote:
> On Tue, Apr 21, 2020 at 8:05 PM Laurent Pinchart wrote:
> > On Tue, Apr 21, 2020 at 07:45:05PM +0900, Masahiro Yamada wrote:
> > > On Tue, Apr 21, 2020 at 7:08 PM Laurent Pinchart wrote:
> > > > On Fri, Feb 28, 2020 at 06:37:30PM -0600, Rob Herring wrote:
> > > > > Most folks only run dt_binding_check on the single schema they care about
> > > > > by setting DT_SCHEMA_FILES. That means example is only checked against
> > > > > that one schema which is not always sufficient.
> > > > >
> > > > > Let's address this by splitting processed-schema.yaml into 2 files: one
> > > > > that's always all schemas for the examples and one that's just the schema
> > > > > in DT_SCHEMA_FILES for dtbs.
> > > >
> > > > This broke
> > > >
> > > > make DT_SCHEMA_FILES=Documentation/devicetree/.. dt_binding_check
> > >
> > > What is intended by
> > > "DT_SCHEMA_FILES=Documentation/devicetree/.." ?
> >
> > My bad, I forgot to write that ... is the continuation of the string.
> > It's any yaml schema file that has an example.
>
> Ah, OK. I just input verbatim.
>
> Is it broken?
>
> You can specify any individual file(s) under Documentation/devicetree/bindings/.
>
> For example, the following worked for me.
>
> $ make DT_SCHEMA_FILES=Documentation/devicetree/bindings/arm/psci.yaml
> dt_binding_check
> HOSTCC scripts/basic/fixdep
> HOSTCC scripts/dtc/dtc.o
> HOSTCC scripts/dtc/flattree.o
> HOSTCC scripts/dtc/fstree.o
> HOSTCC scripts/dtc/data.o
> HOSTCC scripts/dtc/livetree.o
> HOSTCC scripts/dtc/treesource.o
> HOSTCC scripts/dtc/srcpos.o
> HOSTCC scripts/dtc/checks.o
> HOSTCC scripts/dtc/util.o
> LEX scripts/dtc/dtc-lexer.lex.c
> YACC scripts/dtc/dtc-parser.tab.[ch]
> HOSTCC scripts/dtc/dtc-lexer.lex.o
> HOSTCC scripts/dtc/dtc-parser.tab.o
> HOSTCC scripts/dtc/yamltree.o
> HOSTLD scripts/dtc/dtc
> CHKDT Documentation/devicetree/bindings/arm/psci.yaml
> SCHEMA Documentation/devicetree/bindings/processed-schema-examples.yaml
> DTC Documentation/devicetree/bindings/arm/psci.example.dt.yaml
> CHECK Documentation/devicetree/bindings/arm/psci.example.dt.yaml
> SCHEMA Documentation/devicetree/bindings/processed-schema.yaml
This is getting interesting.
~/src/kernel/linux $ make O=output/x86 DT_SCHEMA_FILES=Documentation/devicetree/bindings/arm/psci.yaml dt_binding_check
make[1]: Entering directory '/home/laurent/src/kernel/linux/output/x86'
HOSTCC scripts/basic/fixdep
HOSTCC scripts/dtc/dtc.o
HOSTCC scripts/dtc/flattree.o
HOSTCC scripts/dtc/fstree.o
HOSTCC scripts/dtc/data.o
HOSTCC scripts/dtc/livetree.o
HOSTCC scripts/dtc/treesource.o
HOSTCC scripts/dtc/srcpos.o
HOSTCC scripts/dtc/checks.o
HOSTCC scripts/dtc/util.o
LEX scripts/dtc/dtc-lexer.lex.c
YACC scripts/dtc/dtc-parser.tab.[ch]
HOSTCC scripts/dtc/dtc-lexer.lex.o
HOSTCC scripts/dtc/dtc-parser.tab.o
HOSTCC scripts/dtc/yamltree.o
HOSTLD scripts/dtc/dtc
CHKDT Documentation/devicetree/bindings/arm/psci.yaml
SCHEMA Documentation/devicetree/bindings/processed-schema-examples.yaml
DTC Documentation/devicetree/bindings/arm/psci.example.dt.yaml
CHECK Documentation/devicetree/bindings/arm/psci.example.dt.yaml
SCHEMA Documentation/devicetree/bindings/processed-schema.yaml
make[1]: Leaving directory '/home/laurent/src/kernel/linux/output/x86'
~/src/kernel/this_is_a_long_directory_name/linux $ make O=output/x86 DT_SCHEMA_FILES=Documentation/devicetree/bindings/arm/psci.yaml dt_binding_check
make[1]: Entering directory '/home/laurent/src/kernel/this_is_a_long_directory_name/linux/output/x86'
HOSTCC scripts/basic/fixdep
HOSTCC scripts/dtc/dtc.o
HOSTCC scripts/dtc/flattree.o
HOSTCC scripts/dtc/fstree.o
HOSTCC scripts/dtc/data.o
HOSTCC scripts/dtc/livetree.o
HOSTCC scripts/dtc/treesource.o
HOSTCC scripts/dtc/srcpos.o
HOSTCC scripts/dtc/checks.o
HOSTCC scripts/dtc/util.o
LEX scripts/dtc/dtc-lexer.lex.c
YACC scripts/dtc/dtc-parser.tab.[ch]
HOSTCC scripts/dtc/dtc-lexer.lex.o
HOSTCC scripts/dtc/dtc-parser.tab.o
HOSTCC scripts/dtc/yamltree.o
HOSTLD scripts/dtc/dtc
CHKDT Documentation/devicetree/bindings/arm/psci.yaml
make[2]: execvp: /bin/sh: Argument list too long
make[2]: *** [/home/laurent/src/kernel/this_is_a_long_directory_name/linux/Documentation/devicetree/bindings/Makefile:38: Documentation/devicetree/bindings/processed-schema-examples.yaml] Error 127
make[1]: *** [/home/laurent/src/kernel/this_is_a_long_directory_name/linux/Makefile:1300: dt_binding_check] Error 2
make[1]: Leaving directory '/home/laurent/src/kernel/this_is_a_long_directory_name/linux/output/x86'
make: *** [Makefile:180: sub-make] Error 2
It seems to only fail with out of tree builds (O=...). I expect that
failures will become more common the more YAML bindings we have, even
without long directory names.
--
Regards,
Laurent Pinchart
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH v2 1/2] kbuild: Always validate DT binding examples
2020-04-21 13:46 ` Laurent Pinchart
@ 2020-04-21 14:01 ` Rob Herring
2020-04-21 16:56 ` Masahiro Yamada
2020-04-21 18:29 ` Laurent Pinchart
2020-04-21 17:36 ` Masahiro Yamada
1 sibling, 2 replies; 18+ messages in thread
From: Rob Herring @ 2020-04-21 14:01 UTC (permalink / raw)
To: Laurent Pinchart
Cc: Masahiro Yamada, DTML, Linux Kernel Mailing List, Michal Marek,
Linux Kbuild mailing list
On Tue, Apr 21, 2020 at 8:47 AM Laurent Pinchart
<laurent.pinchart@ideasonboard.com> wrote:
>
> Hi Yamada-san,
>
> On Tue, Apr 21, 2020 at 10:15:02PM +0900, Masahiro Yamada wrote:
> > On Tue, Apr 21, 2020 at 8:05 PM Laurent Pinchart wrote:
> > > On Tue, Apr 21, 2020 at 07:45:05PM +0900, Masahiro Yamada wrote:
> > > > On Tue, Apr 21, 2020 at 7:08 PM Laurent Pinchart wrote:
> > > > > On Fri, Feb 28, 2020 at 06:37:30PM -0600, Rob Herring wrote:
> > > > > > Most folks only run dt_binding_check on the single schema they care about
> > > > > > by setting DT_SCHEMA_FILES. That means example is only checked against
> > > > > > that one schema which is not always sufficient.
> > > > > >
> > > > > > Let's address this by splitting processed-schema.yaml into 2 files: one
> > > > > > that's always all schemas for the examples and one that's just the schema
> > > > > > in DT_SCHEMA_FILES for dtbs.
> > > > >
> > > > > This broke
> > > > >
> > > > > make DT_SCHEMA_FILES=Documentation/devicetree/.. dt_binding_check
> > > >
> > > > What is intended by
> > > > "DT_SCHEMA_FILES=Documentation/devicetree/.." ?
> > >
> > > My bad, I forgot to write that ... is the continuation of the string.
> > > It's any yaml schema file that has an example.
> >
> > Ah, OK. I just input verbatim.
> >
> > Is it broken?
> >
> > You can specify any individual file(s) under Documentation/devicetree/bindings/.
> >
> > For example, the following worked for me.
> >
> > $ make DT_SCHEMA_FILES=Documentation/devicetree/bindings/arm/psci.yaml
> > dt_binding_check
> > HOSTCC scripts/basic/fixdep
> > HOSTCC scripts/dtc/dtc.o
> > HOSTCC scripts/dtc/flattree.o
> > HOSTCC scripts/dtc/fstree.o
> > HOSTCC scripts/dtc/data.o
> > HOSTCC scripts/dtc/livetree.o
> > HOSTCC scripts/dtc/treesource.o
> > HOSTCC scripts/dtc/srcpos.o
> > HOSTCC scripts/dtc/checks.o
> > HOSTCC scripts/dtc/util.o
> > LEX scripts/dtc/dtc-lexer.lex.c
> > YACC scripts/dtc/dtc-parser.tab.[ch]
> > HOSTCC scripts/dtc/dtc-lexer.lex.o
> > HOSTCC scripts/dtc/dtc-parser.tab.o
> > HOSTCC scripts/dtc/yamltree.o
> > HOSTLD scripts/dtc/dtc
> > CHKDT Documentation/devicetree/bindings/arm/psci.yaml
> > SCHEMA Documentation/devicetree/bindings/processed-schema-examples.yaml
> > DTC Documentation/devicetree/bindings/arm/psci.example.dt.yaml
> > CHECK Documentation/devicetree/bindings/arm/psci.example.dt.yaml
> > SCHEMA Documentation/devicetree/bindings/processed-schema.yaml
>
> This is getting interesting.
>
> ~/src/kernel/linux $ make O=output/x86 DT_SCHEMA_FILES=Documentation/devicetree/bindings/arm/psci.yaml dt_binding_check
> make[1]: Entering directory '/home/laurent/src/kernel/linux/output/x86'
> HOSTCC scripts/basic/fixdep
> HOSTCC scripts/dtc/dtc.o
> HOSTCC scripts/dtc/flattree.o
> HOSTCC scripts/dtc/fstree.o
> HOSTCC scripts/dtc/data.o
> HOSTCC scripts/dtc/livetree.o
> HOSTCC scripts/dtc/treesource.o
> HOSTCC scripts/dtc/srcpos.o
> HOSTCC scripts/dtc/checks.o
> HOSTCC scripts/dtc/util.o
> LEX scripts/dtc/dtc-lexer.lex.c
> YACC scripts/dtc/dtc-parser.tab.[ch]
> HOSTCC scripts/dtc/dtc-lexer.lex.o
> HOSTCC scripts/dtc/dtc-parser.tab.o
> HOSTCC scripts/dtc/yamltree.o
> HOSTLD scripts/dtc/dtc
> CHKDT Documentation/devicetree/bindings/arm/psci.yaml
> SCHEMA Documentation/devicetree/bindings/processed-schema-examples.yaml
> DTC Documentation/devicetree/bindings/arm/psci.example.dt.yaml
> CHECK Documentation/devicetree/bindings/arm/psci.example.dt.yaml
> SCHEMA Documentation/devicetree/bindings/processed-schema.yaml
> make[1]: Leaving directory '/home/laurent/src/kernel/linux/output/x86'
>
> ~/src/kernel/this_is_a_long_directory_name/linux $ make O=output/x86 DT_SCHEMA_FILES=Documentation/devicetree/bindings/arm/psci.yaml dt_binding_check
> make[1]: Entering directory '/home/laurent/src/kernel/this_is_a_long_directory_name/linux/output/x86'
> HOSTCC scripts/basic/fixdep
> HOSTCC scripts/dtc/dtc.o
> HOSTCC scripts/dtc/flattree.o
> HOSTCC scripts/dtc/fstree.o
> HOSTCC scripts/dtc/data.o
> HOSTCC scripts/dtc/livetree.o
> HOSTCC scripts/dtc/treesource.o
> HOSTCC scripts/dtc/srcpos.o
> HOSTCC scripts/dtc/checks.o
> HOSTCC scripts/dtc/util.o
> LEX scripts/dtc/dtc-lexer.lex.c
> YACC scripts/dtc/dtc-parser.tab.[ch]
> HOSTCC scripts/dtc/dtc-lexer.lex.o
> HOSTCC scripts/dtc/dtc-parser.tab.o
> HOSTCC scripts/dtc/yamltree.o
> HOSTLD scripts/dtc/dtc
> CHKDT Documentation/devicetree/bindings/arm/psci.yaml
> make[2]: execvp: /bin/sh: Argument list too long
> make[2]: *** [/home/laurent/src/kernel/this_is_a_long_directory_name/linux/Documentation/devicetree/bindings/Makefile:38: Documentation/devicetree/bindings/processed-schema-examples.yaml] Error 127
> make[1]: *** [/home/laurent/src/kernel/this_is_a_long_directory_name/linux/Makefile:1300: dt_binding_check] Error 2
> make[1]: Leaving directory '/home/laurent/src/kernel/this_is_a_long_directory_name/linux/output/x86'
> make: *** [Makefile:180: sub-make] Error 2
>
> It seems to only fail with out of tree builds (O=...). I expect that
> failures will become more common the more YAML bindings we have, even
> without long directory names.
dt-mk-schema can take and recurse a single directory already, so does
this fix it for you:
@@ -22,7 +22,7 @@ $(obj)/%.example.dts: $(src)/%.yaml
check_dtschema_version FORCE
DT_TMP_SCHEMA := $(obj)/processed-schema-examples.yaml
quiet_cmd_mk_schema = SCHEMA $@
- cmd_mk_schema = $(DT_MK_SCHEMA) $(DT_MK_SCHEMA_FLAGS) -o $@
$(real-prereqs)
+ cmd_mk_schema = $(DT_MK_SCHEMA) $(DT_MK_SCHEMA_FLAGS) -o $@
$(srctree)/$(src)
DT_DOCS = $(addprefix $(src)/, \
$(shell \
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH v2 1/2] kbuild: Always validate DT binding examples
2020-04-21 14:01 ` Rob Herring
@ 2020-04-21 16:56 ` Masahiro Yamada
2020-04-21 19:31 ` Rob Herring
2020-04-21 18:29 ` Laurent Pinchart
1 sibling, 1 reply; 18+ messages in thread
From: Masahiro Yamada @ 2020-04-21 16:56 UTC (permalink / raw)
To: Rob Herring
Cc: Laurent Pinchart, DTML, Linux Kernel Mailing List, Michal Marek,
Linux Kbuild mailing list
Hi Rob,
On Tue, Apr 21, 2020 at 11:01 PM Rob Herring <robh@kernel.org> wrote:
> >
> > It seems to only fail with out of tree builds (O=...). I expect that
> > failures will become more common the more YAML bindings we have, even
> > without long directory names.
>
> dt-mk-schema can take and recurse a single directory already, so does
> this fix it for you:
>
> @@ -22,7 +22,7 @@ $(obj)/%.example.dts: $(src)/%.yaml
> check_dtschema_version FORCE
> DT_TMP_SCHEMA := $(obj)/processed-schema-examples.yaml
>
> quiet_cmd_mk_schema = SCHEMA $@
> - cmd_mk_schema = $(DT_MK_SCHEMA) $(DT_MK_SCHEMA_FLAGS) -o $@
> $(real-prereqs)
> + cmd_mk_schema = $(DT_MK_SCHEMA) $(DT_MK_SCHEMA_FLAGS) -o $@
> $(srctree)/$(src)
I am just curious.
How come the tool excludes 'processed-schema*' and '*.example.dt.yaml'
from $(srctree)/$(src) ?
--
Best Regards
Masahiro Yamada
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH v2 1/2] kbuild: Always validate DT binding examples
2020-04-21 16:56 ` Masahiro Yamada
@ 2020-04-21 19:31 ` Rob Herring
2020-04-21 20:40 ` Rob Herring
0 siblings, 1 reply; 18+ messages in thread
From: Rob Herring @ 2020-04-21 19:31 UTC (permalink / raw)
To: Masahiro Yamada
Cc: Laurent Pinchart, DTML, Linux Kernel Mailing List, Michal Marek,
Linux Kbuild mailing list
On Tue, Apr 21, 2020 at 11:57 AM Masahiro Yamada <masahiroy@kernel.org> wrote:
>
> Hi Rob,
>
>
> On Tue, Apr 21, 2020 at 11:01 PM Rob Herring <robh@kernel.org> wrote:
> > >
> > > It seems to only fail with out of tree builds (O=...). I expect that
> > > failures will become more common the more YAML bindings we have, even
> > > without long directory names.
> >
> > dt-mk-schema can take and recurse a single directory already, so does
> > this fix it for you:
> >
> > @@ -22,7 +22,7 @@ $(obj)/%.example.dts: $(src)/%.yaml
> > check_dtschema_version FORCE
> > DT_TMP_SCHEMA := $(obj)/processed-schema-examples.yaml
> >
> > quiet_cmd_mk_schema = SCHEMA $@
> > - cmd_mk_schema = $(DT_MK_SCHEMA) $(DT_MK_SCHEMA_FLAGS) -o $@
> > $(real-prereqs)
> > + cmd_mk_schema = $(DT_MK_SCHEMA) $(DT_MK_SCHEMA_FLAGS) -o $@
> > $(srctree)/$(src)
>
>
> I am just curious.
>
> How come the tool excludes 'processed-schema*' and '*.example.dt.yaml'
> from $(srctree)/$(src) ?
Uggg, it wouldn't. Can't everyone build out of tree. ;) I guess the options are:
- Call dt-mk-schema on each file individually appending the result
- Make dt-mk-schema take stdin or a file with a list of files as
Masahiro suggested
I'd like to avoid a dt-mk-schema change so I'll try to make the former
work. It's only been a day since adding a minimum version. :(
Rob
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH v2 1/2] kbuild: Always validate DT binding examples
2020-04-21 19:31 ` Rob Herring
@ 2020-04-21 20:40 ` Rob Herring
0 siblings, 0 replies; 18+ messages in thread
From: Rob Herring @ 2020-04-21 20:40 UTC (permalink / raw)
To: Masahiro Yamada
Cc: Laurent Pinchart, DTML, Linux Kernel Mailing List, Michal Marek,
Linux Kbuild mailing list
On Tue, Apr 21, 2020 at 2:31 PM Rob Herring <robh@kernel.org> wrote:
>
> On Tue, Apr 21, 2020 at 11:57 AM Masahiro Yamada <masahiroy@kernel.org> wrote:
> >
> > Hi Rob,
> >
> >
> > On Tue, Apr 21, 2020 at 11:01 PM Rob Herring <robh@kernel.org> wrote:
> > > >
> > > > It seems to only fail with out of tree builds (O=...). I expect that
> > > > failures will become more common the more YAML bindings we have, even
> > > > without long directory names.
> > >
> > > dt-mk-schema can take and recurse a single directory already, so does
> > > this fix it for you:
> > >
> > > @@ -22,7 +22,7 @@ $(obj)/%.example.dts: $(src)/%.yaml
> > > check_dtschema_version FORCE
> > > DT_TMP_SCHEMA := $(obj)/processed-schema-examples.yaml
> > >
> > > quiet_cmd_mk_schema = SCHEMA $@
> > > - cmd_mk_schema = $(DT_MK_SCHEMA) $(DT_MK_SCHEMA_FLAGS) -o $@
> > > $(real-prereqs)
> > > + cmd_mk_schema = $(DT_MK_SCHEMA) $(DT_MK_SCHEMA_FLAGS) -o $@
> > > $(srctree)/$(src)
> >
> >
> > I am just curious.
> >
> > How come the tool excludes 'processed-schema*' and '*.example.dt.yaml'
> > from $(srctree)/$(src) ?
>
> Uggg, it wouldn't. Can't everyone build out of tree. ;) I guess the options are:
>
> - Call dt-mk-schema on each file individually appending the result
> - Make dt-mk-schema take stdin or a file with a list of files as
> Masahiro suggested
>
> I'd like to avoid a dt-mk-schema change so I'll try to make the former
> work. It's only been a day since adding a minimum version. :(
Laurent, does this work for you? I've reproduced the problem, but just
double checking.
DT_TMP_SCHEMA := $(obj)/processed-schema-examples.yaml
quiet_cmd_mk_schema = SCHEMA $@
- cmd_mk_schema = $(DT_MK_SCHEMA) $(DT_MK_SCHEMA_FLAGS) -o $@
$(real-prereqs)
+ cmd_mk_schema = $(file >$@.tmp, $(real-prereqs)) \
+ cat $@.tmp | xargs $(DT_MK_SCHEMA)
$(DT_MK_SCHEMA_FLAGS) -o $@
DT_DOCS = $(addprefix $(src)/, \
$(shell \
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH v2 1/2] kbuild: Always validate DT binding examples
2020-04-21 14:01 ` Rob Herring
2020-04-21 16:56 ` Masahiro Yamada
@ 2020-04-21 18:29 ` Laurent Pinchart
1 sibling, 0 replies; 18+ messages in thread
From: Laurent Pinchart @ 2020-04-21 18:29 UTC (permalink / raw)
To: Rob Herring
Cc: Masahiro Yamada, DTML, Linux Kernel Mailing List, Michal Marek,
Linux Kbuild mailing list
Hi Rob,
On Tue, Apr 21, 2020 at 09:01:32AM -0500, Rob Herring wrote:
> On Tue, Apr 21, 2020 at 8:47 AM Laurent Pinchart wrote:
> > On Tue, Apr 21, 2020 at 10:15:02PM +0900, Masahiro Yamada wrote:
> > > On Tue, Apr 21, 2020 at 8:05 PM Laurent Pinchart wrote:
> > > > On Tue, Apr 21, 2020 at 07:45:05PM +0900, Masahiro Yamada wrote:
> > > > > On Tue, Apr 21, 2020 at 7:08 PM Laurent Pinchart wrote:
> > > > > > On Fri, Feb 28, 2020 at 06:37:30PM -0600, Rob Herring wrote:
> > > > > > > Most folks only run dt_binding_check on the single schema they care about
> > > > > > > by setting DT_SCHEMA_FILES. That means example is only checked against
> > > > > > > that one schema which is not always sufficient.
> > > > > > >
> > > > > > > Let's address this by splitting processed-schema.yaml into 2 files: one
> > > > > > > that's always all schemas for the examples and one that's just the schema
> > > > > > > in DT_SCHEMA_FILES for dtbs.
> > > > > >
> > > > > > This broke
> > > > > >
> > > > > > make DT_SCHEMA_FILES=Documentation/devicetree/.. dt_binding_check
> > > > >
> > > > > What is intended by
> > > > > "DT_SCHEMA_FILES=Documentation/devicetree/.." ?
> > > >
> > > > My bad, I forgot to write that ... is the continuation of the string.
> > > > It's any yaml schema file that has an example.
> > >
> > > Ah, OK. I just input verbatim.
> > >
> > > Is it broken?
> > >
> > > You can specify any individual file(s) under Documentation/devicetree/bindings/.
> > >
> > > For example, the following worked for me.
> > >
> > > $ make DT_SCHEMA_FILES=Documentation/devicetree/bindings/arm/psci.yaml
> > > dt_binding_check
> > > HOSTCC scripts/basic/fixdep
> > > HOSTCC scripts/dtc/dtc.o
> > > HOSTCC scripts/dtc/flattree.o
> > > HOSTCC scripts/dtc/fstree.o
> > > HOSTCC scripts/dtc/data.o
> > > HOSTCC scripts/dtc/livetree.o
> > > HOSTCC scripts/dtc/treesource.o
> > > HOSTCC scripts/dtc/srcpos.o
> > > HOSTCC scripts/dtc/checks.o
> > > HOSTCC scripts/dtc/util.o
> > > LEX scripts/dtc/dtc-lexer.lex.c
> > > YACC scripts/dtc/dtc-parser.tab.[ch]
> > > HOSTCC scripts/dtc/dtc-lexer.lex.o
> > > HOSTCC scripts/dtc/dtc-parser.tab.o
> > > HOSTCC scripts/dtc/yamltree.o
> > > HOSTLD scripts/dtc/dtc
> > > CHKDT Documentation/devicetree/bindings/arm/psci.yaml
> > > SCHEMA Documentation/devicetree/bindings/processed-schema-examples.yaml
> > > DTC Documentation/devicetree/bindings/arm/psci.example.dt.yaml
> > > CHECK Documentation/devicetree/bindings/arm/psci.example.dt.yaml
> > > SCHEMA Documentation/devicetree/bindings/processed-schema.yaml
> >
> > This is getting interesting.
> >
> > ~/src/kernel/linux $ make O=output/x86 DT_SCHEMA_FILES=Documentation/devicetree/bindings/arm/psci.yaml dt_binding_check
> > make[1]: Entering directory '/home/laurent/src/kernel/linux/output/x86'
> > HOSTCC scripts/basic/fixdep
> > HOSTCC scripts/dtc/dtc.o
> > HOSTCC scripts/dtc/flattree.o
> > HOSTCC scripts/dtc/fstree.o
> > HOSTCC scripts/dtc/data.o
> > HOSTCC scripts/dtc/livetree.o
> > HOSTCC scripts/dtc/treesource.o
> > HOSTCC scripts/dtc/srcpos.o
> > HOSTCC scripts/dtc/checks.o
> > HOSTCC scripts/dtc/util.o
> > LEX scripts/dtc/dtc-lexer.lex.c
> > YACC scripts/dtc/dtc-parser.tab.[ch]
> > HOSTCC scripts/dtc/dtc-lexer.lex.o
> > HOSTCC scripts/dtc/dtc-parser.tab.o
> > HOSTCC scripts/dtc/yamltree.o
> > HOSTLD scripts/dtc/dtc
> > CHKDT Documentation/devicetree/bindings/arm/psci.yaml
> > SCHEMA Documentation/devicetree/bindings/processed-schema-examples.yaml
> > DTC Documentation/devicetree/bindings/arm/psci.example.dt.yaml
> > CHECK Documentation/devicetree/bindings/arm/psci.example.dt.yaml
> > SCHEMA Documentation/devicetree/bindings/processed-schema.yaml
> > make[1]: Leaving directory '/home/laurent/src/kernel/linux/output/x86'
> >
> > ~/src/kernel/this_is_a_long_directory_name/linux $ make O=output/x86 DT_SCHEMA_FILES=Documentation/devicetree/bindings/arm/psci.yaml dt_binding_check
> > make[1]: Entering directory '/home/laurent/src/kernel/this_is_a_long_directory_name/linux/output/x86'
> > HOSTCC scripts/basic/fixdep
> > HOSTCC scripts/dtc/dtc.o
> > HOSTCC scripts/dtc/flattree.o
> > HOSTCC scripts/dtc/fstree.o
> > HOSTCC scripts/dtc/data.o
> > HOSTCC scripts/dtc/livetree.o
> > HOSTCC scripts/dtc/treesource.o
> > HOSTCC scripts/dtc/srcpos.o
> > HOSTCC scripts/dtc/checks.o
> > HOSTCC scripts/dtc/util.o
> > LEX scripts/dtc/dtc-lexer.lex.c
> > YACC scripts/dtc/dtc-parser.tab.[ch]
> > HOSTCC scripts/dtc/dtc-lexer.lex.o
> > HOSTCC scripts/dtc/dtc-parser.tab.o
> > HOSTCC scripts/dtc/yamltree.o
> > HOSTLD scripts/dtc/dtc
> > CHKDT Documentation/devicetree/bindings/arm/psci.yaml
> > make[2]: execvp: /bin/sh: Argument list too long
> > make[2]: *** [/home/laurent/src/kernel/this_is_a_long_directory_name/linux/Documentation/devicetree/bindings/Makefile:38: Documentation/devicetree/bindings/processed-schema-examples.yaml] Error 127
> > make[1]: *** [/home/laurent/src/kernel/this_is_a_long_directory_name/linux/Makefile:1300: dt_binding_check] Error 2
> > make[1]: Leaving directory '/home/laurent/src/kernel/this_is_a_long_directory_name/linux/output/x86'
> > make: *** [Makefile:180: sub-make] Error 2
> >
> > It seems to only fail with out of tree builds (O=...). I expect that
> > failures will become more common the more YAML bindings we have, even
> > without long directory names.
>
> dt-mk-schema can take and recurse a single directory already, so does
> this fix it for you:
Yes, the change below fixes my problem, thank you.
> @@ -22,7 +22,7 @@ $(obj)/%.example.dts: $(src)/%.yaml
> check_dtschema_version FORCE
> DT_TMP_SCHEMA := $(obj)/processed-schema-examples.yaml
>
> quiet_cmd_mk_schema = SCHEMA $@
> - cmd_mk_schema = $(DT_MK_SCHEMA) $(DT_MK_SCHEMA_FLAGS) -o $@
> $(real-prereqs)
> + cmd_mk_schema = $(DT_MK_SCHEMA) $(DT_MK_SCHEMA_FLAGS) -o $@
> $(srctree)/$(src)
>
> DT_DOCS = $(addprefix $(src)/, \
> $(shell \
--
Regards,
Laurent Pinchart
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH v2 1/2] kbuild: Always validate DT binding examples
2020-04-21 13:46 ` Laurent Pinchart
2020-04-21 14:01 ` Rob Herring
@ 2020-04-21 17:36 ` Masahiro Yamada
1 sibling, 0 replies; 18+ messages in thread
From: Masahiro Yamada @ 2020-04-21 17:36 UTC (permalink / raw)
To: Laurent Pinchart
Cc: Rob Herring, DTML, Linux Kernel Mailing List, Michal Marek,
Linux Kbuild mailing list
Hi Laurent,
On Tue, Apr 21, 2020 at 10:47 PM Laurent Pinchart
<laurent.pinchart@ideasonboard.com> wrote:
> HOSTLD scripts/dtc/dtc
> CHKDT Documentation/devicetree/bindings/arm/psci.yaml
> make[2]: execvp: /bin/sh: Argument list too long
> make[2]: *** [/home/laurent/src/kernel/this_is_a_long_directory_name/linux/Documentation/devicetree/bindings/Makefile:38: Documentation/devicetree/bindings/processed-schema-examples.yaml] Error 127
> make[1]: *** [/home/laurent/src/kernel/this_is_a_long_directory_name/linux/Makefile:1300: dt_binding_check] Error 2
> make[1]: Leaving directory '/home/laurent/src/kernel/this_is_a_long_directory_name/linux/output/x86'
> make: *** [Makefile:180: sub-make] Error 2
>
> It seems to only fail with out of tree builds (O=...). I expect that
> failures will become more common the more YAML bindings we have, even
> without long directory names.
Indeed. This will be a common problem sooner or later.
Rob already suggested a solution.
Another way is to use a pipe.
See the following code in scripts/Makefile.modpost
# Read out modules.order instead of expanding $(modules) to pass in modpost.
# Otherwise, allmodconfig would fail with "Argument list too long".
quiet_cmd_modpost = MODPOST $(words $(modules)) modules
cmd_modpost = sed 's/ko$$/o/' $(MODORDER) | $(MODPOST)
The same issue happens for modpost
because allmodconfig floods the command line.
--
Best Regards
Masahiro Yamada
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH v2 1/2] kbuild: Always validate DT binding examples
2020-04-21 13:15 ` Masahiro Yamada
2020-04-21 13:46 ` Laurent Pinchart
@ 2020-04-21 13:47 ` Rob Herring
2020-04-21 17:31 ` Masahiro Yamada
1 sibling, 1 reply; 18+ messages in thread
From: Rob Herring @ 2020-04-21 13:47 UTC (permalink / raw)
To: Masahiro Yamada, Laurent Pinchart
Cc: DTML, Linux Kernel Mailing List, Michal Marek, Linux Kbuild mailing list
On Tue, Apr 21, 2020 at 8:16 AM Masahiro Yamada <masahiroy@kernel.org> wrote:
>
> Hi Laurent,
>
> On Tue, Apr 21, 2020 at 8:05 PM Laurent Pinchart
> <laurent.pinchart@ideasonboard.com> wrote:
> >
> > Hi Yamada-san,
> >
> > On Tue, Apr 21, 2020 at 07:45:05PM +0900, Masahiro Yamada wrote:
> > > On Tue, Apr 21, 2020 at 7:08 PM Laurent Pinchart wrote:
> > > > On Fri, Feb 28, 2020 at 06:37:30PM -0600, Rob Herring wrote:
> > > > > Most folks only run dt_binding_check on the single schema they care about
> > > > > by setting DT_SCHEMA_FILES. That means example is only checked against
> > > > > that one schema which is not always sufficient.
> > > > >
> > > > > Let's address this by splitting processed-schema.yaml into 2 files: one
> > > > > that's always all schemas for the examples and one that's just the schema
> > > > > in DT_SCHEMA_FILES for dtbs.
> > > >
> > > > This broke
> > > >
> > > > make DT_SCHEMA_FILES=Documentation/devicetree/.. dt_binding_check
> > >
> > > What is intended by
> > > "DT_SCHEMA_FILES=Documentation/devicetree/.." ?
> >
> > My bad, I forgot to write that ... is the continuation of the string.
> > It's any yaml schema file that has an example.
>
> Ah, OK. I just input verbatim.
>
> Is it broken?
>
> You can specify any individual file(s) under Documentation/devicetree/bindings/.
>
> For example, the following worked for me.
Me too.
There is however a bug I just noticed. We're now always setting '-u'
for dtbs_check which means the core schema are never used.
Masahiro, Got a better suggestion than adding the ifeq:
ifeq ("$(origin DT_SCHEMA_FILES)", "command line")
$(obj)/processed-schema.yaml: DT_MK_SCHEMA_FLAGS := -u
endif
Rob
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH v2 1/2] kbuild: Always validate DT binding examples
2020-04-21 13:47 ` Rob Herring
@ 2020-04-21 17:31 ` Masahiro Yamada
0 siblings, 0 replies; 18+ messages in thread
From: Masahiro Yamada @ 2020-04-21 17:31 UTC (permalink / raw)
To: Rob Herring
Cc: Laurent Pinchart, DTML, Linux Kernel Mailing List, Michal Marek,
Linux Kbuild mailing list
Hi Rob,
On Tue, Apr 21, 2020 at 10:47 PM Rob Herring <robh@kernel.org> wrote:
>
> On Tue, Apr 21, 2020 at 8:16 AM Masahiro Yamada <masahiroy@kernel.org> wrote:
> >
> > Hi Laurent,
> >
> > On Tue, Apr 21, 2020 at 8:05 PM Laurent Pinchart
> > <laurent.pinchart@ideasonboard.com> wrote:
> > >
> > > Hi Yamada-san,
> > >
> > > On Tue, Apr 21, 2020 at 07:45:05PM +0900, Masahiro Yamada wrote:
> > > > On Tue, Apr 21, 2020 at 7:08 PM Laurent Pinchart wrote:
> > > > > On Fri, Feb 28, 2020 at 06:37:30PM -0600, Rob Herring wrote:
> > > > > > Most folks only run dt_binding_check on the single schema they care about
> > > > > > by setting DT_SCHEMA_FILES. That means example is only checked against
> > > > > > that one schema which is not always sufficient.
> > > > > >
> > > > > > Let's address this by splitting processed-schema.yaml into 2 files: one
> > > > > > that's always all schemas for the examples and one that's just the schema
> > > > > > in DT_SCHEMA_FILES for dtbs.
> > > > >
> > > > > This broke
> > > > >
> > > > > make DT_SCHEMA_FILES=Documentation/devicetree/.. dt_binding_check
> > > >
> > > > What is intended by
> > > > "DT_SCHEMA_FILES=Documentation/devicetree/.." ?
> > >
> > > My bad, I forgot to write that ... is the continuation of the string.
> > > It's any yaml schema file that has an example.
> >
> > Ah, OK. I just input verbatim.
> >
> > Is it broken?
> >
> > You can specify any individual file(s) under Documentation/devicetree/bindings/.
> >
> > For example, the following worked for me.
>
> Me too.
>
> There is however a bug I just noticed. We're now always setting '-u'
> for dtbs_check which means the core schema are never used.
>
> Masahiro, Got a better suggestion than adding the ifeq:
>
> ifeq ("$(origin DT_SCHEMA_FILES)", "command line")
> $(obj)/processed-schema.yaml: DT_MK_SCHEMA_FLAGS := -u
> endif
Hmm, this does not work when DT_SCHEMA_FILES is
passed as the environment variable.
ifneq ("$(origin DT_SCHEMA_FILES)", "file")
$(obj)/processed-schema.yaml: DT_MK_SCHEMA_FLAGS := -u
endif
... should work, I think.
Maybe, the following also works. Please choose whatever you like.
diff --git a/Documentation/devicetree/bindings/Makefile
b/Documentation/devicetree/bindings/Makefile
index 1df680d07461..a939bb18f66b 100644
--- a/Documentation/devicetree/bindings/Makefile
+++ b/Documentation/devicetree/bindings/Makefile
@@ -2,6 +2,7 @@
DT_DOC_CHECKER ?= dt-doc-validate
DT_EXTRACT_EX ?= dt-extract-example
DT_MK_SCHEMA ?= dt-mk-schema
+DT_MK_SCHEMA_USERONLY_FLAG := $(if $(DT_SCHEMA_FILES), -u)
quiet_cmd_chk_binding = CHKDT $(patsubst $(srctree)/%,%,$<)
cmd_chk_binding = $(DT_DOC_CHECKER) -u $(srctree)/$(src) $< ; \
@@ -37,7 +38,7 @@ override DTC_FLAGS := \
$(obj)/processed-schema-examples.yaml: $(DT_DOCS) FORCE
$(call if_changed,mk_schema)
-$(obj)/processed-schema.yaml: DT_MK_SCHEMA_FLAGS := -u
+$(obj)/processed-schema.yaml: DT_MK_SCHEMA_FLAGS :=
$(DT_MK_SCHEMA_USERONLY_FLAG)
$(obj)/processed-schema.yaml: $(DT_SCHEMA_FILES) FORCE
$(call if_changed,mk_schema)
--
Best Regards
Masahiro Yamada
^ permalink raw reply related [flat|nested] 18+ messages in thread