Message ID | 20220510221333.2770571-1-robh@kernel.org |
---|---|
State | Superseded, archived |
Headers | show |
Series | dt-bindings: Remove example file on dt-extract-example error | expand |
Context | Check | Description |
---|---|---|
robh/patch-applied | success | |
robh/checkpatch | success |
On Wed, May 11, 2022 at 7:13 AM Rob Herring <robh@kernel.org> wrote: > > As 'dt-extract-example' writes the example dts files to stdout, a file > is always created even on an error such as Ctrl-C. The resulting empty > file(s) then cause unexpected errors on subsequent builds. Fix this by > removing the output file on any error. > Did you really set it? The target deletion on interrupt is automatic since the following commit: commit 9c2af1c7377a8a6ef86e5cabf80978f3dbbb25c0 Author: Masahiro Yamada <yamada.masahiro@socionext.com> Date: Fri Jul 20 16:46:33 2018 +0900 kbuild: add .DELETE_ON_ERROR special target > Signed-off-by: Rob Herring <robh@kernel.org> > --- > Documentation/devicetree/bindings/Makefile | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/Documentation/devicetree/bindings/Makefile b/Documentation/devicetree/bindings/Makefile > index c9953f86b19d..c9fadff3dd74 100644 > --- a/Documentation/devicetree/bindings/Makefile > +++ b/Documentation/devicetree/bindings/Makefile > @@ -20,7 +20,7 @@ check_dtschema_version: > { echo "ERROR: dtschema minimum version is v$(DT_SCHEMA_MIN_VERSION)" >&2; false; } > > quiet_cmd_extract_ex = DTEX $@ > - cmd_extract_ex = $(DT_EXTRACT_EX) $< > $@ > + cmd_extract_ex = $(DT_EXTRACT_EX) $< > $@ || rm $@ > > $(obj)/%.example.dts: $(src)/%.yaml check_dtschema_version FORCE > $(call if_changed,extract_ex) > -- > 2.34.1 >
On Wed, May 11, 2022 at 09:27:00AM +0900, Masahiro Yamada wrote: > On Wed, May 11, 2022 at 7:13 AM Rob Herring <robh@kernel.org> wrote: > > > > As 'dt-extract-example' writes the example dts files to stdout, a file > > is always created even on an error such as Ctrl-C. The resulting empty > > file(s) then cause unexpected errors on subsequent builds. Fix this by > > removing the output file on any error. > > > > > Did you really set it? Set what? I'm sure I've gotten empty files which then throw errors on the next run. > The target deletion on interrupt is automatic > since the following commit: > > > > commit 9c2af1c7377a8a6ef86e5cabf80978f3dbbb25c0 > Author: Masahiro Yamada <yamada.masahiro@socionext.com> > Date: Fri Jul 20 16:46:33 2018 +0900 > > kbuild: add .DELETE_ON_ERROR special target You're saying I shouldn't need this change? For some reason I do... Rob
On Tue, May 17, 2022 at 10:12 AM Rob Herring <robh@kernel.org> wrote: > > On Wed, May 11, 2022 at 09:27:00AM +0900, Masahiro Yamada wrote: > > On Wed, May 11, 2022 at 7:13 AM Rob Herring <robh@kernel.org> wrote: > > > > > > As 'dt-extract-example' writes the example dts files to stdout, a file > > > is always created even on an error such as Ctrl-C. The resulting empty > > > file(s) then cause unexpected errors on subsequent builds. Fix this by > > > removing the output file on any error. > > > > > > > > > Did you really set it? > > Set what? Sorry for the typo. I meant "Did you really see it?" > > I'm sure I've gotten empty files which then throw errors on the next > run. Hmm, OK. When you observed this issue, were you using a pipe to another program? For example, $ make dt_binding_check 2>&1 | tee dt_binding_check.log > > The target deletion on interrupt is automatic > > since the following commit: > > > > > > > > commit 9c2af1c7377a8a6ef86e5cabf80978f3dbbb25c0 > > Author: Masahiro Yamada <yamada.masahiro@socionext.com> > > Date: Fri Jul 20 16:46:33 2018 +0900 > > > > kbuild: add .DELETE_ON_ERROR special target > > You're saying I shouldn't need this change? For some reason I do... > > Rob If .DELETE_ON_ERROR works as the manual [1] explains, [1] https://www.gnu.org/software/make/manual/make.html#Special-Targets the deletion of the target is automatic. Basically, it worked like that, except when Make is piped to another program. I asked this in GNU Make ML before. When Make is piped to another program, which is terminated by Ctrl-C, Make is also killed by SIGPIPE before cleaning up the incomplete targets.
On Mon, May 16, 2022 at 10:03 PM Masahiro Yamada <masahiroy@kernel.org> wrote: > > On Tue, May 17, 2022 at 10:12 AM Rob Herring <robh@kernel.org> wrote: > > > > On Wed, May 11, 2022 at 09:27:00AM +0900, Masahiro Yamada wrote: > > > On Wed, May 11, 2022 at 7:13 AM Rob Herring <robh@kernel.org> wrote: > > > > > > > > As 'dt-extract-example' writes the example dts files to stdout, a file > > > > is always created even on an error such as Ctrl-C. The resulting empty > > > > file(s) then cause unexpected errors on subsequent builds. Fix this by > > > > removing the output file on any error. > > > > > > > > > > > > > Did you really set it? > > > > Set what? > > Sorry for the typo. I meant "Did you really see it?" > > > > > > I'm sure I've gotten empty files which then throw errors on the next > > run. > > > Hmm, OK. > > When you observed this issue, were you using > a pipe to another program? > > For example, > > $ make dt_binding_check 2>&1 | tee dt_binding_check.log > Indeed, I am. I only do that all the time in my build script... > > > > The target deletion on interrupt is automatic > > > since the following commit: > > > > > > > > > > > > commit 9c2af1c7377a8a6ef86e5cabf80978f3dbbb25c0 > > > Author: Masahiro Yamada <yamada.masahiro@socionext.com> > > > Date: Fri Jul 20 16:46:33 2018 +0900 > > > > > > kbuild: add .DELETE_ON_ERROR special target > > > > You're saying I shouldn't need this change? For some reason I do... > > > > Rob > > > If .DELETE_ON_ERROR works as the manual [1] explains, > > [1] https://www.gnu.org/software/make/manual/make.html#Special-Targets > > the deletion of the target is automatic. > > > Basically, it worked like that, except when Make is piped to another program. > > I asked this in GNU Make ML before. > > When Make is piped to another program, which is terminated by Ctrl-C, > Make is also killed by SIGPIPE before cleaning up the incomplete targets. Humm, that seems to make the feature less useful to rely on. Rob
diff --git a/Documentation/devicetree/bindings/Makefile b/Documentation/devicetree/bindings/Makefile index c9953f86b19d..c9fadff3dd74 100644 --- a/Documentation/devicetree/bindings/Makefile +++ b/Documentation/devicetree/bindings/Makefile @@ -20,7 +20,7 @@ check_dtschema_version: { echo "ERROR: dtschema minimum version is v$(DT_SCHEMA_MIN_VERSION)" >&2; false; } quiet_cmd_extract_ex = DTEX $@ - cmd_extract_ex = $(DT_EXTRACT_EX) $< > $@ + cmd_extract_ex = $(DT_EXTRACT_EX) $< > $@ || rm $@ $(obj)/%.example.dts: $(src)/%.yaml check_dtschema_version FORCE $(call if_changed,extract_ex)
As 'dt-extract-example' writes the example dts files to stdout, a file is always created even on an error such as Ctrl-C. The resulting empty file(s) then cause unexpected errors on subsequent builds. Fix this by removing the output file on any error. Signed-off-by: Rob Herring <robh@kernel.org> --- Documentation/devicetree/bindings/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)