Re: Bug#853793: dpkg: ABI mismatch detector is too strict on armel/armhf
On 02/01/2017 04:34 PM, Steve McIntyre wrote:
> Hey folks,
> On Wed, Feb 01, 2017 at 05:08:50AM +0100, Guillem Jover wrote:
>> On Tue, 2017-01-31 at 22:44:36 +0000, James Cowgill wrote:
>>> Here libgsm.so has neither HARD or SOFT flags set. Also, asking gcc to
>>> generate a library which does not link against libc (this is used by
>>> sonames2elf in some packages) causes both flags to be set (maybe
>>> because it's compatible with both?).
>> Even worse, I've found at least one instance of a package containing
>> binaries with EABIv4 (on armel, paris-traceroute). So I guess I'll have
>> to remove the flags matching on EM_ARM ELF binaries for now. At least
>> this will get us back to the previous behavior with objdump, no
>> regression in that sense.
>> To be able to distinguish armel from armhf I'd probably need to check
>> the arm attributes section for Tag_ABI_VFP_args, which annoyingly
>> seems to be set even when the HARD flag is not set. :/ But this will
>> be for dpkg 1.19.x.
> Please don't go down that route, the ABI flags are intended to save
> people from that. I'm curious what's going wrong with libgsm1 here
> such that we're not seeing consistent ABI flags.
It's not just libgsm1, on armhf the build fails because of more than 20
If it helps, this is the short form of the code that triggers this (we
compute a list of dependencies for libs that are dlopen'ed by Wine):
$ sonamesDepends="libfontconfig.so.1 libfreetype.so.6 libncurses.so.5"
$ sonamesRecommends="libcups.so.2 libdbus-1.so.3 libfontconfig.so.1
libfreetype.so.6 libGL.so.1 libgnutls.so.30 libgsm.so.1 libjpeg.so.62
libncurses.so.5 libodbc.so.2 libopenal.so.1 libOSMesa.so.8
libpng16.so.16 libtiff.so.5 libX11.so.6 libXcomposite.so.1
libXcursor.so.1 libXext.so.6 libXi.so.6 libXinerama.so.1 libXrandr.so.2
libXrender.so.1 libxslt.so.1 libXxf86vm.so.1"
$ printf 'INPUT(%s)\n' "$sonamesDepends" > libeverything.so
$ gcc -shared -nostdlib -Wl,--no-as-needed -L. -leverything -o elf.depends
$ printf 'INPUT(%s)\n' "$sonamesRecommends" > libeverything.so
$ gcc -shared -nostdlib -Wl,--no-as-needed -L. -leverything -o
$ dpkg-shlibdeps --warnings=1 \
-dDepends -edebian/tmp/elf.depends \
-dRecommends -edebian/tmp/elf.recommends \