On Sat, 15 Oct 2022 at 23:57, Paul D. Smith <invalid.nore...@gnu.org> wrote:

> Follow-up Comment #1, bug #62936 (project make):
>
> I don't know why you say "you cannot update a non-existing file": make does
> this all the time!  When you start make in a clean directory there are no
> object files, for example, and so those files are non-existing but yet of
> course make will still update them.
>
> By "update" the make manual means "run the recipe for that target".  It
> doesn't mean "modify an existing file or fail if the file doesn't already
> exist".  This term is used everywhere in the manual, to mean that same
> thing.
>

Outside of make "update" implies existence - we use CRUD as a term for
example
not RUD.  Why redefine the language? Actually for databases the word
"upsert" has
been invented to explain a roughly analagous situation is going on -
perhaps that is
an option? e.g. "upcreate"?


> I guess I don't understand the issue well enough to suggest a better
> formulation either.  Maybe if you can say what "case" you mean when you say
> "how Make deals with this case" then it would become more clear where we
> might
> enhance the document to be less confusing.
>
> As for "leave well enough alone" that's a very common idiom; for example:
>
> https://dictionary.cambridge.org/us/dictionary/english/leave-well-enough-alone
>
> According to Cambridge:
"leave well enough alone"
*to *allow <https://dictionary.cambridge.org/dictionary/english/allow>
something
to stay <https://dictionary.cambridge.org/dictionary/english/stay> as it is
because doing more might make things worse
<https://dictionary.cambridge.org/dictionary/english/worse>

Is make really "trying not to make things worse?" .. As if some job is done
well enough and redoing it might make it worse?  I'm a native English
speaker and I think this phrase is not an accurate description of what's
happening.

Just to give you an example:
>> The first difference is what happens if the intermediate file does
>> not exist. If an ordinary file b does not exist, and make considers a
>> target that depends on b, it invariably creates b and then upcreates
>> the target from b. But if b is an intermediate file, then make does
>> not bother upcreting b, or the ultimate target, unless some
>> prerequisite of b is newer than that target or
>> there is some other reason to update that target.

Regards,

Tim

Reply via email to