Re: cppcheck: Incorrect minimum version requirement for Depends: on libc
Hi Joachim, Joachim Reichel writes: > Hi, > > On 19.11.21 18:35, Joachim Reichel wrote: >> I'd appreciate some help with a problem I don't understand. >> >> Bug #1000146 against cppcheck 2.6-1 (in testing and unstable) is about the >> fact >> that /usr/bin/cppcheck seems to require "libc6 >= 2.32" while the Depends: >> line >> in the binary package cppcheck contains "libc6 (>= 2.29)". > > I debugged this a bit further and found that dpkg-shlibdeps does not take > certain symbols into account. Details are in bug #1000421. > Nice find! Cheers, Nicholas signature.asc Description: PGP signature
Re: cppcheck: Incorrect minimum version requirement for Depends: on libc
Hi, On 19.11.21 18:35, Joachim Reichel wrote: I'd appreciate some help with a problem I don't understand. Bug #1000146 against cppcheck 2.6-1 (in testing and unstable) is about the fact that /usr/bin/cppcheck seems to require "libc6 >= 2.32" while the Depends: line in the binary package cppcheck contains "libc6 (>= 2.29)". I debugged this a bit further and found that dpkg-shlibdeps does not take certain symbols into account. Details are in bug #1000421. Best regards, Joachim
cppcheck: Incorrect minimum version requirement for Depends: on libc
Dear mentors, I'd appreciate some help with a problem I don't understand. Bug #1000146 against cppcheck 2.6-1 (in testing and unstable) is about the fact that /usr/bin/cppcheck seems to require "libc6 >= 2.32" while the Depends: line in the binary package cppcheck contains "libc6 (>= 2.29)". Of course I can specify that version requirement manually in the source package, but shouldn't "Depends: ${shlibs:Depends}, ${misc:Depends} [...]" take care of that? 1. Just running cppcheck with libc6 2.32 (from testing/unstable) works: $ cppcheck Cppcheck - A tool for static C/C++ code analysis [...] 2. Using libc.so.6 from libc6 2.31-13+deb11u2 (from stable) results in $ LD_PRELOAD=./libc.so.6 cppcheck cppcheck: ./libc.so.6: version `GLIBC_2.32' not found (required by cppcheck) cppcheck: ./libc.so.6: version `GLIBC_2.32' not found (required by /usr/lib/x86_64-linux-gnu/libstdc++.so.6) cppcheck: ./libc.so.6: version `GLIBC_2.32' not found (required by /lib/x86_64-linux-gnu/libpthread.so.0) 3. Inspecting the cppcheck binary gives $ readelf -a /usr/bin/cppcheck | grep "2\.32" 004670e0 041e0005 R_X86_64_COPY 004670e0 __libc_single_threaded@GLIBC_2.32 + 0 1054: 004670e0 1 OBJECT GLOBAL DEFAULT 26 [...]@GLIBC_2.32 (20) 41c: 1 (*global*) 1 (*global*) 14 (GLIBC_2.32)1 (*global*) 0x0070: Name: GLIBC_2.32 Flags: none Version: 20 Do I interpret that correctly that cppcheck itself requires libc6 >= 2.32 (and not just one of its dependencies)? Why doesn't that requirement make it into the Depends: of the binary package? The problem can be reproduced by building cppcheck 2.6-1 in an unstable chroot. So it is not just some transient glitch when the package was build for the archive ~4 weeks ago. Build log for amd64 is at https://buildd.debian.org/status/fetch.php?pkg=cppcheck=amd64=2.6-1=1634837839=0 Best regards, Joachim