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