Hi,
my package gensio, which generates a library package, has recently
thrown a few lintian warnings regarding missing symbols files. I read
the wiki page and the manual page of dpkg-gensymbols and had
dpkg-gensymbols generate a debian/libgensio0.symbols file, added the Build-Depends-Package line and did the mentioned conversions regarding
C++ libraries.
Still, the build on i386 fails since the symbols file looks different on
i386 than it does on amd64. See https://salsa.debian.org/debian/gensio/-/jobs/3093727
The repository can be inspected at https://salsa.debian.org/debian/gensio/-/tree/master
I guess this behavior is expected since you can have symbols file per
arch as debian/libgensio0.symbols.$ARCH. But how do I generate those?
Do I really need to build on all arches and/or guess what's needed in
the arch-dependent symbol file from the logs of failed buildd runs? This looks like an awful lot of work that has to be repeated for every
upstream update?
Or am I missing something here?
I tried them on a few occasions only to drop them a few uploads later, as they add a lot of maintainance burden. They will frequently break, as some other package or toolchain might have influences, are
architecture dependent and once you think you've got it you'll get the
next breakage… I'd just override the warning and be done.
Hi,
my package gensio, which generates a library package, has recently
thrown a few lintian warnings regarding missing symbols files. I read
the wiki page and the manual page of dpkg-gensymbols and had
dpkg-gensymbols generate a debian/libgensio0.symbols file, added the Build-Depends-Package line and did the mentioned conversions regarding
C++ libraries.
Still, the build on i386 fails since the symbols file looks different on
i386 than it does on amd64. See https://salsa.debian.org/debian/gensio/-/jobs/3093727
The repository can be inspected at https://salsa.debian.org/debian/gensio/-/tree/master
I guess this behavior is expected since you can have symbols file per
arch as debian/libgensio0.symbols.$ARCH. But how do I generate those?
Do I really need to build on all arches and/or guess what's needed in
the arch-dependent symbol file from the logs of failed buildd runs? This looks like an awful lot of work that has to be repeated for every
upstream update?
On Thu, 2022-08-11 at 16:10 +0200, Tobias Frost wrote:
I tried them on a few occasions only to drop them a few uploads later, as they add a lot of maintainance burden. They will frequently break, as some other package or toolchain might have influences, are
architecture dependent and once you think you've got it you'll get the
next breakage… I'd just override the warning and be done.
What do you do for the library shlibs in that case? Use == $version?
--
bye,
pabs
https://wiki.debian.org/PaulWise
I suggest uploading new upstream releases to experimental to know the behavior in each architecture. For MISSING lines, an easy fix is to
exclude the fault architectures. E.g. to exclude i386 and x32:
(arch=!i386 !x32)(c++)"gensios::gensio_cpp_vlog_handler(gensios::gensio_os_funcs*,
gensios::gensio_log_levels, char const*, __va_list_tag*)@Base"
${shlibs:Depends}
what's the benefit in having a symbols file?
On Fri, 2022-08-12 at 12:06 +0200, Marc Haber wrote:
what's the benefit in having a symbols file?
It means that packages depending on a library can relax their version dependencies on that library to the oldest version that supports all
the symbols they use. Until the symbols mechanism was invented,
whenever a library added a symbol, it bumped its shlibs and after that packages built against the library would require the new version.
That made it harder to do (partial) upgrades, testing migration etc.
https://wiki.debian.org/Projects/ImprovedDpkgShlibdeps
I suggest uploading new upstream releases to experimental to know the behavior in each architecture. For MISSING lines, an easy fix is to
exclude the fault architectures. E.g. to exclude i386 and x32:
(arch=!i386 !x32)(c++)"gensios::gensio_cpp_vlog_handler(gensios::gensio_os_funcs*,
gensios::gensio_log_levels, char const*, __va_list_tag*)@Base"
I think this is worth doing only if the number of your reverse depends
is well in the two-digit range or above that. That doesn't apply (yet)
to gensio, so I'm likely to remove the symbols file from my package
again and override the lintian warning.
On Sat, 2022-08-13 at 22:19 +0200, Marc Haber wrote:
dpkg-gensymbols does not seem to be willing to grok the second line ("gensio_log_levels, not a valid version").
Also, the arch extension does not seem to be in deb-symbols(5).
See the deb-src-symbols(5) manual page, I think you want this:
(arch=!arm64|c++)"gensios::gensio_cpp_vlog_handler(gensios::gensio_os_funcs*, gensios::gensio_log_levels, char const*, __va_list_tag*)@Base" 2.5.1
(arch=arm64|c++)"gensios::gensio_cpp_vlog_handler(gensios::gensio_os_funcs*, gensios::gensio_log_levels, char const*, __va_list_tag*)@Base" 2.5.1
| Sysop: | Keyop |
|---|---|
| Location: | Huddersfield, West Yorkshire, UK |
| Users: | 715 |
| Nodes: | 16 (2 / 14) |
| Uptime: | 146:02:53 |
| Calls: | 12,089 |
| Calls today: | 2 |
| Files: | 15,000 |
| Messages: | 6,517,500 |