WineHQ

Multiarch: Difference between revisions

(Update for Debian Buster)
(Minor update)
Line 1: Line 1:
__NOTOC__
__NOTOC__
== What is Multiarch? ==
== What is Multiarch? ==
In order to ease cross-compiling and distribution, the Debian-based distros have undertaken a project known as "multi-arch." The idea is to update the packaged software itself, and occasionally change how it's built, so that every package can satisfy multiple architectures. Either one version of the package will work for all architectures, or the different architectures' versions can be installed alongside each other.
In order to ease cross-compiling and distribution, the Debian-based distros have undertaken a project known as "multi-arch". The idea is to update the packaged software itself, and occasionally change how it's built, so that every package can satisfy multiple architectures. Either one version of the package will work for all architectures, or the different architectures' versions can be installed alongside each other.


To be fully compliant, a package not only needs to play well with different architectures, but explicitly state how it operates in a multi-arch environment. This is implemented through values in the control file of each source package, which are then enforced by the distro's package management.
To be fully compliant, a package not only needs to play well with different architectures, but explicitly state how it operates in a multi-arch environment. This is implemented through values in the control file of each source package, which are then enforced by the distro's package management.

Revision as of 13:46, 18 July 2019

What is Multiarch?

In order to ease cross-compiling and distribution, the Debian-based distros have undertaken a project known as "multi-arch". The idea is to update the packaged software itself, and occasionally change how it's built, so that every package can satisfy multiple architectures. Either one version of the package will work for all architectures, or the different architectures' versions can be installed alongside each other.

To be fully compliant, a package not only needs to play well with different architectures, but explicitly state how it operates in a multi-arch environment. This is implemented through values in the control file of each source package, which are then enforced by the distro's package management.

While there are general guidelines, each package has its own dynamic so making it multi-arch compatible is largely up to that package's maintainer. As a result, multi-arch is still a work in progress, and the distros prioritize which packages they focus on.

According to documents from ca. 2013, multi-arch behavior for header-files (common in -dev packages) was undefined. Since then, the Debian-family distros have settled on using subdirectories for multi-arch triplets within /usr/include/. Note that this extension is not yet part of the Filesystem Hierarchy Standard.

Status of Wine Build Dependencies

Perhaps the main (but not only) way this matters to Wine is in regards to building and porting. Once all of Wine's build dependencies are multi-arch compatible, cross-compiling and packaging Wine for different architectures becomes much simpler.

As of July 2019, building Wine 4.12.1 on Debian Buster shows the following build dependencies still conflicting across architectures (version info may be different for Ubuntu, Mint, etc.)

Debian Package Stable Version Unstable Version Apt-get Result Debian Bug Report Patch Proposed? Fixed in Buster? Notes
libsdl2-dev 2.0.9+dfsg1-1 2.0.9+dfsg1-1 Conflicts across architectures
libxml-parser-perl 2.44-4 2.44-4 Requires dependencies Requires perl and perl-base to resolve. Unlikely to be resolved.

See Also

Some of these pages might be out of date, but they're still good places to start:

This page was last edited on 18 July 2019, at 13:46.