Subject: Re: broken?
To: None <>
From: Alan Barrett <>
List: tech-pkg
Date: 02/23/2004 11:01:56
[CC sjg, in case he is not subscribed to tech-pkg]

On Mon, 23 Feb 2004, Tom Spindler wrote:
> > make: Unclosed variable specification for BUILDLINK_DEPENDS.(variable_x)
> [elided]
> > something wrong with or
> Try updating your mk/buildlink3/ to the (just committed)
> 1.98; this fixes PR/24525, the problem you're describing.

The change from revision 1.97 to 1.98 of seems to add
a mis-matched brace, in order to work around a make(1) bug.  In the
following line (from revision 1.97 of, consider the
'{' that I have marked with a '^' below it:

_BLNK_GE_DEPENDS.${_pkg_}= ${BUILDLINK_DEPENDS.${_pkg_}:N*{*:M*>=[0-9]*}

The '{' marked above is part of the pattern '*{*', which is terminated
by the ':', and should therefore not need a matching '{'. I can see how
simple-minded brace-counting code could think that there was a missing
'}' at the end, but that is a bug in the brace-matching code, not an
error in the Makefile.

I think that the brace-matching code in make(1) should try to match
'${' and '}', not just '{' and '}'.

It seems risky to rely on make(1) being fixed to handle this case
properly, and wrong to add an extra '}' in the Makefile to work around
the bug in make(1), so I suggest avoiding the problem as follows:

_BLNK_GE_DEPENDS.${_pkg_}= ${BUILDLINK_DEPENDS.${_pkg_}:N*${LBRACE}*:M*>=[0-9]*}

--apb (Alan Barrett)