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.tmpBTW, 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