include files conflict with i386 version: split dev packages

Bug #1843126 reported by efa
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
libsdl1.2 (Debian)
Fix Released
Unknown
libsdl1.2 (Ubuntu)
Triaged
Wishlist
Unassigned

Bug Description

I discovered this with libsdl1.2-dev, but apply to many other -dev packages.
Details:
Dev packages mainly deliver:
0) /usr/bin/* # optional library tool
1) /usr/include/*.h # headers files
2) /usr/lib/x86_64-linux-gnu/lib*.a # the compile time library itself
3) /usr/lib/x86_64-linux-gnu/lib*.so # the run time library itself
4) /usr/lib/x86_64-linux-gnu/pkgconfig/*.pc #pkg-config file
5) /usr/share/aclocal # other tools and manual files
   /usr/share/doc-base
   /usr/share/man
The i386 version deliver the library and pkg-config in /usr/lib/i386-linux-gnu

Many packages and its corresponding i386 packages are marked conflict each other, as both contain the same include, tools and manual files. This forbid install both packages at the same time, and so it is impossible generate for both target 64 and 32 bit.

As the .a compile library itself for 64 and 32 bit are installed in different paths, make sense split dev packages in three packages:
A) common part to both 32 and 64 bit
B) compile time library for 64 bit
C) compile time library for 32 bit
this let install any combination of packages and generate for both 32 and 64 bit at the same time.
I tryed to manually copy .a files in the right place and both generation work

ProblemType: Bug
DistroRelease: Ubuntu 18.04
Package: libsdl1.2-dev:i386 (not installed)
ProcVersionSignature: Ubuntu 5.0.0-27.28~18.04.1-generic 5.0.21
Uname: Linux 5.0.0-27-generic x86_64
ApportVersion: 2.20.9-0ubuntu7.7
Architecture: amd64
CurrentDesktop: MATE
Date: Sat Sep 7 15:10:16 2019
InstallationDate: Installed on 2016-12-01 (1010 days ago)
InstallationMedia: Ubuntu 16.04.1 LTS "Xenial Xerus" - Release amd64 (20160719)
SourcePackage: libsdl1.2
UpgradeStatus: Upgraded to bionic on 2018-09-23 (348 days ago)

Revision history for this message
efa (efa) wrote :
Changed in libsdl1.2 (Ubuntu):
status: New → Confirmed
importance: Undecided → Wishlist
Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

Hi Efa,
I have triaged this bug yesterday but wanted to add some words to explain.

What you ask for to me seems like you want more multiarch [1] implemented in libsdl (and others).
That is in itself no bad request, but there are a few constraints to that.

- The release target surely would be a future release (you filed that bug against bionic, and I'd
  want in no way set wrong expectations). Even if things are changed that will only happen in
  a future release as it would not qualify for an SRU.
- for the particular case - libsdl1.2 was dropped out of main (as there is libsdl2, but more so
  things migrated away from sdl to gtk). Therefore I doubt this gets ever very important for
  Ubuntu overall.
- For changes like that it is highly unlikely that we derive from Debian as the maintenance of
  this as a delta is a lot of effort. We usually would implement and submit it to Debian (if it
  is important to Ubuntu) or just ask Debian what they think about it (so that they can implement
  it if they want). So on this case you might file a bug in Debian and let us know about the bug
  number for tracking.

I can see that this case in general (not for libsdl in particular) becomes slightly more important with the dropping of i386 installation media. But in many cases instead of multiarch for combined 32/64 usage on one machine I have seen containers (e.g. [3]) as the superior solution. While multiarch is nice, containers let you run all on the same machine with the benefit of both environments not affecting each other in any way.

P.S. I have subscribed Steve in case he wants to share any of his much deeper multiarch knowledge to this case.

[1]: https://wiki.debian.org/Multiarch/Implementation
[2]: https://wiki.ubuntu.com/StableReleaseUpdates
[3]: https://stgraber.org/2016/03/11/lxd-2-0-blog-post-series-012/

Revision history for this message
efa (efa) wrote : Re: [Bug 1843126] Re: include files conflict with i386 version: split dev packages

On 09/10/19 07:39, Christian Ehrhardt  wrote:
> So on this case you might file a bug in Debian and let us know about the bug
> number for tracking

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=939666

--
Valerio

Revision history for this message
Steve Langasek (vorlon) wrote :

I don't have anything to add. Multiarch has been around for a long time now, and the fact that no one considered it a priority to make libsdl1.2 multiarch: same before now is an indication that there's not much demand for it on this library. It's not part of a compatibility stack needed for closed-source 32-bit applications, and it's superseded by libsdl2 for any current applications. This should definitely be handled via Debian.

Revision history for this message
efa (efa) wrote :

thank you for link to containers, installed lxd.

I saw that also libsdl2-dev and libsdl2-dev:i386 are alternative each other.

From your answer I understand that not all -dev packages has the this trouble.
I looked as example to 'libc-dev' and 'libc-dev:i386' packages, those share the same include files, but are not marked conflict each other, and I had installed both on my system.

What is the magic difference of libraries like:
'libc-dev/libc-dev:i386'
and
'libsdl2-dev/libsdl2-dev:i386'
?
How can be distinguished the two kind?

Changed in libsdl1.2 (Debian):
status: Unknown → New
Revision history for this message
Paride Legovini (paride) wrote :

Hi, those are "multiarch" packages, see:

  https://wiki.ubuntu.com/MultiarchSpec
  https://wiki.debian.org/Multiarch/HOWTO

There was already a libsdl1.2 Debian bug on this issue:

  https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=932372

Interestingly the libsdl1.2debian package *is* 'Multi-Arch: same', while the -dev packages is not. The same goes for libsdl2. According to this libsdl2 bug:

  https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=909740

the Multi-Arch support has been removed on purpose to avoid this other issue:

  https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=909778

I didn't dig deeper, but this is definitely more complicated than adding a Multi-Arch line to the d/control file. For updates in this issue I'd suggest you to follow the Debian bug #909740.

Changed in libsdl1.2 (Debian):
status: New → Unknown
Paride Legovini (paride)
Changed in libsdl1.2 (Ubuntu):
status: Confirmed → Triaged
Changed in libsdl1.2 (Debian):
status: Unknown → New
Changed in libsdl1.2 (Debian):
status: New → Confirmed
Revision history for this message
efa (efa) wrote :

I'm on Debian 11 now, here libsdl1.2-dev and libsdl2-dev are multiarch, so I can compile both 64bit and 32 bit app with a single config, work like a charm, no hard disk space wasted like with containers, another world.

Revision history for this message
Paride Legovini (paride) wrote :

The libsdl1.2-dev in bullseye is 1.2.15+dfsg2-6, and libsdl1.2-dev built from has no Multi-Arch specification (= Multi-Arch: no), see

https://sources.debian.org/src/libsdl1.2/1.2.15%2Bdfsg2-6/debian/control/

Same for the version currently in git:

https://salsa.debian.org/sdl-team/libsdl1.2/-/blob/dae0962f56fd93878ecbd7ad0648264933c8235e/debian/control

In general Ubuntu's src:libsdl1.2 is up to date wrt Debian.

OTOH libsdl2-dev is Multi-Arch: same, and was already so in Bionic.

Changed in libsdl1.2 (Debian):
status: Confirmed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.