kbuild: Add DTB_FILES variable for dtbs_check

Message ID 20221101220304.65715-1-nfraprado@collabora.com
State New
Headers
Series kbuild: Add DTB_FILES variable for dtbs_check |

Commit Message

Nícolas F. R. A. Prado Nov. 1, 2022, 10:03 p.m. UTC
  Currently running dtbs_check compiles and runs the DT checker on all
enabled devicetrees against all dt-bindings. This can take a long time,
and is an unnecessary burden when just validating a new devicetree or
changes in an existing one, with the dt-bindings unchanged.

Similarly to DT_SCHEMA_FILES for dt_binding_check, add a DTB_FILES
variable that can be passed to the dtbs_check make command to restrict
which devicetrees are validated.

Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>

---
Usage example:
make dtbs_check DTB_FILES='arch/arm64/boot/dts/mediatek/mt8192-asurada-spherion-r0.dtb arch/arm64/boot/dts/mediatek/mt8192-asurada-hayato-r1.dtb'

 scripts/Makefile.lib | 7 +++++++
 1 file changed, 7 insertions(+)
  

Comments

AngeloGioacchino Del Regno Nov. 2, 2022, 8:55 a.m. UTC | #1
Il 01/11/22 23:03, Nícolas F. R. A. Prado ha scritto:
> Currently running dtbs_check compiles and runs the DT checker on all
> enabled devicetrees against all dt-bindings. This can take a long time,
> and is an unnecessary burden when just validating a new devicetree or
> changes in an existing one, with the dt-bindings unchanged.
> 
> Similarly to DT_SCHEMA_FILES for dt_binding_check, add a DTB_FILES
> variable that can be passed to the dtbs_check make command to restrict
> which devicetrees are validated.
> 
> Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
> 

Tested-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
  
Sebastian Reichel Nov. 2, 2022, 12:14 p.m. UTC | #2
Hi Nícolas,

On Tue, Nov 01, 2022 at 06:03:03PM -0400, Nícolas F. R. A. Prado wrote:
> Currently running dtbs_check compiles and runs the DT checker on all
> enabled devicetrees against all dt-bindings. This can take a long time,
> and is an unnecessary burden when just validating a new devicetree or
> changes in an existing one, with the dt-bindings unchanged.
> 
> Similarly to DT_SCHEMA_FILES for dt_binding_check, add a DTB_FILES
> variable that can be passed to the dtbs_check make command to restrict
> which devicetrees are validated.
> 
> Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
> 
> ---
> Usage example:
> make dtbs_check DTB_FILES='arch/arm64/boot/dts/mediatek/mt8192-asurada-spherion-r0.dtb arch/arm64/boot/dts/mediatek/mt8192-asurada-hayato-r1.dtb'

Please add the usage example to the 'Running checks' section in
Documentation/devicetree/bindings/writing-schema.rst

-- Sebastian

>  scripts/Makefile.lib | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
> index ec391c6a2641..f3ac6d3632a2 100644
> --- a/scripts/Makefile.lib
> +++ b/scripts/Makefile.lib
> @@ -418,9 +418,16 @@ DT_CHECKER_FLAGS ?= $(if $(DT_SCHEMA_FILES),-l $(DT_SCHEMA_FILES),-m)
>  DT_BINDING_DIR := Documentation/devicetree/bindings
>  DT_TMP_SCHEMA := $(objtree)/$(DT_BINDING_DIR)/processed-schema.json
>  
> +ifeq ($(DTB_FILES),)
>  quiet_cmd_dtb =	DTC_CHK $@
>        cmd_dtb =	$(cmd_dtc) ; $(DT_CHECKER) $(DT_CHECKER_FLAGS) -u $(srctree)/$(DT_BINDING_DIR) -p $(DT_TMP_SCHEMA) $@ || true
>  else
> +SHOULD_CHECK_DTB = $(filter $@,$(DTB_FILES))
> +
> +quiet_cmd_dtb =	$(if $(SHOULD_CHECK_DTB),DTC_CHK,DTC) $@
> +      cmd_dtb =	$(if $(SHOULD_CHECK_DTB), $(cmd_dtc) ; $(DT_CHECKER) $(DT_CHECKER_FLAGS) -u $(srctree)/$(DT_BINDING_DIR) -p $(DT_TMP_SCHEMA) $@ || true , $(cmd_dtc))
> +endif
> +else
>  quiet_cmd_dtb = $(quiet_cmd_dtc)
>        cmd_dtb = $(cmd_dtc)
>  endif
> -- 
> 2.38.1
> 
> 
> -- 
> To unsubscribe, send mail to kernel-unsubscribe@lists.collabora.co.uk.
  
Nícolas F. R. A. Prado Nov. 2, 2022, 5:13 p.m. UTC | #3
On Tue, Nov 01, 2022 at 06:03:03PM -0400, Nícolas F. R. A. Prado wrote:
> Currently running dtbs_check compiles and runs the DT checker on all
> enabled devicetrees against all dt-bindings. This can take a long time,
> and is an unnecessary burden when just validating a new devicetree or
> changes in an existing one, with the dt-bindings unchanged.
> 
> Similarly to DT_SCHEMA_FILES for dt_binding_check, add a DTB_FILES
> variable that can be passed to the dtbs_check make command to restrict
> which devicetrees are validated.
> 
> Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
> 
> ---
> Usage example:
> make dtbs_check DTB_FILES='arch/arm64/boot/dts/mediatek/mt8192-asurada-spherion-r0.dtb arch/arm64/boot/dts/mediatek/mt8192-asurada-hayato-r1.dtb'

Hi,

I have just learned that it is already possible to achieve the same thing by
passing the dtbs explicitly to make and enabling the DTBS_CHECK flag like so:

make CHECK_DTBS=y mediatek/mt8192-asurada-spherion-r0.dtb

This flag isn't documented anywhere outside the Makefile however. So I'll send a
patch documenting it shortly, and this commit can be ignored.

Thanks,
Nícolas
  
Nícolas F. R. A. Prado Nov. 2, 2022, 9:46 p.m. UTC | #4
On Wed, Nov 02, 2022 at 01:13:48PM -0400, Nícolas F. R. A. Prado wrote:
> On Tue, Nov 01, 2022 at 06:03:03PM -0400, Nícolas F. R. A. Prado wrote:
> > Currently running dtbs_check compiles and runs the DT checker on all
> > enabled devicetrees against all dt-bindings. This can take a long time,
> > and is an unnecessary burden when just validating a new devicetree or
> > changes in an existing one, with the dt-bindings unchanged.
> > 
> > Similarly to DT_SCHEMA_FILES for dt_binding_check, add a DTB_FILES
> > variable that can be passed to the dtbs_check make command to restrict
> > which devicetrees are validated.
> > 
> > Signed-off-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
> > 
> > ---
> > Usage example:
> > make dtbs_check DTB_FILES='arch/arm64/boot/dts/mediatek/mt8192-asurada-spherion-r0.dtb arch/arm64/boot/dts/mediatek/mt8192-asurada-hayato-r1.dtb'
> 
> Hi,
> 
> I have just learned that it is already possible to achieve the same thing by
> passing the dtbs explicitly to make and enabling the DTBS_CHECK flag like so:
> 
> make CHECK_DTBS=y mediatek/mt8192-asurada-spherion-r0.dtb
> 
> This flag isn't documented anywhere outside the Makefile however. So I'll send a
> patch documenting it shortly, and this commit can be ignored.

Patch: https://lore.kernel.org/all/20221102214300.309347-1-nfraprado@collabora.com

Thanks,
Nícolas
  

Patch

diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
index ec391c6a2641..f3ac6d3632a2 100644
--- a/scripts/Makefile.lib
+++ b/scripts/Makefile.lib
@@ -418,9 +418,16 @@  DT_CHECKER_FLAGS ?= $(if $(DT_SCHEMA_FILES),-l $(DT_SCHEMA_FILES),-m)
 DT_BINDING_DIR := Documentation/devicetree/bindings
 DT_TMP_SCHEMA := $(objtree)/$(DT_BINDING_DIR)/processed-schema.json
 
+ifeq ($(DTB_FILES),)
 quiet_cmd_dtb =	DTC_CHK $@
       cmd_dtb =	$(cmd_dtc) ; $(DT_CHECKER) $(DT_CHECKER_FLAGS) -u $(srctree)/$(DT_BINDING_DIR) -p $(DT_TMP_SCHEMA) $@ || true
 else
+SHOULD_CHECK_DTB = $(filter $@,$(DTB_FILES))
+
+quiet_cmd_dtb =	$(if $(SHOULD_CHECK_DTB),DTC_CHK,DTC) $@
+      cmd_dtb =	$(if $(SHOULD_CHECK_DTB), $(cmd_dtc) ; $(DT_CHECKER) $(DT_CHECKER_FLAGS) -u $(srctree)/$(DT_BINDING_DIR) -p $(DT_TMP_SCHEMA) $@ || true , $(cmd_dtc))
+endif
+else
 quiet_cmd_dtb = $(quiet_cmd_dtc)
       cmd_dtb = $(cmd_dtc)
 endif