On Monday 2022-05-02 22:52, Karl Berry wrote:
> - @echo '# dummy' >$@-t && $(am__mv) $@-t $@
> + @: >>$@
>
>2) without the mv I fear we are no longer noticing write failure. -k
I see no reason why mv would be so crucial.
Case 1. Lack of permission. The ">" operation is the one that fails, $? is
set. mv is never executed due to &&.
09:53 f3:/etc $ >/etc/passwd
bash: /etc/passwd: Permission denied
09:53 f3:/etc $ echo $?
1
(dash)
$ >/etc/passwd
dash: 1: cannot create /etc/passwd: Permission denied
$ echo $?
2
Case 2. Disk is chock-full. The ">" operation is the one that fails,
$? is set once again.
09:35 f3:/mnt $ : >>9x
bash: 9x: No space left on device
09:35 f3:/mnt $ echo $?
1
(dash)
$ : >>x2
dash: 5: cannot create x2: No space left on device
$ echo $?
2
Case 3. ">" succeeds and the disk becomes full while "echo" executes.
(bash builtin)
09:56 f3:/mnt $ echo foo >x9; echo $?
bash: echo: write error: No space left on device
1
(dash builtin)
$ echo foo >x9; echo $?
dash: 1: echo: echo: I/O error
1
(separate program)
$ /bin/echo foo >x9; echo $?
/bin/echo: write error: No space left on device
1
>1) does it actually speed anything up?
I created a dummy project with 50001 dummy .c files on short order.
On i5-1135G7 CPU with bash, ./configure runs in (unscientifically
measured) 144s wall seoncds. After modifying the innards of
Makefile.in with the proposed change, ./configure now runs in 101s.