RFC: XINE and plugins without Depends cause hangs due to a bug
(question for d-d in the last paragraph)
libxine1 ships lots of plugins; if one allows dh_shlibdeps run over
all of them, one gets a pretty big Depends line (though *not*
unbearable in a desktop, IMHO). To avoid this, the maintainer lowers
some of these dependencies to Recommends or Suggests by using
dpkg-shlibdeps -d (on the less common plugins, I imagine). [But the
script doing this has a bug which makes it non-functional, #328184.]
TTBOMK, this works to some extent because xine generates a list of
available plugins in ~/.xine/catalog.cache; if when generating such
list, a plugin fails to load, it is not added to the list.
But imagine this scenario: when running xine for the first time, libX,
which is NEEDED by pluginX, is installed --> pluginX gets listed as
available. After a while, the user removes libX because no package
depends on it. Ideally, on successive runs xine would detect that the
plugin is no longer loadable, and remove it from the list. However,
xine _hangs_, instead of coping... amarok's #327203 is caused by this,
see e.g. #326935 too. Some weird hangup in a futex() call.
I believe the "not coping" above is a xine bug, but one that I have no
time, nor interest, on hunting, reporting upstream, or whatever. I
will file it in our BTS, though, by sending a copy of this mail. But
still, and in the meantime, its effects are biting our users for real.
I plan on workarounding this in a NMU by reverting to plain
dh_shlibdeps behavior until the bug described above gets fixed. For
reference, we're taking about the following dependencies:
shlibs:Depends=libasound2 (>> 1.0.9), libc6 (>= 2.3.5-1), libfreetype6 (>= 2.1.5-1), libglu1-xorg | libglu1, libmodplug0c2 (>= 1:0.7-4.1), libogg0 (>= 1.1.2), libpng12-0 (>= 1.2.8rel), libspeex1, libtheora0, libvorbis0a (>= 1.1.0), libxext6 | xlibs (>> 4.1.0), libxinerama1, xlibmesa-gl | libgl1, zlib1g (>= 1:1.2.1)
shlibs:Recommends=libmng1 (>= 1.0.3-1), libxv1
shlibs:Suggests=libaa1 (>= 1.2), libartsc0 (>= 1.4.2-1), libaudiofile0 (>= 0.2.3-4), libesd0 (>= 0.2.35) | libesd-alsa0 (>= 0.2.35), libflac7, libglib2.0-0 (>= 2.8.0), libgnomevfs2-0 (>= 2.10.0-0), libncurses5 (>= 5.4-5), libsdl1.2debian (>> 1.2.7+1.2.8), libslang2 (>= 2.0.1-1), libsmbclient (>= 3.0.2a-1), libx11-6 | xlibs (>> 4.1.0)
If somebody in -devel has objections, or can think of a better method,
please speak now.
EM: asp16 [ykwim] alu.ua.es | PK: DA6AE621
When the only tool you have is a hammer, every problem starts to look
like a nail.