[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#287608: Missing dependency on lesstif2-dev?



On Sat, Mar 26, 2005 at 03:06:44AM -0500, Branden Robinson wrote:

 > >  the GLw library shipped with the xlibmesa-gl-dev package uses
 > >  Motif (both 1.2 and 2), so some sort of dependency should be
 > >  declared on lesstif2-dev (Depends, Suggests, Recommends).
 > 
 > Can you elaborate, please?

 Sure :-)

 AFAIR this hack was devised by someone to meet someone else's
 requirement of being able to develop against Motif 1.2 and 2 with the
 same GL development environemnt.

 Ah, here it is:

/*
** This file has been slightly modified from the original by Carlos A. M. dos
** Santos <casantos@cpmet.ufpel.tche.br> for integration into XFree86 source
** tree and for generating both Motif(TM) 1.2 and 2.x versions of the widgets
** in the same library.
*/

 which basically refers to this:

#if XmVERSION == 1
/*
#  define _GLwMDrawingAreaClassRec      _GLwM1DrawingAreaClassRec
#  define _GLwMDrawingAreaRec           _GLwM1DrawingAreaRec
*/
#  define glwMDrawingAreaWidgetClass    glwM1DrawingAreaWidgetClass
#  define glwMDrawingAreaClassRec       glwM1DrawingAreaClassRec
#  define GLwCreateMDrawingArea         GLwCreateM1DrawingArea
#elif XmVERSION == 2
/*
#  define _GLwMDrawingAreaClassRec      _GLwM2DrawingAreaClassRec
#  define _GLwMDrawingAreaRec           _GLwM2DrawingAreaRec
*/
#  define glwMDrawingAreaWidgetClass    glwM2DrawingAreaWidgetClass
#  define glwMDrawingAreaClassRec       glwM2DrawingAreaClassRec
#  define GLwCreateMDrawingArea         GLwCreateM2DrawingArea
#else
#error "Sorry, unknown Motif version."
#endif /* XmVERSION */

 which is to say that you have to include the correct Motif header
 _before_ including GLwMDrawA.h.

 That's got to be the worst possible API ever.  Whatever...

 > No version of the Motif API is required to build the xfree86
 > packages, so this dependency must be pretty weak.

 Perhaps that was the source of confusion.

 What I meant to say was that there's something in xlibmesa-gl-dev that
 needs either Motif 1.2 or 2:

$ dpkg -L xlibmesa-gl-dev | grep GLw
/usr/X11R6/include/GL/GLwDrawA.h
/usr/X11R6/include/GL/GLwDrawAP.h
/usr/X11R6/include/GL/GLwMDrawA.h
/usr/X11R6/include/GL/GLwMDrawAP.h
/usr/X11R6/lib/libGLw.a
/usr/X11R6/man/man3/GLwDrawingArea.3x.gz
/usr/X11R6/man/man3/GLwDrawingAreaSwapBuffers.3x.gz
/usr/X11R6/man/man3/GLwMDrawingArea.3x.gz
/usr/X11R6/man/man3/GLwCreateMDrawingArea.3x.gz
/usr/X11R6/man/man3/GLwDrawingAreaMakeCurrent.3x.gz
/usr/include/GL/GLwMDrawAP.h
/usr/include/GL/GLwMDrawA.h
/usr/include/GL/GLwDrawAP.h
/usr/include/GL/GLwDrawA.h

 and:

$ objdump -t /usr/X11R6/lib/libGLw.a | grep Xm
00000000         *UND*  00000000 _XmStrings
00000000         *UND*  00000000 _XmBackgroundColorDefault
00000000         *UND*  00000000 _XmForegroundColorDefault
00000000         *UND*  00000000 _XmHighlightColorDefault
00000000         *UND*  00000000 _XmPrimitiveHighlightPixmapDefault
00000000         *UND*  00000000 _XmStrings
00000000         *UND*  00000000 _XmBackgroundColorDefault
00000000         *UND*  00000000 _XmForegroundColorDefault
00000000         *UND*  00000000 _XmHighlightColorDefault
00000000         *UND*  00000000 _XmPrimitiveHighlightPixmapDefault

$ dpkg -s xlibmesa-gl-dev | egrep '^(Depends|Suggests|Recommends)'
Depends: xlibmesa-gl (= 4.3.0.dfsg.1-12.0.1), x-dev, libxext-dev, libx11-dev, libc6-dev | libc-dev

 > Is it the case that anyone programming against libGLw would also be
 > #including <X11/Xm.h> or so?

$ cat test.c 
#include <GL/GLwMDrawA.h>

$ cc -E test.c | grep 'Xm\.h' | cut -d ' ' -f 3 | sort -u
"/usr/include/Xm/Xm.h"

 So, strictly, no, GLwMDrawA.h will pull that header for you.  Note that
 GLwDrawA.h won't.  I guess your question is if anyone using GLw will
 need Motif:  No, the library has an Xt interface, too.

 Apropos, the reason why you don't need Motif to compile X is this
 (GLwDrawA.h):

#ifdef __GLX_MOTIF
# ifndef __GLX_INCLUDE_XM_H     /* Defined during library compilation */
#  include <Xm/Xm.h>            /* We need to know about XmVERSION early */
# endif
#endif

 This works since the interfaces are opaque :-)

 > That's my guess for a quick look at xc/lib/GLw, but GL is really not
 > my area of expertise.

 I can say I have a few clues about GL, but I've never used GLw for
 anything.  It's just a PITA which some old program needs (or programs
 running on IRIX and the like, it's quite common there, I work around it
 by just not using that sort of GUI :-)

 > (If my guess is right, either Recommends or Suggests is warranted, as
 > people may install xlibmesa-gl-dev without actually planning or
 > needing to do Motif/LessTif development.)

 That's probably right.

 Sorry about the overly verbose message.

 Marcelo



Reply to: