On Tue, 2021-09-07 at 18:30 -0700, Nick Stoughton wrote:
> The problem we were trying to address with this change is that
> bsd make (bmake) and GNU make both have a := operator, but they
> behave differently. We originally added ::= to match the gmake
> behavior. The idea with :::= is to match the bmake behavior.

OK, but that doesn't really answer my question.  "We added this version
so now we have to add that version too or else it's not fair" doesn't
seem like a good reason to invent brand new syntax in the POSIX spec.

There must be some reason for the BSD model to be added; there must be
some important or useful feature that it enables, that is impossible,
or difficult, or at least annoying to achieve in other ways.  If this
was a feature that already existed (that is, the operator :::= was
already implemented and used by makefiles) then there's an argument for
adding it to the standard just to make it official: standardizing
existing practice has value.

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).

People who are writing BSD makefiles already have this feature: they
can just use BSD's := operator.  The only makefiles that would use :::=
are makefiles that want to be portable, and that need this particular
capability.  So what I'm asking is, what does this operator enable,
beyond what we have with "=" and "::=", that is helpful in writing
portable makefiles?  In what situations would a makefile need to use
:::=?  Can someone provide some use cases?

> So, extracting from the etherpad of 2021-08-12:
> > Options:
> > 
> > 
> > 1. Add :::= with behavior of BSD := with $$ always preserved
> > (.MAKE.SAVE_DOLLARS either doesn't affect :::= or is an extension)
> > 
> > 
> > 2. Add :::= with behavior of BSD := with $$ never preserved
> > (.MAKE.SAVE_DOLLARS is an extension, nominally required to be false
> > by default if implemented so existing scripts don't break if
> > implementation applies it to additional assignment types other than
> > :::=, imo) 
> > 
> > 
> > 3. Add :::= with behavior of BSD := with .MAKE.SAVE_DOLLARS,
> > default true
> > 
> > 
> > 4. Add :::= with behavior of BSD := with .MAKE.SAVE_DOLLARS,
> > default false
> > 
> > 
> > 5. Don't add :::=
> 
> I believe we opted for #4.

Based on my reading of the text actually appearing the in current
draft, it appears that the option chosen was #1 above, not #4: the text
says that "$$" is preserved and there's no mention of
.MAKE.SAVE_DOLLARS anywhere.

If not I'm even more confused.
  • [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
  • [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

Reply via email to