Bug#849593: Re: Bug#849593: libfftw3-single3: dependencies in shlibs file not tight enough

James Cowgill jcowgill at debian.org
Thu Jan 5 17:45:45 UTC 2017


Hi,

Please CC me, I only just saw this email when I checked on the bugreport.

On 30/12/16 17:17, Ghislain Vaillant wrote:
> CC'd to d-science,
> 
> On Fri, 30 Dec 2016 01:24:07 +0000 James Cowgill <jcowgill at debian.org> wrote:
>> On 30/12/16 00:50, Ghislain Vaillant wrote:
>> > On Thu, 29 Dec 2016 00:30:58 +0000 James Cowgill <jcowgill at debian.org> wrote:
>> >> On 29/12/16 00:02, Oleksandr Gavenko wrote:
>> >>> Package: ardour
>> >>> Version: 1:5.5.0~dfsg-1
>> >>> Severity: important
>> >>>
>> >>> Application is being crashing constantly with:
>> >>>
>> >>> bash# ardour5
>> >>> /usr/lib/ardour5/ardour-5.5.0: symbol lookup error:
>> /usr/lib/ardour5/ardour-5.5.0: undefined symbol:
>> fftwf_make_planner_thread_safe
>> >> [...]
>> >>> Versions of packages ardour depends on:
>> >> [...]
>> >>> ii  libfftw3-single3     3.3.4-2
>> >
>> > How come? Both testing and unstable have 3.3.5-1.
>>
>> I don't think that matters. Partial upgrades should work (and
>> derivatives may rely on it).
> 
> Next time, it would be nice to explain upfront that the new version of
> ardour you are trying to build may *conditionally* use new features
> introduced by FFTW 3.5:
> 
> https://github.com/Ardour/ardour/search?utf8=%E2%9C%93&q=fftwf_make_planner_thread_safe&type=Code

OK, but I don't think the conditionally part is relevant here. Any
package which uses the new function from FFTW 3.3.5 - conditionally or
not - has the potential to be broken by this bug. Since the condition is
evaluated at compile time, it will always be true in the ardour Debian
package in stretch/sid.

>> >> This package is the problem. The fftwf_make_planner_thread_safe
>> >> function is only present in fftw3 3.3.5 (so upgrading your package
>> >> would fix this). fftw3 should generate a stricter dependency so that
>> >> this doesn't happen.
>> >
>> > libfftw3-dev depends on libfftw3_single3 (=${binary:Version}).
>> >
>> > How is that not strict enough?
>>
>> I'm talking about the dependency from ardour to libfftw3_single3. The
>> dependency from libfftw3-dev doesn't matter here.
> 
> Maybe this could be *temporarily* fixed on ardour's end by requiring
> libfftw3-dev (>= 3.3.5) as a b-dep no?

No, changing the build-dependencies has no effect on the runtime
dependencies (well for the majority of packages at least).

The temporary fix would be to add a "Depends: libfftw3-single3 (>=
3.3.5)" to ardour, but that won't fix anyone else who wants to use
features from 3.3.5.

>> >> fftw3 maintainers: to fix this you either need to provide a symbols
>> >> file, or pass a suitable -V option to dh_makeshlibs so the shlibs file
>> >> contains a stricter dependency.
>> >
>> > Please be more explicit about the expected outcome (i.e. the stricter
>> > dependency you keep mentioning).
>>
>> Please read policy 8.6 which describes most of this more fully.
>>
>> The goal is for dpkg-shlibdeps to generate a dependency like
>> "libfftw3-single3 (>= 3.3.5)" for any package which uses
>> fftwf_make_planner_thread_safe. This is needed otherwise you may get a
>> linker error like ardour does, and it's is done by using the symbols or
>> shlibs systems as described in policy 8.6.
> 
> I am personally not familiar with the symbols stuff, so it would be up
> to somewhat from the team or yourself to provide a patch for this issue.

This is my attempt at fixing it the shlibs way (completely untested
however). A symbols file would be a lot more work but with more accurate
dependencies.

diff -ur a/debian/rules b/debian/rules
--- a/debian/rules	2016-10-03 17:12:31.000000000 +0100
+++ b/debian/rules	2017-01-05 17:35:18.123168915 +0000
@@ -168,7 +168,11 @@
 	dh_strip --dbg-package=libfftw3-dbg -a
 	dh_compress -a
 	dh_fixperms -a
-	dh_makeshlibs -a
+	dh_makeshlibs -plibfftw3-single3 -V'libfftw3-single3 (>= 3.3.5)'
+	dh_makeshlibs -plibfftw3-double3 -V'libfftw3-double3 (>= 3.3.5)'
+	dh_makeshlibs -plibfftw3-long3 -V'libfftw3-long3 (>= 3.3.5)'
+	dh_makeshlibs -plibfftw3-quad3 -V'libfftw3-quad3 (>= 3.3.5)'
+	dh_makeshlibs -a --remaining-packages
 	dh_installdeb -a
 	dh_shlibdeps -a
 	dh_gencontrol -a

Thanks,
James

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <http://lists.alioth.debian.org/pipermail/debian-science-maintainers/attachments/20170105/d30d0f3e/attachment.sig>


More information about the debian-science-maintainers mailing list