Difference between revisions of "Multiarch"

From WineHQ Wiki
Jump to: navigation, search
(Update build dependencies)
(Update for Debian Buster)
Line 12: Line 12:
 
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.
 
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 February 2018, building Wine 3.1 on Debian Stretch shows the following build dependencies still conflicting across architectures (version info may be different for Ubuntu, Mint, etc.)
+
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.)
  
{{Info}} Several of these packages will be fixed in Debian Buster, or only conflict because of dependencies that will be. When Debian Buster is released, we can remove them from the table.
+
{| class="wikitable"
 
+
{| class="wikitable sortable"
+
 
|-
 
|-
 
! Debian Package !! Stable Version !! Unstable Version
 
! Debian Package !! Stable Version !! Unstable Version
 
! Apt-get Result
 
! Apt-get Result
 
! Debian Bug Report
 
! Debian Bug Report
! Patch Proposed? !! Fixed in Stretch? !! Fixed in Buster?
+
! Patch Proposed? !! Fixed in Buster?
 
! Notes
 
! Notes
 
|-
 
|-
| libxml-simple-perl || 2.22-1 || 2.24-1
+
| libsdl2-dev || 2.0.9+dfsg1-1 || 2.0.9+dfsg1-1
| Package couldn't be found
+
| Conflicts across architectures
| <strike>[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=869758 #869758]</strike>
+
| {{Check}} || || {{Check}}
+
| Outdated, only used once in ''dlls/opengl32/make_opengl''; consider move to '''libxml-libxml-simple-perl'''... or rewrite ''make_opengl'' for new tools
+
|-
+
| oss4-dev || 4.2-build2010-2 || 4.2-build2010-5
+
| Package couldn't be found
+
 
|
 
|
| || ||
+
| ||
| Necessary for OSS sound-driver support in Wine. Replaced by ALSA.
+
 
|-
 
|-
| khronos-api || 0~svn29735-1.1 || 0~svn33340-0.1
+
| libxml-parser-perl || 2.44-4 || 2.44-4
| Package couldn't be found
+
| <strike>[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=865308 #865308]</strike>
+
| {{Check}} ||  || {{Check}}
+
| Supersedes parts of ''dlls/opengl32/make_opengl''
+
|-
+
| libpcap-dev || 1.8.1-3 || 1.8.1-4
+
| Package couldn't be found
+
| <strike>[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=760370 #760370]</strike>
+
| {{Check}} || || {{Check}}
+
| Transitional package; pulls in '''libpcap0.8-dev'''
+
|-
+
| gir1.2-gstreamer-1.0 || 1.4.4-2 || 1.6.3-1
+
| Satisfies dependencies, but won't be installed
+
| <strike>[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=904266 #904266]</strike>
+
| {{Check}} || || {{Check}}
+
| Needed by '''libgstreamer1.0-dev'''; see <strike>[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=755874 #755874]</strike> about multiarch in '''gobject-introspection'''
+
|-
+
| libatk1.0-dev || 2.22.0-1 || 2.24.0-1
+
| Other arch will be removed
+
| <strike>#[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=689124 689124]</strike>
+
| {{Check}} || || {{Check}}
+
| Also depends on '''libglib2.0-dev'''
+
|-
+
| libcairo2-dev || 1.14.0-2.1 || 1.14.6-1
+
| Other arch will be removed
+
| <strike>#[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=689122 689122]</strike>
+
| {{Check}} || || {{Check}}
+
| Depends on '''libfontconfig1-dev''' and '''libfreetype6-dev'''
+
|-
+
| libfreetype6-dev || 2.6.3-3.2 || 2.8-0.2
+
| Other arch will be removed
+
| <strike>#[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=642354 642354] #[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=870618 870618]</strike>
+
| {{Check}} || || {{Check}}
+
|
+
|-
+
| libfontconfig1-dev || 2.11.0-6.3 || 2.11.0-6.3
+
| Other arch will be removed
+
| <strike> #[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=677885 677885] </strike>
+
| {{Check}} || Partially || {{Check}}
+
| Marked as ''Multi-Arch: same''; conflict due to dep on '''libfreetype6-dev'''
+
|-
+
| libgdk-pixbuf2.0-dev || 2.31.1-2+deb8u4 || 2.36.5-2
+
| Other arch will be removed
+
|<strike> [https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=689125 #689125]</strike><strike> [https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=876183 #876183]</strike>
+
| {{Check}} || || {{Check}}
+
| Reply to report implies '''gobject-introspection''' had priority... but see report <strike>[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=755874 #755874]</strike> for recent resolution
+
|-
+
| libgirepository1.0-dev || 1.42.0-2.2 || 1.46.0-4
+
| Other arch will be removed
+
| <strike> #[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=801672 801672] </strike>
+
|  || ||
+
| Again, see <strike>[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=755874 #755874]</strike>; also needs multiarch in '''gobject-introspection'''
+
|-
+
| libglib2.0-dev || 2.50.3-2 || 2.53.4-3
+
| Other arch will be removed
+
| <strike>#[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=683593 683593]</strike>
+
| {{Check}} || || {{Check}}
+
| Also see merged bug report <strike>[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=648621 #648621]</strike>
+
|-
+
| libgnutls28-dev || 3.3.8-6+deb8u3 || 3.4.9-2
+
| Other arch will be removed
+
| <strike>#[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=776841 776841]</strike>
+
| {{Check}} || {{Check}} || {{Check}}
+
| Package is already marked as ''Multi-Arch: same''; requires '''nettle-dev''' and '''libidn2-dev''' to resolve
+
|-
+
| libgstreamer1.0-dev || 1.4.4-2 || 1.6.3-1
+
| Other arch will be removed
+
|<strike>[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=823307 #823307]</strike>
+
| {{Check}} || || {{Check}}
+
| Will also need multiarch in '''gir1.2-gstreamer-1.0''' to resolve conflict
+
|-
+
| libgstreamer-plugins-base1.0-dev || 1.12.2-1 || 1.12.2-1
+
| Other arch will be removed
+
| <strike>[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=862119 #862119]</strike>
+
| {{Check}} || || {{Check}}
+
| Will also need multiarch in '''libgstreamer1.0-dev''', '''libxml2-dev''' and '''gir1.2-gst-plugins-base-1.0''' to resolve the conflict.
+
|-
+
| libgtk2.0-dev || 2.24.25-3 || 2.24.29-1
+
| Other arch will be removed
+
| <strike>[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=689097 #689097]</strike>
+
| Partially || ||
+
| Requires '''libgdk-pixbuf2.0-dev''' and '''libpango1.0-dev'''
+
|-
+
| libicu-dev || 57.1-6 || 59.1-1
+
| Other arch will be removed
+
| <strike>[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=837898 #837898]</strike>
+
| || || {{Check}}
+
|
+
|-
+
| libidn2-dev || 0.16-1 || 2.0.2-5
+
| Other arch will be removed
+
| <strike>[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=872550 #872550]</strike>
+
| {{Check}} || || {{Check}}
+
|
+
|-
+
| libpango1.0-dev || 1.36.8-3 || 1.38.1-1
+
| Other arch will be removed
+
| [https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=683592 #683592]
+
|  || || {{Check}}
+
| Requres '''libgraphite2-dev''' and '''libicu-dev''' via '''libharfbuzz-dev'''
+
|-
+
| libpulse-dev || 10.0-1+deb9u1 || 10.0-2
+
| Other arch will be removed
+
| N/A
+
| N/A || Partially || {{Check}}
+
| Already marked ''Multi-Arch: same''; needs multiarch in '''libglib2.0-dev''' to resolve
+
|-
+
| liburi-perl || 1.71-1 || 1.72-1
+
| Package couldn't be found
+
| <strike>[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=872087 #872087 ] </strike>
+
| {{Check}} || || {{Check}}
+
|
+
|-
+
| libwww-perl || 6.15-1 || 6.15-2
+
| Package couldn't be found
+
| <strike>[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=872088 #872088 ] </strike>
+
| {{Check}} || || {{Check}}
+
|
+
|-
+
| libxft-dev || 2.3.2-1 || 2.3.2-1
+
| Other arch will be removed
+
| <strike>[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=884176 #884176]</strike>
+
| {{Check}} || || {{Check}}
+
| Will also need multiarch in '''libfreetype6-dev''' to resolve
+
|-
+
| libxml-parser-perl || 2.44-2 || 2.44-2
+
 
| Requires dependencies
 
| Requires dependencies
 
|  
 
|  
| || ||
+
| ||
| Requires '''perl''', '''perl-base''', '''liburi-perl''' and '''libwww-perl''' to resolve.
+
| Requires '''perl''' and '''perl-base''' to resolve. Unlikely to be resolved.
|-
+
| libxml2-dev || 2.9.4+dfsg1-2.2 || 2.9.4+dfsg1-3
+
| Other arch will be removed
+
|
+
| || || {{Check}}
+
| Requires '''libicu-dev''' to resolve.
+
|-
+
| libxslt1-dev || 1.1.29-2.1 || 1.1.29-2.1
+
| Other arch will be removed
+
| <strike>[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=834714 #834714]</strike>
+
|  || || {{Check}}
+
| Already marked ''Multi-Arch: same''; requires '''libxml2-dev''' to resolve.
+
|-
+
| nettle-dev || 3.3-1 || 3.3-2
+
| Other arch will be removed
+
| <strike>[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=856160 #856160]</strike>
+
| {{Check}} || Partially || {{Check}}
+
| Conflicts in /usr/include/nettle/version.h.
+
|-
+
| unixodbc-dev || 2.3.4-1 || 2.3.4-1
+
| Other arch will be removed
+
| <strike>[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=872411 #872411]</strike>
+
| {{Check}} || || {{Check}}
+
|
+
 
|}
 
|}
 
I determined these packages by simulating apt-get build-dep with i386 build-dependencies for the (Debian unstable) version of wine-development:
 
apt-get -s build-dep wine-development/unstable -a i386
 
 
At first, this would return an error for some package; to bypass the error, I used ''apt-get source'' to grab the package source, quickly entered a "Multi-Arch: foreign" key into the control file, then rebuilt and installed it. After repeating this for a few packages, the simulated apt-get completed. I didn't need these packages to actually work, only to install and allow apt-get to give a full build-dep list.
 
  
 
== See Also ==
 
== See Also ==

Revision as of 08:45, 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.

Tango-style info icon.svg 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

Dialog-warning.svg Some of these pages might be out of date, but they're still good places to start: