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

missing symbols for non-public functions in library?



Dear Mentors,

I have a question regarding missing symbols in a shared library package
(libgenometools0) after a new upstream release. As it has turned out,
some exported symbols have disappeared from the shared library
(https://gist.github.com/satta/1ac2d6e38bd577f17d15) between the last
and current upstream release. They were not declared as static in the
prior version (1.5.1) and have -- most likely inadvertently -- been
exported as public symbols. In the new release (1.5.2) they have been
remove or renamed (as they were deemed to be internal only by the
developers -- of which I am one). This now leads to a discrepancy
involving missing symbols, apparently detected by comparison to the
1.5.1 symbols file created by Andreas quite some time ago for me (thanks
btw!). According to the policy, this is a condition which normally calls
for an ABI version bump :(

However, only two of the missing symbols appeared in public API headers
distributed in the 1.5.1 libgenometools0-dev package. This luckily makes
it very unlikely that anything built externally against the shared lib
will be broken by the 1.5.2 transition unless it uses one of these
functions. It has to be noted that both of the functions in question
were just renamed for consistency reasons in 1.5.2 and this could easily
be fixed in the package by adding a patch introducing wrapper functions
with the old names.

Under these circumstances (only private, internal symbols which have
been mistakenly exported are changed), is it OK to add wrappers for
those which are in the official API, and to simply adjust libtool to not
export the internal ones in the current version to make sure they do not
remain exported? Would it still be necessary in any case to increase the
ABI version? Actually as one of the upstream authors I can say we have
been rather careful to keep the API/ABI stable -- but only for those
that we put into the 'official' API headers.

I would be very happy to receive some input on this from some
knowledgeable library packagers -- thanks in advance!

Kind regards,
Sascha


-- 
 The Wellcome Trust Sanger Institute is operated by Genome Research 
 Limited, a charity registered in England with number 1021457 and a 
 company registered in England with number 2742969, whose registered 
 office is 215 Euston Road, London, NW1 2BE. 


Reply to: