Message ID | 20230109091919.3160916-1-masahiroy@kernel.org (mailing list archive) |
---|---|
State | Handled Elsewhere |
Headers | show |
Series | tomoyo: remove a temporary output file | expand |
On 2023/01/09 18:19, Masahiro Yamada wrote: > Since this is a general problem, you can leave it to Kbuild instead > of introducing unneeded complexity. > If it is not too late, please squash this. It is not too late to apply. But how do you handle a case where the process who is responsible for deleting incomplete file was killed by e.g. OOM-killer?
On Mon, Jan 9, 2023 at 7:01 PM Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp> wrote: > > On 2023/01/09 18:19, Masahiro Yamada wrote: > > Since this is a general problem, you can leave it to Kbuild instead > > of introducing unneeded complexity. > > > If it is not too late, please squash this. > > It is not too late to apply. But how do you handle a case where > the process who is responsible for deleting incomplete file was > killed by e.g. OOM-killer? > Good point. That is a rare case that Kbuild cannot handle. One idea is to make if_changed to write the command to *.cmd.tmp and rename it to *.cmd after everything succeeds. So, it is a similar approach, but the difference is that it is done in the Kbuild core scripts instead of every command. I will consider it. -- Best Regards Masahiro Yamada
On 2023/01/09 20:35, Masahiro Yamada wrote: > One idea is to make if_changed to write the command to *.cmd.tmp > and rename it to *.cmd after everything succeeds. > So, it is a similar approach, but the difference is that > it is done in the Kbuild core scripts instead of every command. > I will consider it. I see. Applied as https://osdn.net/projects/tomoyo/scm/git/tomoyo-test1/commits/80f8be7af03ffe90dc4df998b16bfa212afbdde9 . Thank you.
diff --git a/security/tomoyo/Makefile b/security/tomoyo/Makefile index 458cf5e2fa25..884ff155edc3 100644 --- a/security/tomoyo/Makefile +++ b/security/tomoyo/Makefile @@ -9,7 +9,7 @@ quiet_cmd_policy = POLICY $@ printf 'static char tomoyo_builtin_$x[] __initdata =\n'; \ sed -e 's/\\/\\\\/g' -e 's/\"/\\"/g' -e 's/\(.*\)/\t"\1\\n"/' -- $(firstword $(filter %/$x.conf %/$x.conf.default, $^) /dev/null); \ printf '\t"";\n';) \ - } > $@.tmp && mv $@.tmp $@ + } > $@ $(obj)/builtin-policy.h: $(wildcard $(obj)/policy/*.conf $(srctree)/$(src)/policy/*.conf.default) FORCE $(call if_changed,policy)
Commit 8ab5bc40aad4 ("tomoyo: Omit use of bin2c") was locally modified on top of the patch I submitted. I recommend writing to the target directly. If the recipe command fails, Kbuild will automatically delete the target because scripts/Kbuild.include defines .DELETE_ON_ERROR. If the recipe command is interrupted, GNU Make will automatically delete the target if it has been partially updated. There was a corner case where the target was not cleaned up, but it was fixed by Commit a7f3257da8a8 ("kbuild: remove the target in signal traps when interrupted"). Since this is a general problem, you can leave it to Kbuild instead of introducing unneeded complexity. Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> --- If it is not too late, please squash this. security/tomoyo/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)