Re: [RFC PATCH 3/3] scripts: Use -B dtc option to generate dtb build information.

From: Frank Rowand
Date: Fri Jan 17 2020 - 14:20:15 EST


On 1/13/20 12:16 PM, Alexandre Torgue wrote:
> This commit adds a new script to create a string in tmp file with
> some information (date, linux version, user). This file is then used by
> dtc with -B option to append dts file with a new property.
> During kernel boot it will then be possible to printout DTB build
> information (date, linux version used, user).
>
> Signed-off-by: Alexandre Torgue <alexandre.torgue@xxxxxx>
>
> diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
> index 3fa32f83b2d7..6a98eac1e56d 100644
> --- a/scripts/Makefile.lib
> +++ b/scripts/Makefile.lib
> @@ -235,6 +235,7 @@ quiet_cmd_gzip = GZIP $@
> # DTC
> # ---------------------------------------------------------------------------
> DTC ?= $(objtree)/scripts/dtc/dtc
> +DTB_GEN_INFO ?= $(objtree)/scripts/gen_dtb_build_info
>
> # Disable noisy checks by default
> ifeq ($(findstring 1,$(KBUILD_EXTRA_WARN)),)
> @@ -275,11 +276,13 @@ $(obj)/%.dtb.S: $(obj)/%.dtb FORCE
>
> quiet_cmd_dtc = DTC $@
> cmd_dtc = mkdir -p $(dir ${dtc-tmp}) ; \
> - $(HOSTCC) -E $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; \
> - $(DTC) -O $(2) -o $@ -b 0 \
> + $(DTB_GEN_INFO) $(@).info ;\
> + $(HOSTCC) -E $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; \
> + $(DTC) -O $(2) -o $@ -b 0 -B $(@).info\
> $(addprefix -i,$(dir $<) $(DTC_INCLUDE)) $(DTC_FLAGS) \
> - -d $(depfile).dtc.tmp $(dtc-tmp) ; \
> - cat $(depfile).pre.tmp $(depfile).dtc.tmp > $(depfile)
> + -d $(depfile).dtc.tmp $(dtc-tmp) ; \
> + rm $(@).info ; \
> + cat $(depfile).pre.tmp $(depfile).dtc.tmp > $(depfile)
>
> $(obj)/%.dtb: $(src)/%.dts $(DTC) FORCE
> $(call if_changed_dep,dtc,dtb)
> diff --git a/scripts/gen_dtb_build_info b/scripts/gen_dtb_build_info
> new file mode 100755
> index 000000000000..30cf7506b9d5
> --- /dev/null
> +++ b/scripts/gen_dtb_build_info
> @@ -0,0 +1,11 @@
> +#!/bin/sh
> +# SPDX-License-Identifier: GPL-2.0
> +
> +DTB_TARGET=$@
> +COMPILE_BY=$(whoami | sed 's/\\/\\\\/')
> +
> +touch $DTB_TARGET
> +
> +{
> + echo From Linux $KERNELRELEASE by $COMPILE_BY the $(date).
> +} > $DTB_TARGET
>

This specific set of information does not seem to me to be sufficient
to be of much use. In my previous attempt to capture build time
information into the DTB I included more information that this,
which I felt provided more of the information that would be valuable
to a developer (or testing person) in a development environment,
test environment, or on an end user system. The exact set of
information is easy to bike shed over, but one could explain what
information might be useful and why (I did not provide that explanation
in my patch series, but in retrospect should have).