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

Re: Dependencies on shared libs, take 2

On Wed, Jun 06, 2007 at 02:33:58PM +0200, Raphael Hertzog wrote:
> On Wed, 06 Jun 2007, Steve Langasek wrote:
> > > > Consider cases where you want to declare that more than one package
> > > > satisfies the dependency -- we do have libraries using that today in their
> > > > shlibs.  I do think it's necessary here to support the full range of
> > > > dependency semantics here.

> > > Good that you mention it because it can't be done with my current
> > > implementation/syntax...

> > > Can we make the supposition that in that case all packages providing the
> > > library have the same version?

> > Nope.  Have a look at libGL.  (libGL would actually benefit significantly
> > from symbol-shlibs, because not all of the symbols exported by each of the
> > implementors are supported by all the others. :/)

> Can you expand? I don't see at all how libgl would "benefit" from this new
> approach. The current shlibs is already very lax and non-versioned.

Yes, and that's the problem:  I know the libgl shlibs to have been wrong in
certain corner cases involving uncommon symbols (whether those are
implementors adding their own extensions, or failing to implement the
standard, or just exposing symbols in the lib that aren't part of the API in
the headers, I don't know).

--- /tmp/mesa-syms      2007-06-06 22:32:25.000000000 +0000
+++ /tmp/nvidia-syms    2007-06-06 22:31:01.000000000 +0000
 Base        glAccum
+Base        glActiveStencilFaceEXT
 Base        glActiveTexture
 Base        glActiveTextureARB
-Base        glAlphaFragmentOp1ATI
-Base        glAlphaFragmentOp2ATI
-Base        glAlphaFragmentOp3ATI
+Base        glActiveVaryingNV
+Base        glAddSwapHintRectWIN
 Base        glAlphaFunc
 Base        glAreProgramsResidentNV
 Base        glAreTexturesResident
@@ -106,14 +53,21 @@
 Base        glAttachObjectARB
 Base        glAttachShader
 Base        glBegin
-Base        glBeginFragmentShaderATI
+Base        glBeginConditionalRenderNVX
+Base        glBeginConditionalRenderOES
+Base        glBeginOcclusionQueryNV
 Base        glBeginQuery
 Base        glBeginQueryARB
+Base        glBeginTransformFeedbackNV
+Base        glBindArraySetARB
 Base        glBindAttribLocation
 Base        glBindAttribLocationARB
 Base        glBindBuffer
 Base        glBindBufferARB
-Base        glBindFragmentShaderATI
+Base        glBindBufferBaseNV
+Base        glBindBufferOffsetNV
+Base        glBindBufferRangeNV
+Base        glBindFragDataLocationEXT
 Base        glBindFramebufferEXT
 Base        glBindProgramARB
$ diff -u /tmp/mesa-syms /tmp/nvidia-syms |grep -c '^\+.*\bgl'
$ diff -u /tmp/mesa-syms /tmp/nvidia-syms |grep -c '^\-.*\bgl'

For another example, see fam/gamin, which are supposed to be 100%
ABI-compatible, but I'm not sure this is the case.

Steve Langasek                   Give me a lever long enough and a Free OS
Debian Developer                   to set it on, and I can move the world.
vorlon@debian.org                                   http://www.debian.org/

Reply to: