bug-make
[Top][All Lists]
Advanced

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

Re: [bug #62936] Confusing description of chained rules in the manual


From: Tim Murphy
Subject: Re: [bug #62936] Confusing description of chained rules in the manual
Date: Wed, 19 Oct 2022 07:28:17 +0100




On Sat, 15 Oct 2022 at 23:57, Paul D. Smith <INVALID.NOREPLY@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 something to stay as it is because doing more might make things 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

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