mail archive of the barebox mailing list
 help / color / mirror / Atom feed
From: Masahiro Yamada <yamada.masahiro@socionext.com>
To: barebox@lists.infradead.org
Subject: [PATCH 02/11] kbuild: add .DELETE_ON_ERROR special target
Date: Sun, 30 Dec 2018 22:59:19 +0900	[thread overview]
Message-ID: <1546178368-26182-3-git-send-email-yamada.masahiro@socionext.com> (raw)
In-Reply-To: <1546178368-26182-1-git-send-email-yamada.masahiro@socionext.com>

Linux commit 9c2af1c7377a8a6ef86e5cabf80978f3dbbb25c0
(adjust commit log because barebox does not support external module)

If Make gets a fatal signal while a shell is executing, it may delete
the target file that the recipe was supposed to update.  This is needed
to make sure that it is remade from scratch when Make is next run; if
Make is interrupted after the recipe has begun to write the target file,
it results in an incomplete file whose time stamp is newer than that
of the prerequisites files.  Make automatically deletes the incomplete
file on interrupt unless the target is marked .PRECIOUS.

The situation is just the same as when the shell fails for some reasons.
Usually when a recipe line fails, if it has changed the target file at
all, the file is corrupted, or at least it is not completely updated.
Yet the file’s time stamp says that it is now up to date, so the next
time Make runs, it will not try to update that file.

However, Make does not cater to delete the incomplete target file in
this case.  We need to add .DELETE_ON_ERROR somewhere in the Makefile
to request it.

scripts/Kbuild.include seems a suitable place to add it because it is
included from almost all sub-makes.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
---

 scripts/Kbuild.include | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include
index 512d217..3b71949 100644
--- a/scripts/Kbuild.include
+++ b/scripts/Kbuild.include
@@ -279,3 +279,6 @@ why =                                                                        \
 
 echo-why = $(call escsq, $(strip $(why)))
 endif
+
+# delete partially updated (i.e. corrupted) files on error
+.DELETE_ON_ERROR:
-- 
2.7.4


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

  parent reply	other threads:[~2018-12-30 14:00 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-12-30 13:59 [PATCH 00/11] Sync Kconfig to Linux 4.20 Masahiro Yamada
2018-12-30 13:59 ` [PATCH 01/11] kbuild: filter-out PHONY targets from "targets" Masahiro Yamada
2018-12-30 13:59 ` Masahiro Yamada [this message]
2018-12-31  5:52   ` [PATCH 02/11] kbuild: add .DELETE_ON_ERROR special target Sam Ravnborg
2018-12-30 13:59 ` [PATCH 03/11] kbuild: add .SECONDARY " Masahiro Yamada
2018-12-31  5:55   ` Sam Ravnborg
2018-12-30 13:59 ` [PATCH 04/11] kbuild: add %.lex.c and %.tab.[ch] to 'targets' automatically Masahiro Yamada
2018-12-31  5:55   ` Sam Ravnborg
2018-12-30 13:59 ` [PATCH 05/11] treewide: remove blank texts Masahiro Yamada
2018-12-30 13:59 ` [PATCH 06/11] .gitignore: move *.lex.c *.tab.[ch] patterns to the top-level .gitignore Masahiro Yamada
2018-12-30 13:59 ` [PATCH 07/11] kbuild: clean up *.lex.c and *.tab.[ch] patterns from top-level Makefile Masahiro Yamada
2018-12-30 13:59 ` [PATCH 08/11] kbuild: rename HOSTLOADLIBES_* to HOSTLDLIBS_* Masahiro Yamada
2018-12-30 13:59 ` [PATCH 09/11] kbuild: generate lexer and parser during build instead of shipping Masahiro Yamada
2018-12-31  1:02   ` Masahiro Yamada
2018-12-30 13:59 ` [PATCH 10/11] kconfig: sync to Linux 4.20 Masahiro Yamada
2018-12-30 13:59 ` [PATCH 11/11] kbuild: remove unnecessary LEX_PREFIX and YACC_PREFIX Masahiro Yamada
2018-12-31  6:12 ` [PATCH 00/11] Sync Kconfig to Linux 4.20 Sam Ravnborg
2019-01-01  9:13   ` Masahiro Yamada
2019-01-03  9:18     ` Sascha Hauer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1546178368-26182-3-git-send-email-yamada.masahiro@socionext.com \
    --to=yamada.masahiro@socionext.com \
    --cc=barebox@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox