Subject: executables from devel/binutils not used by buildink3
To: None <tech-pkg@NetBSD.org>
From: Klaus Heinz <k.heinz.feb.vier@onlinehome.de>
List: tech-pkg
Date: 02/25/2004 23:08:03
Hi,

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

There seem to be at least two problems:

  $ bmake show-var VARNAME=AS
  /bin/as

This should be /usr/pkg/i386--netbsdelf/bin/as, set in
binutils/buildlink3.mk 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

  $

Somehow the behaviour described in bsd.buildlink3.mk

  # If the buildlink3.mk tries to handle dependencies satisfied directly by
  # the base system, then it should provide an appropriate value for
  # BUILDLINK_PREFIX.<pkg> for that case.  The case where a dependency is
  # satisfied by a pkgsrc-installed package is handled automatically by
  # this file.

doesn't happen for in this case. Could this be some mistake connected
with PHASES_AFTER_BUILDLINK and PKG_PHASE in bsd.buildlink3.mk? The
default definition for BUILDLINK_PREFIX.<pkg> is surrounded by
  .if !empty(PHASES_AFTER_BUILDLINK:M${PKG_PHASE})
  .endif

If I copy this from binutils/Makefile to binutils/buildlink3.mk

  BUILDLINK_PREFIX.binutils= ${PREFIX}/${MACHINE_GNU_PLATFORM}

the values of AS, AR, NM, LD and RANDLIB are correct, but they don't
seem to get used anywhere in mk/buildlink3/* and WRKSRC/.worklog shows,
/usr/bin/as is used in WKRSRC/.buildlink/bin/as.

What am I missing?

ciao
     Klaus