Subject: assignment problem in (was Re: executables from devel/binutils not used by buildink3)
To: None <>
From: Klaus Heinz <>
List: tech-pkg
Date: 03/05/2004 23:06:24
I had the following problem:

> building multimedia/mplayer on NetBSD/i386 1.5.4_ALPHA I encountered the
> problem that binutils is required, but not found during the "configure"
> stage:
>   ...
>   ===> Required installed package binutils>=2.14.0: binutils- found
>   ===> Required installed package gcc>=2.95.3: gcc-2.95.3 found
>   ...
>   ===> Configuring for mplayer-1.0rc3nb1
>   Detected operating system: NetBSD
>   Detected host architecture: i386
>   Checking for gcc version ... 2.95.3, ok
>   ...
>   Checking for assembler (as 2.9.1) ... failed
>   Upgrade binutils to 2.10.1 ...

>   $ bmake show-var VARNAME=AS
>   /bin/as
> This should be /usr/pkg/i386--netbsdelf/bin/as, set in
> binutils/ to ${BUILDLINK_PREFIX.binutils}/bin/as. But I
> cannot see where BUILDLINK_PREFIX.binutils is supposed to be set:
>   $ bmake show-var VARNAME=BUILDLINK_PREFIX.binutils
>   $

One mistake on my side: I did not provide a value for PKG_PHASE (eg,
make PKG_PHASE=buildlink show-var...) for the show-var target, thus I got
partially wrong output.

I think there is a problem in for the
"buildlink-wrappers" target:

  ---	Tue Feb 24 22:34:54 2004
  +++	Fri Mar  5 21:08:26 2004
  @@ -1202,15 +1202,15 @@
   buildlink-wrappers: ${_BLNK_LIBTOOL_FIX_LA}
   .for _wrappee_ in ${_BLNK_WRAPPEES}
   .  if defined(PKG_${_wrappee_})
   _BLNK_PKG_${_wrappee_}=	${PKG_${_wrappee_}}
   .  else
  -_BLNK_PKG_${_wrappee_}=	${${_wrappee_}}
  +_BLNK_PKG_${_wrappee_}:=	${${_wrappee_}}
   .  endif
   BUILDLINK_${_wrappee_}=	\
   ${_wrappee_}:=	${BUILDLINK_${_wrappee_}:T}
   # Filter to scrunch shell scripts by removing comments and empty lines.

For the value "AS" of _wrappee_, _BLNK_PKG_AS got set to "${AS}" (which
got correctly set to /usr/pkg/bin/as in binutils/, then
BUILDLINK_AS was assigned a value and in turn AS got changed again,
effectively changing _BLNK_PKG_AS as well.
The proposed patch changes this behaviour so that $BUILDLINK_DIR/bin/as
contains /usr/pkg/bin/as as the command to execute and the mplayer
package recognizes as from binutils correctly.

Probably the "then"-clause of the test for PKG_${_wrappee_} should also
use assignment with expansion.