help-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Questions about signal handling in GNU Make


From: Masahiro Yamada
Subject: Re: Questions about signal handling in GNU Make
Date: Sun, 25 Jul 2021 00:38:23 +0900

On Sat, Jul 24, 2021 at 11:57 PM Kaz Kylheku (gmake)
<729-670-0061@kylheku.com> wrote:
>
> On 2021-07-24 06:21, Masahiro Yamada wrote:
> > To avoid the race on the tool side, as you mentioned,
> > we can write to a tmpfile, and rename it as a last step.
>
> But, no we can't!
>
> This situation is not a problem only in the case when
> the recipe has one step to perform.
>
> What if it is like this?
>
>     out: in
>         step1 in out
>         step2 out
>
> step1 performs the temporary rename dance to atomically
> create "out", while make is handling the interrupt again.
>
> make doesn't see "out" so doesn't remove anything, but
> then moments later, step1 executes a rename of a temporary
> file to "out" before terminating.
>
> Now there is a half-baked but up-to-date out, because
> step2 wasn't executed.
>

I said that renaming "as a last step".

So, the recipe that invokes multiple commands
should look like follows:


out: in
        step1 in out.tmp
        step2 out.tmp
        mv out.tmp out



-- 
Best Regards
Masahiro Yamada



reply via email to

[Prev in Thread] Current Thread [Next in Thread]