Subject: pkg/26542: assorted pkg breakage with rev. 1.422
To: None <>
From: None <>
List: pkgsrc-bugs
Date: 08/03/2004 16:34:59
>Number:         26542
>Category:       pkg
>Synopsis:       assorted pkg breakage with rev. 1.422
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    pkg-manager
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue Aug 03 22:36:00 UTC 2004
>Originator:     Jim Bernard
>Release:        NetBSD 2.0G, July 31 2004 source, pkgsrc of same or later date
System: NetBSD 2.0G Sat Jul 31 17:03:53 MDT 2004 i386
Architecture: i386
Machine: i386
	In PR 26524 I described a build failure of print/gv, which I
	ultimately traced (described in an addendum to the PR) to
	an incompatibility of pkgsrc make files with a recent change
	to (revision 1.422) that imported assignments of
	LIBxxx variables that had previously been in
	In the case of gv, the variable LIBXAW was set by,
	preventing its proper assignment in x11/Xaw3d/,
	which ultimately caused the gv build failure.

	I've also found one other case so far where the same change to resulted in a package build failure.  That is
	devel/libgnome.  But the problem is actually not there---it's
	in audio/esound.  When esound is built with rev. 1.422 of in place, the variable LIBOSSAUDIO is set to
	/usr/lib/libossaudio, and the esound library link command looks

	  /bin/sh ./libtool --mode=link gcc  -O2 -I/usr/pkg/include -L/usr/pkg/lib -Wl,-R/usr/pkg/lib -o -rpath /usr/pkg/lib -version-info 2:34:2 -no-undefined esdlib.lo esdmgr.lo esdfile.lo esd_config.lo  audio.lo genrand.lo util.lo -L/usr/pkg/lib -Wl,-R/usr/pkg/lib -laudiofile -lm  /usr/lib/libossaudio.a

	And libtool whines:

	  *** Warning: Trying to link with static lib archive /usr/lib/libossaudio.a.
	  *** I have the capability to make that library automatically link in when
	  *** you link to this library.  But I can only do this if you have a
	  *** shared version of the library, which you do not appear to have
	  *** because the file extensions .a of this argument makes me believe
	  *** that it is just a static archive that I should not used here.

	The resulting libesd's then cause the devel/libgnome link step
	to fail:

	  /usr/local/src/netbsd/pkgsrc/devel/libgnome/work.roc/.buildlink/lib/ undefined reference to `_oss_ioctl'

	So, I replaced revision 1.422 of with revision 1.421
	and rebuilt esound.  Then the link step looked like:

	  /bin/sh ./libtool --mode=link gcc  -O2 -I/usr/pkg/include -L/usr/pkg/lib -Wl,-R/usr/pkg/lib -o -rpath /usr/pkg/lib -version-info 2:34:2 -no-undefined esdlib.lo esdmgr.lo esdfile.lo esd_config.lo  audio.lo genrand.lo util.lo -L/usr/pkg/lib -Wl,-R/usr/pkg/lib -laudiofile -lm  -lossaudio

	Note the "-lossaudio" added by mk/, instead
	of the /usr/lib/libossaudio.a added by  This time there
	was no warning from libtool.  And a subsequent build of devel/libgnome
	was then successful (with either rev. 1.421 or rev. 1.422 of

	So, now it appears that there is a general conflict between the
	assignments of LIBxxx variables in (which are path
	names to static libraries) and assignments to variables of the
	same name in pkgsrc make files (which are often linker flags),
	the latter assignments apparently generally being conditional.
	I don't know yet how many of these will prove to be a problem.
	So far, at least LIBXAW and LIBOSSAUDIO have caused trouble.

	Install a /usr/share/mk tree containing rev. 1.422 of
	(in was added July 30).  Build esound.  Try to build libgnome.
	OR: build Xaw3d and try to build gv.  (In both cases, there
	are other prerequisites that will have to be built.)

	As I mentioned in an addendum to PR 26524, I'm not at all sure
	what's the best course of action.  I called this a pkg PR, since
	that's where the breakage is seen, but it's possible that the
	ultimate solution will be to change  Other possibilities
	include adapting the pkgsrc make files to assign the various
	LIBxxx variables that it uses unconditionally, so that the
	assignments in don't interfere.  Another would be to
	use a different set of variable names in pkgsrc.