tech-userlevel archive

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

Re: rmdir -p

>> [] $
>> pkglint WARN: Makefile:38: The use of a leading "-" to suppress errors
>> is deprecated. 0 errors and 1 warnings found.
> It is better to express that explicitly via || true.

A leading - was added to make specifically to express the semantics of
"ignore errors from this command".  || says "do this, and then, if it
fails, do that".  That using it with an always-successful command as
the RHS has the effect of ignoring failures from the LHS is a side
effect of its primary purpose, via a comparatively little-known aspect
of its definition - that the exit status of the || construct is the
exit status of the last-executed command.

Thus, I would say that the "leading -" way is the explicit way to
suppress errors and the "|| true" way is a kludge based on a side
effect of a syntax designed for a different purpose.

Furthermore, leading - works regardless of shell, and does not force
make to shell the command if it doesn't contain metasyntax; || true
depends on the shell make uses using sh rules for ||, and does force
make to run a shell.  (Not that either one is likely to matter much in

/~\ The ASCII                           der Mouse
\ / Ribbon Campaign
 X  Against HTML     
/ \ Email!           7D C8 61 52 5D E7 2D 39  4E F1 31 3E E8 B3 27 4B

Home | Main Index | Thread Index | Old Index