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

missing symbols for non-public functions in library allowed?



Hi everyone,

I have a question regarding missing symbols in a shared library package
(libgenometools0). 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!). 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 quite 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 these 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

-- 
Sascha Steinbiss
Senior Bioinformatician
Parasite Genomics
Wellcome Trust Sanger Institute
Genome Campus, Hinxton,
Cambridge, CB10 1SA, UK

ss34@sanger.ac.uk


-- 
 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: