version 1.0.0, 2014-03-06 : Initial version
Lintiani: Get rid of the no-symbols-control-file info
When packaging a C or C++ library, you sometimes have to face a lintian complaining about "no-symbols-control-file". This tutorial will help you to get correct this.The "no-symbols-control-file" explains that the symbols of your library has not been exported yet. To fix this:
First, build the package (the symbol generation needs a compiled library to work):
debuild -uc -us
Then, use dpkg-gensymbols
to generate the symbol file. Let’s say here your
library name is mylib (replace mylib in the following examples).
From the root of your debian package’s source, execute the following command
line:
dpkg-gensymbols -pmylib -Odebian/mylib.symbols -q
This las command will create or update the debian/mylib.symbols
file (replace
mylib with the name of your package). But there’s still an issue because with
this you’ll have the debian version after the upstream version in the file which
will generate a symbols-file-contains-current-version-with-debian-revision
lintian error. To avoid this, You need to remove everything that’s after the
upstream version. Let’s say the package version is 2.0-1, you’ll need to remove
all the "-1" after the "2.0" in the symbol file. You can use this command to do
the job:
sed -e 's/\( [0-9\.]\+\)\-.\+$/\1/g' -i debian/mylib.symbols
Then, recompile your package and check again with:
debuild -uc -us
lintian -c --color auto -L ">=pedantic"