>Number: 8417
>Category: pkg
>Synopsis: xforms on i386/ELF broken due to undefined references
>Confidential: no
>Severity: critical
>Priority: medium
>Responsible: pkg-manager (NetBSD software packages system bug manager)
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Wed Sep 15 14:50:00 1999
>Last-Modified:
>Originator: John Darrow
>Organization:
Computing Services
Wheaton College, Wheaton, IL
>Release: NetBSD i386/ELF (current-19990705+) using pkgsrc-19990913+
>Environment:
System: NetBSD jdarrowp5.wheaton.edu 1.4K NetBSD 1.4K (JDARROWP5) #0: Tue Sep 14 13:00:02 CDT 1999 jdarrow@jdarrowpiii.wheaton.edu:/var/src/sys/arch/i386/compile/JDARROWP5 i386
>Description:
The xforms ELF library for i386 includes a few undefined
references to glX functions. This causes compiles which use it
to fail as follows (example from math/xldlas package, fixed for
xpkgwedge):
cc -O2 -DXFORMS86 -DPREFIX=\"/usr/pkg\" -I/usr/X11R6/include -I/usr/pkg/include/X11 xldlas.o frontend.o setstate.o files.o data.o log.o graph.o analysis.o help.o generate.o tips.o tests.o filters.o -o xldlas -L/usr/X11R6/lib -Wl,-R/usr/X11R6/lib -lX11 -lm -L/usr/pkg/lib -Wl,-R/usr/pkg/lib -lxforms
graph.o: In function `do_logo_plot':
graph.o(.text+0xc71): warning: tmpnam() possibly used unsafely, use mkstemp() or mkdtemp()
/usr/pkg/lib/libxforms.so: undefined reference to `glXQueryExtension'
/usr/pkg/lib/libxforms.so: undefined reference to `glXMakeCurrent'
/usr/pkg/lib/libxforms.so: undefined reference to `glXChooseVisual'
/usr/pkg/lib/libxforms.so: undefined reference to `glXDestroyContext'
/usr/pkg/lib/libxforms.so: undefined reference to `glXCreateContext'
collect2: ld returned 1 exit status
*** Error code 1
Stop.
nm -A /usr/X11R6/lib/*.so |grep glX yields nothing. (This is with
xsrc 19990909, including XFree86 3.3.5)
Remembering a recent thread in port-i386 about GLX, I installed
the graphics/Mesa package. nm then found the symbols in question
in libGL.so (aka libMesaGL.so). Adding "-lGL -lXext" to the
cc command in question allowed the program to compile and run.
However, even if the xforms pkg is made to depend on Mesa if on
i386/ELF, having to add conditional patches to all packages which
depend on xforms (currently comms/xisp, databases/xmysql{,admin},
mail/{xfmail,xldlas}, and print/lyx) to include the necessary
Mesa libraries (-lGL and its own -lXext dependency) if on i386/ELF
is both difficult (for example, math/xldlas would need two
patch-aa's, one without -lGL -lXext for non-ELF, one with them for
ELF) and, seemingly, a Gross Hack.
Also, if any of these packages use some sort of configure method to
detect xforms (as does audio/rplay, which, though not currently
forced to do so by our pkgsrc, will build an xrplay module if it
finds xforms ( *** WEAK DEPENDENCY ALERT *** )), getting things
right will be even harder.
>How-To-Repeat:
Attempt to compile an xforms-using package on i386/ELF.
>Fix:
For now, probably disable xforms for batch builds on i386/ELF
until either 1. the xforms binary is fixed to not reference glx,
or 2. conditional patches for Mesa can be added to all the
xforms-using packages.
>Audit-Trail:
>Unformatted: