On Wed, 2021-09-08 at 09:29 +0100, Geoff Clare via austin-group-l at
The Open Group wrote:
> Personally I see no reason to prefer one over the other.  This leads
> to three choices for what goes in Issue 8:
> 
> 1. Just an operator that works like gmake :=
> 2. Just an operator that works like BSD make :=
> 3. Two operators, one like gmake := and one like BSD make :=
> 
> We have decided to go with option 3.

This is not the right way to look at it.

If there truly is NO REASON to choose one over the other then it's
wrong to standardize both because now you are just inventing two ways
to do things which have no practical difference between them.

If it was the case that lots of makefiles already used two DIFFERENT
operators that did things differently, then there would be a good
argument for adding both, so that lots of EXISTING makefiles could be
made portable with no work on their part.  That's a good goal.

But unfortunately we do not have that happy situation here: here we
have lots of makefiles that use the SAME operator that works
differently, and no makefiles that implement :::= and so no makefiles
will become portable by making this operator standard.  Thus the only
reason we should standardize both is if there IS some reason to choose
the behavior of :::= over ::=.  If there's no reason to choose one over
the other, and makefiles have to change their operator to become
standard anyway, then they can just change their operator to ::=.

> > But here we're inventing an entirely new operator that NO VERSION
> > of make currently implements (yes, I understand that BSD make has a
> > different operator that works in this same way but that's not the
> > same thing: no existing makefile today contains the :::= operator
> > so every makefile that wants to use it will have to be changed, and
> > in a way which is not backward-compatible with older versions of
> > make).
> 
> At the time that we accepted a proposal to add ::= no version of make
> implemented it.  So your argument applies equally to that addition.

No, that's not right.  In issue 7 there is no way to have any sort of
immediate expansion in standard make.  That's clearly something that
users wanted (for the record note that I was not the one who wanted
this standardized: I didn't propose it or push for it in any way; it
was users who wanted this).

The ::= operator added immediate expansion.  That's certainly a useful
addition, and worthy of creating a new operator for.

The only legitimate (IMO) reason to add ANOTHER operator :::= is, as
I've been trying to understand, there's some characteristic of that
behavior that people would find useful enough to change their makefiles
to use it, that they can't get by changing their makefiles to use ::=
which is already accepted.

> Just because the proposal for ::= was applied to an earlier Issue 8
> draft than :::= doesn't mean it has any claim to be treated
> differently as part of the overall changes from Issue 7 to Issue 8.

If we wanted to have that discussion we should have had it back before
::= was accepted.

At this point, ::= DOES have a claim to be treated differently because
there IS ample implementation precedent for it: as a result of the
previous decision back in 2011, GNU make has been providing the ::=
operator now for almost 8 years (released in GNU make 4.0 in October
2013).  It can't be changed now.

We could remove ::= from the standard and instead add :::= but that
seems useless to me: there are real makefiles out there using ::= which
would be made NON-PORTABLE by removing ::= from the standard.

  • [Issue 8 dra... Austin Group Bug Tracker via austin-group-l at The Open Group
  • [Issue 8 dra... Austin Group Bug Tracker via austin-group-l at The Open Group
  • [Issue 8 dra... Austin Group Bug Tracker via austin-group-l at The Open Group
  • Re: [Issue 8... Paul Smith via austin-group-l at The Open Group
    • Re: [Is... Geoff Clare via austin-group-l at The Open Group
      • Re:... Paul Smith via austin-group-l at The Open Group
  • Re: [Issue 8... Paul Smith via austin-group-l at The Open Group
    • Re: [Is... Nick Stoughton via austin-group-l at The Open Group
      • Re:... Paul Smith via austin-group-l at The Open Group
        • ... Geoff Clare via austin-group-l at The Open Group
          • ... Paul Smith via austin-group-l at The Open Group
            • ... David A. Wheeler via austin-group-l at The Open Group
              • ... Joerg Schilling via austin-group-l at The Open Group
              • ... David A. Wheeler via austin-group-l at The Open Group
              • ... Joerg Schilling via austin-group-l at The Open Group
              • ... Paul Smith via austin-group-l at The Open Group
              • ... Joerg Schilling via austin-group-l at The Open Group
              • ... David A. Wheeler via austin-group-l at The Open Group
              • ... Joerg Schilling via austin-group-l at The Open Group
              • ... David A. Wheeler via austin-group-l at The Open Group
              • ... Joerg Schilling via austin-group-l at The Open Group

Reply via email to