Hi!
On Fri, 2014-10-10 at 16:16:16 +0200, Jérémy Bobbio wrote:
> Package: dpkg-dev
> Version: 1.17.16
> Severity: minor
> Tags: patch
> User: [email protected]
> Usertags: toolchain randomness
> In the Depends field of the control file of libgemanx-core0, one build
> has `libglib2.0-0 (>= 2.12.0)` while the other has
> `libglib2.0-0 (>= 2.16.0)`.
>
> dpkg-shlibdeps outputs a warning, as it is actually a useless
> dependency. So the issue is probably a minor one. Here's my analysis and
> possible solution:
>
> The minimal version numbers differ from one run to another because when
> the .symbols file is loaded, the order of the entries in the `libfiles`
> hash are random. Only the minimal required version for the first
> encountered shared library of a package will be currently used.
>
> libglib2.0-0 exhibits the problem because libgio-2.0.so.0 has a minimal
> required version of 2.16.0, while all other shared libraries contained
> in the same package have a minimal required version of 2.12.0.
Indeed, thanks for the analysis…
> The attached patch uses `update_dependency_version` in order to raise
> the initial minimum required version for each shared libraries provided
> by the same package.
… and the patch!
And this can actually pose problems besides unreproducible output.
> diff --git a/scripts/dpkg-shlibdeps.pl b/scripts/dpkg-shlibdeps.pl
> index bda1e09..6caa6d8 100755
> --- a/scripts/dpkg-shlibdeps.pl
> +++ b/scripts/dpkg-shlibdeps.pl
> @@ -255,13 +255,9 @@ foreach my $file (keys %exec) {
> # package and we really need it)
> my $dep = $symfile->get_dependency($soname);
> my $minver = $symfile->get_smallest_version($soname) || '';
> - foreach my $subdep (split /\s*,\s*/, $dep) {
> - if (not exists $dependencies{$cur_field}{$subdep}) {
> - $dependencies{$cur_field}{$subdep} =
> Dpkg::Version->new($minver);
> - print " Initialize dependency ($subdep) with minimal
> " .
> - "version ($minver)\n" if $debug > 1;
> - }
> - }
> + update_dependency_version($dep, $minver);
> + print " Initialize dependencies ($dep) with minimal " .
> + "version ($minver)\n" if $debug > 1;
I've slightly reworded the debug message to match the other one after
an update_dependency_version() call. Merged locally, will be included
in today's upload.
Thanks,
Guillem
--
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]