Bug#755846: libroar2: no multiarch possible

Simon McVittie smcv at debian.org
Fri Jul 25 08:47:48 UTC 2014


affects 755846 libopenal1
thanks

On Thu, 24 Jul 2014 at 19:26:27 +0200, Patrick Matthäi wrote:
> Am 24.07.2014 um 12:14 schrieb Philipp Schafft:
> > upstream speaking,

I think this is a bug in the way OpenAL and/or roaraudio is packaged in
Debian, not in upstream code, so there isn't a great deal of relevance
for upstream here.

> I will have a look in the next days if it is possible with the current
> upstream code base.

I think the most appropriate answer would be for libopenal1 to either drop
the libroar-compat2 dependency again, or turn it into a dynamically-loaded
plugin that can be dropped to Suggests (like its dependency
on libportaudio2). I would say "... or Recommends, like libpulse0",
but according to popcon, roaraudio is several orders of magnitude
less widely used than pulseaudio, and only 0.45% of libroar-compat2
installations actually have roaraudio installed.

Looking into libopenal1 in more detail, it doesn't actually have a
backend to support roaraudio: what it supports is (among other things)
libsndio, which as far as I can tell is the OpenBSD audio API.
In OpenAL 1.14 this *was* dlopened, but in 1.15 it was changed
upstream to use ordinary library linking. That makes perfect sense
if you're on OpenBSD and libsndio is "the" audio API, but doesn't really
make sense on Debian where "sndio" is really roaraudio.

OpenAL maintainers, please consider reverting the sndio backend to use
dlopen like 1.14 did, or dropping roaraudio-via-fake-sndio support
until/unless someone provides an actual roaraudio backend analogous
to the pulseaudio backend. A real roaraudio backend would make configuration
make more sense, too: it seems more reasonable to enable roaraudio via
"drivers=roaraudio" than to use "drivers=sndio" and rely on knowing that
sndio is really roaraudio.

I notice this isn't the first time libopenal1 has had an undesirable
dependency chain from libroar-compat2: #673178.

Looking at the multiarch situation anyway, for completeness:

The libraries in libroar-compat2, which are all that OpenAL actually
needs right now, look superficially OK for marking as multiarch. However,
libroar-compat2 also contains /usr/bin/roarify which differs between
architectures (it contains absolute paths to libroar.so.2, libroaross.so.2,
/usr/lib/x86_64-linux-gnu/roaraudio/complibs, etc.).

If libroar-compat2 is meant to be for manual use, more like aoss, pulsedsp,
socksify etc., then nothing should be normal-library-linked to it.
I notice that OpenAL seems to be the only thing using its libsndio,
and the fact that it provides libsndio at all seems like an abuse of
the fact that (a) OpenAL happens to have a libsndio backend, and (b)
Debian happens to not have the real libsndio.

On the other hand, if the intention is that other packages should be
able to depend on the fake libsndio like libopenal1 does, I would suggest
either:

- generating a real libsndio2 package and having libopenal1 use that; or
- making roarify a separate package that is Architecture:any, not multiarch,
  and depends on libroar-compat2 of the same architecture.

Further down the stack, libroar-compat2 depends on libroar2. libroar2 also
looks OK for multiarch: it only contains architecture-prefixed libraries.

However, libroar2 depends on libdnet (#755934, etc.) which is not ready for
multiarch: it contains /usr/lib/librms.so.2 which you will notice is not
architecture-prefixed; so making libroar-compat2 and libroar2 multiarch
while libdnet is used would just move this bug a couple of steps down the
stack, to "I can't install both libdnet:i386 and libdnet:amd64".

The rest of the libraries that libroar2 depends on are already multiarch.

    S



More information about the Pkg-games-devel mailing list