Bug#287557: /usr/include/GL/GLwDrawAP.h should not be shipped
On Sat, Mar 26, 2005 at 02:51:01AM -0500, Branden Robinson wrote:
> > This file is a private implementation file, therefore the "P".
> I'm not sure I can honor this request and be consistent with existing
> Debian practice.
Uhm... I meant that as "in this particular case the file is named like
that because it's private to the implementation", but I guess I get
> [ 2 asides:
> 1) libxaw6-dev will ship much the same files as libxaw7-dev.
> 2) WTF is xpaint doing shipping header files?! ]
Good question :-)
> I'm open to people's thoughts on this. There's nothing in Debian
> Policy on point, as far as I know.
No, there's nothing, that's right. I wondered about that because the
"upstream" source (the one in Mesa, not the one in the XFree86 tree)
doesn't actually include an install target for this particular subset
and the one in the XFree86 tree was constructed for the XFree86 tree.
> Might private header files be necessary for non-C implementations of
> library interfaces? (XML-RPC and what have you...)
Hmm... cute. Maybe...
I'd really expect wrappers to be wrappers around the public interface,
which among other things gives you an opaque handle to the widget:
extern Widget GLwCreateMDrawingArea(
that is to say "like everything else in the X Windows API".
At some point there were in fact multiple implementations of GLw
available for Linux (and if I'm not mistaken, there still are but I
can't check for sure now since I don't have access to the necessary
installation for that anymore). The whole point of making the pointers
opaque is precisely that: you should be able to exchange
implementations. It's very slippery to allow programs to have a peek
into the guts of a library designed in this way.
Just a datapoint:
$ cat test.c
$ cc -E test.c | grep '^#.*GLw'
# 1 "/usr/include/GL/GLwDrawA.h" 1 3 4
# 53 "/usr/include/GL/GLwDrawA.h" 3 4
# 54 "/usr/include/GL/GLwDrawA.h" 2 3 4
# 175 "/usr/include/GL/GLwDrawA.h" 3 4
# 196 "/usr/include/GL/GLwDrawA.h" 3 4
$ dpkg -S /usr/include/GL/GLwDrawA.h