Thread (6 messages) 6 messages, 2 authors, 2018-12-12

Re: [PATCH v3] kbuild: Add support for DT binding schema checks

From: Masahiro Yamada <hidden>
Date: 2018-12-12 03:05:36
Also in: linux-devicetree, linux-doc, linux-kbuild, linuxppc-dev, lkml

On Wed, Dec 12, 2018 at 3:36 AM Rob Herring [off-list ref] wrote:
On Tue, Dec 11, 2018 at 10:03 AM Masahiro Yamada
[off-list ref] wrote:
quoted
On Wed, Dec 12, 2018 at 12:13 AM Rob Herring [off-list ref] wrote:
quoted
quoted
quoted
+$(obj)/%.example.dts: $(src)/%.yaml FORCE
+       $(call if_changed,chk_binding)
+
+DT_TMP_SCHEMA := .schema.yaml.tmp

BTW, why does this file start with a period?
What is the meaning of '.tmp' extension?
Nothing really. Just named it something so it gets cleaned and ignored by git.

It is cleaned whatever file name you use.


See scripts/Makefile.clean

__clean-files   := $(extra-y) $(extra-m) $(extra-)       \
                   $(always) $(targets) $(clean-files)   \
                   $(hostprogs-y) $(hostprogs-m) $(hostprogs-) \
                   $(hostlibs-y) $(hostlibs-m) $(hostlibs-) \
                   $(hostcxxlibs-y) $(hostcxxlibs-m)


$(extra-y) is cleaned.
True.
quoted

You are adding *.example.dts to .gitignore

Why not "schema.yaml" ?
Okay. I'll do "processed-schema.yaml" to give a bit better name of
what it contains.
quoted
quoted
quoted
quoted
+extra-y += $(DT_TMP_SCHEMA)
+
+quiet_cmd_mk_schema = SCHEMA  $@
+      cmd_mk_schema = mkdir -p $(obj); \
+                      rm -f $@; \
+                      $(DT_MK_SCHEMA) $(DT_MK_SCHEMA_FLAGS) -o $@ $(filter-out FORCE, $^)

"mkdir -p $(obj)" is redundant.


Why is 'rm -f $@' necessary ?
Can't dt-mk-schema overwrite the output file?
It is for error case when the output file is not generated. I can
handle this within dt-mk-schema instead.
quoted
quoted
+DT_DOCS = $(shell cd $(srctree)/$(src) && find * -name '*.yaml')
+DT_SCHEMA_FILES ?= $(addprefix $(src)/,$(DT_DOCS))
+
+extra-y += $(patsubst $(src)/%.yaml,%.example.dts, $(DT_SCHEMA_FILES))
+extra-y += $(patsubst $(src)/%.yaml,%.example.dtb, $(DT_SCHEMA_FILES))


I assume you intentionally did not do like this:

extra-y += $(patsubst %.yaml,%.example.dtb, $(DT_DOCS))

From the commit description, DT_SCHEMA_FILES might be overridden by a user.
So, I think this is OK.



quoted
+$(obj)/$(DT_TMP_SCHEMA): | $(addprefix $(obj)/,$(patsubst $(src)/%.yaml,%.example.dtb, $(DT_SCHEMA_FILES)))
I do not understand this line.
Why is it necessary?

*.example.dtb files are generated anyway
since they are listed in extra-y.
It is enforcing the ordering. Without it, the binding checks and
building .schema.yaml.tmp happen in parallel because both only have
the source files as dependencies. The '|' keeps the dependencies out
of the dependency list($^).

What kind problem would you see if
the binding checks and building .schema.yaml.tmp
happen in parallel?
In case of no errors in the binding docs, it doesn't matter. If there
are errors, I don't want the dtbs validation to run if any schema
doesn't validate. However, I played around with this a bit more and it
seems like having the examples' dts/dtb in extra-y prevents that from
happening. Does that match your expections?
Exactly.

If any error occurs in Documentation/devicetree/bindings/Makefile,
Make terminates before proceeding to the dtbs_check stage.



-- 
Best Regards
Masahiro Yamada

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help