Possible JACK ABI changes between 0.118 and 1.9.5

Reinhard Tartler siretart at tauware.de
Tue Apr 6 05:29:51 UTC 2010


On Tue, Apr 06, 2010 at 01:11:20 (CEST), Felipe Sateler wrote:

> On Mon, Apr 5, 2010 at 14:33, Jonas Smedegaard <dr at jones.dk> wrote:
>> On Mon, Apr 05, 2010 at 01:37:27PM -0400, Felipe Sateler wrote:
>>>
>>> On Mon, Apr 5, 2010 at 11:56, Jonas Smedegaard <dr at jones.dk> wrote:
>>>>
>>>> I have now switched JACK packaging to use symbols files, to automate
>>>> tracking of ABI changes.
>>>>
>>>> The switch from 0.118 to 1.9.5 causes breakage in that automated
>>>> tracking, however.
>>>>
>>> <snip>
>>>>
>>>> Can someone fluent in C/C++ please look at this?  Perhaps you, Adrian,
>>>> since you seem most knowledgeable in JACK around here?

I think I qualify.

>>> Could you post the actual problems you found? Perhaps a diff of 0.118
>>> symbols and 1.9.5?
>>
>> Sorry.  Sure.
>>
>>
>> Attached is a build of current Git:
>
> I don't have the time right now to make a complete revision, but I
> looked over the list, and it seems to me that both jack1 and jack2
> suck at hiding symbols. Anyway, all the missing symbols I looked at
> are not part of the jack API.

Indeed, There are also a lot of mangled C++ symbols, which most probably
shouldn't be exported, as the "jack ABI" is pure C.

Moreover, C++ libraries are anyways a pain to maintain with symbol
files when it comes to templates, since only instantiated templates show
up as exported symbols.

Another source of problem is that presence of machine optimization. In
your buildlog I see symbols that indicate sse2 enabled functions. Has
anyone made sure that jackd2 really works on non-sse2 enabled machines?

Adrian, is there a jackd ABI definition? What symbols are supposed to be
exposed by libjack? I suppose only globals and functions defined in
these files are part of this:

/usr/include/jack
/usr/include/jack/intclient.h
/usr/include/jack/jack.h
/usr/include/jack/ringbuffer.h
/usr/include/jack/statistics.h
/usr/include/jack/thread.h
/usr/include/jack/timestamps.h
/usr/include/jack/transport.h
/usr/include/jack/types.h
/usr/include/jack/midiport.h

But is there perhaps a more canonical list? Moreover, I see some
functions marked as JACK_DEPRECATED in jack.h. Are they still used by
applications and does jack2 still provide them?

-- 
Gruesse/greetings,
Reinhard Tartler, KeyID 945348A4



More information about the pkg-multimedia-maintainers mailing list