In CDRIVER-1347 we deleted versions.ldscript from libbson and libmongoc, because it's a pain to maintain. That file had two pieces of information:
1. The list of public symbols.
2. Which library versions introduced each of those symbols.
We've replaced number 1 by decorating each public function declaration with the BSON_API macro. But we lost number 2. As a consequence, building the updated Debian package fails:
dpkg-gensymbols: warning: debian/tmp/DEBIAN/symbols doesn't match completely debian/libbson-1.0-0.symbols
The diff is attached.
These missing symbols can be easily reintroduced by just creating a versions.ldscript with only these symbols:
LIBBSON_1.0@LIBBSON_1.0 1.2.1 LIBBSON_1.1@LIBBSON_1.1 1.2.1 LIBBSON_1.2@LIBBSON_1.2 1.2.1 LIBBSON_1.3@LIBBSON_1.3 1.4.1 LIBBSON_1.4@LIBBSON_1.4 1.4.1
But the actual function names are a problem. Consider this symbol that we'd had:
bson_get_version@LIBBSON_1.2 1.2.1
The format is explained here, it is "name@version minimal-version", which I only sort of understand.
The new symbol output is like:
bson_get_version@Base 1.5.0-1
Is this ok and we should just disable dpkg-gensymbols's check?
(The symbols file was added to libbson by Ondřej Surý in pull 149. We'll have the same issue when we build the libmongoc package, which has a symbols file from pull 308.)