(Strike out two more bugs which are fixed) |
(Update the build dependencies table for 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 | As of August 2017, building Wine 2.14 on Debian Stretch shows the following build dependencies still conflicting across architectures (version info may be different for Ubuntu, Mint, etc.) | ||
{| class="wikitable sortable" | {| class="wikitable sortable" | ||
Line 21: | Line 19: | ||
! Apt-get Result | ! Apt-get Result | ||
! Debian Bug Report | ! Debian Bug Report | ||
! Patch Proposed? !! Fixed in Stretch? | ! Patch Proposed? !! Fixed in Stretch? !! Fixed in Buster? | ||
! Notes | ! Notes | ||
|- | |- | ||
| libxml-simple-perl || 2. | | libxml-simple-perl || 2.22-1 || 2.24-1 | ||
| Package couldn't be found | | Package couldn't be found | ||
| | | <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 | | Outdated, only used once in ''dlls/opengl32/make_opengl''; consider move to '''libxml-libxml-simple-perl'''... or rewrite ''make_opengl'' for new tools | ||
|- | |- | ||
Line 33: | Line 31: | ||
| Package couldn't be found | | Package couldn't be found | ||
| | | | ||
| || | | || || | ||
| Necessary for OSS sound-driver support in | | Necessary for OSS sound-driver support in Wine. Replaced by ALSA. | ||
|- | |- | ||
| khronos-api || 0~ | | khronos-api || 0~svn29735-1.1 || 0~svn33340-0.1 | ||
| Package couldn't be found | | 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'' | | Supersedes parts of ''dlls/opengl32/make_opengl'' | ||
|- | |- | ||
| libpcap-dev || 1. | | libpcap-dev || 1.8.1-3 || 1.8.1-3 | ||
| Package couldn't be found | | Package couldn't be found | ||
| | | [https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=760370 #760370] | ||
| {{Check}} || | | {{Check}} || || | ||
| Transitional package; pulls in '''libpcap0.8-dev''' (not yet multi-arch) | | Transitional package; pulls in '''libpcap0.8-dev''' (not yet multi-arch) | ||
|- | |- | ||
Line 51: | Line 49: | ||
| Satisfies dependencies, but won't be installed | | Satisfies dependencies, but won't be installed | ||
| | | | ||
| || | | || || | ||
| Needed by '''libgstreamer1.0-dev'''; see #[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=755874 755874] about multiarch in '''gobject-introspection''' | | Needed by '''libgstreamer1.0-dev'''; see #[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=755874 755874] about multiarch in '''gobject-introspection''' | ||
|- | |- | ||
Line 57: | Line 55: | ||
| Other arch will be removed | | Other arch will be removed | ||
| N/A | | N/A | ||
| N/A || {{Check}} | | N/A || {{Check}} || N/A | ||
| Depends on '''libglu1-mesa-dev''' | | Depends on '''libglu1-mesa-dev''' | ||
|- | |- | ||
Line 63: | Line 61: | ||
| Other arch will be removed | | Other arch will be removed | ||
| #[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=689124 689124] | | #[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=689124 689124] | ||
| {{Check}} || | | {{Check}} || || | ||
| Also depends on '''libglib2.0-dev''' | | Also depends on '''libglib2.0-dev''' | ||
|- | |- | ||
Line 69: | Line 67: | ||
| Other arch will be removed | | Other arch will be removed | ||
| | | | ||
| || | | || || | ||
| | | | ||
|- | |- | ||
Line 75: | Line 73: | ||
| Other arch will be removed | | Other arch will be removed | ||
| | | | ||
| || | | || || | ||
| | | | ||
|- | |- | ||
Line 81: | Line 79: | ||
| Other arch will be removed | | Other arch will be removed | ||
| #[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=689122 689122] | | #[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=689122 689122] | ||
| {{Check}} || | | {{Check}} || || | ||
| Also has deps on '''libfontconfig1-dev''', '''libfreetype6-dev''', & '''libglib2.0-dev''' | | Also has deps on '''libfontconfig1-dev''', '''libfreetype6-dev''', & '''libglib2.0-dev''' | ||
|- | |- | ||
| libfreetype6-dev || 2. | | libfreetype6-dev || 2.6.3-3.2 || 2.8-0.2 | ||
| Other arch will be removed | | Other arch will be removed | ||
| #[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug= | | #[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=642354 642354] | ||
| || | | || || | ||
| See | | See also #[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=870618 870618] | ||
|- | |- | ||
| libfontconfig1-dev || 2.11.0-6.3 || 2.11.0-6.3 | | libfontconfig1-dev || 2.11.0-6.3 || 2.11.0-6.3 | ||
| Other arch will be removed | | Other arch will be removed | ||
| <strike> #[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=677885 677885] </strike> | | <strike> #[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=677885 677885] </strike> | ||
| {{Check}} || Partially | | {{Check}} || Partially || | ||
| Marked as ''Multi-Arch: same''; conflict due to dep on '''libfreetype6-dev''' | | Marked as ''Multi-Arch: same''; conflict due to dep on '''libfreetype6-dev''' | ||
|- | |- | ||
Line 99: | Line 97: | ||
| Other arch will be removed | | Other arch will be removed | ||
| #[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=689125 689125] | | #[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=689125 689125] | ||
| || | | || || | ||
| Reply to report implies '''gobject-introspection''' had priority... but see report #[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=755874 755874] for recent resolution; also needs '''libglib2.0-dev''' resolved | | Reply to report implies '''gobject-introspection''' had priority... but see report #[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=755874 755874] for recent resolution; also needs '''libglib2.0-dev''' resolved | ||
|- | |- | ||
Line 105: | Line 103: | ||
| Other arch will be removed | | Other arch will be removed | ||
| <strike> #[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=801672 801672] </strike> | | <strike> #[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=801672 801672] </strike> | ||
| || | | || || | ||
| Again, see #[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=755874 755874]; also needs multiarch in '''libglib2.0-dev''' to resolve | | Again, see #[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=755874 755874]; also needs multiarch in '''libglib2.0-dev''' to resolve | ||
|- | |- | ||
Line 111: | Line 109: | ||
| Other arch will be removed | | Other arch will be removed | ||
| #[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=683593 683593] | | #[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=683593 683593] | ||
| {{Check}} || | | {{Check}} || || | ||
| Also see merged bug report #[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=648621 648621] | | Also see merged bug report #[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=648621 648621] | ||
|- | |- | ||
Line 117: | Line 115: | ||
| Other arch will be removed | | Other arch will be removed | ||
| <strike> #[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=689089 689089] </strike> | | <strike> #[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=689089 689089] </strike> | ||
| {{Check}} || {{Check}} | | {{Check}} || {{Check}} || N/A | ||
| | | | ||
|- | |- | ||
Line 123: | Line 121: | ||
| Other arch will be removed | | Other arch will be removed | ||
| <strike> #[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=776841 776841] </strike> | | <strike> #[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=776841 776841] </strike> | ||
| {{Check}} || {{Check}} | | {{Check}} || {{Check}} || | ||
| Package already has ''Multi-Arch: same''; conflict a side-effect of deps on '''libp11-kit-dev''', '''libtasn1-6-dev''', & '''nettle-dev''' | | Package already has ''Multi-Arch: same''; conflict a side-effect of deps on '''libp11-kit-dev''', '''libtasn1-6-dev''', & '''nettle-dev''' | ||
|- | |- | ||
Line 129: | Line 127: | ||
| Other arch will be removed | | Other arch will be removed | ||
| | | | ||
| || | | || || | ||
| Will also need multiarch in '''libglib2.0-dev''' & '''gir1.2-gstreamer-1.0''' to resolve conflict | | Will also need multiarch in '''libglib2.0-dev''' & '''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 | |||
| | |||
| || || | |||
| Will also need multiarch in '''libgstreamer1.0-dev''', '''libglib2.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 | | libgtk2.0-dev || 2.24.25-3 || 2.24.29-1 | ||
| Other arch will be removed | | Other arch will be removed | ||
| #[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=689097 689097] | | #[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=689097 689097] | ||
| Partially || | | Partially || || | ||
| Several dependencies need multiarch to resolve conflict | | Several dependencies need multiarch to resolve conflict | ||
|- | |- | ||
Line 141: | Line 145: | ||
| Other arch will be removed | | Other arch will be removed | ||
| <strike> #[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=783700 783700] </strike> | | <strike> #[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=783700 783700] </strike> | ||
| {{Check}} || {{Check}} | | {{Check}} || {{Check}} || N/A | ||
| | | | ||
|- | |- | ||
Line 147: | Line 151: | ||
| Other arch will be removed | | Other arch will be removed | ||
| #[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=683592 683592] | | #[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=683592 683592] | ||
| || | | || || | ||
| See report #[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=763851 763851] for blocking files | | See report #[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=763851 763851] for blocking files | ||
|- | |- | ||
| libpulse-dev || | | libpulse-dev || 10.0-1+deb9u1 || 10.0-2 | ||
| Other arch will be removed | | Other arch will be removed | ||
| N/A | | N/A | ||
| N/A || Partially | | N/A || Partially || | ||
| Already marked ''Multi-Arch: same''; needs multiarch in '''libglib2.0-dev''' to resolve | | Already marked ''Multi-Arch: same''; needs multiarch in '''libglib2.0-dev''' to resolve | ||
|- | |- | ||
Line 159: | Line 163: | ||
| Other arch will be removed | | Other arch will be removed | ||
| N/A | | N/A | ||
| N/A || {{Check}} | | N/A || {{Check}} || N/A | ||
| | | | ||
|- | |- | ||
Line 165: | Line 169: | ||
| Other arch will be removed | | Other arch will be removed | ||
| #[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=689082 689082] | | #[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=689082 689082] | ||
| {{Check}} || | | {{Check}} || || | ||
| | | | ||
|- | |- | ||
Line 171: | Line 175: | ||
| Other arch will be removed | | Other arch will be removed | ||
| | | | ||
| || | | || || | ||
| Will also need multiarch in '''libfreetype6-dev''' to resolve | | Will also need multiarch in '''libfreetype6-dev''' to resolve | ||
|- | |- | ||
Line 177: | Line 181: | ||
| Other arch will be removed | | Other arch will be removed | ||
| <strike> #[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=689068 689068] </strike> | | <strike> #[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=689068 689068] </strike> | ||
| {{Check}} || | | {{Check}} || || | ||
| | |||
|- | |||
| libxml-parser-perl || 2.44-2 || 2.44-2 | |||
| Requires dependencies | |||
| | |||
| || || | |||
| Requires '''perl''' and '''perl-base''' to resolve. | |||
|- | |||
| libxml2-dev || 2.9.4+dfsg1-2.2 || 2.9.4+dfsg1-3 | |||
| Other arch will be removed | |||
| | | | ||
| || || | |||
| Requires '''libicu-dev''' to resolve. | |||
|- | |||
| libxslt1-dev || 1.1.29-2.1 || 1.1.29-2.1 | |||
| Other arch will be removed | |||
| | |||
| || || | |||
| Already marked ''Multi-Arch: same''; requires '''libxml2-dev''' to resolve. | |||
|- | |- | ||
| nettle-dev || 2.7.1-5 || 3.2-1 | | nettle-dev || 2.7.1-5 || 3.2-1 | ||
| Other arch will be removed | | Other arch will be removed | ||
| <strike> #[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=783699 783699] </strike> | | <strike> #[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=783699 783699] </strike> | ||
| {{Check}} || {{Check}} | | {{Check}} || {{Check}} || N/A | ||
| | | | ||
|- | |- | ||
Line 189: | Line 211: | ||
| Other arch will be removed | | Other arch will be removed | ||
| | | | ||
| || | | || || | ||
| | | | ||
|} | |} |
Revision as of 06:06, 9 August 2017
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 August 2017, building Wine 2.14 on Debian Stretch 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 Stretch? | Fixed in Buster? | Notes |
---|---|---|---|---|---|---|---|---|
libxml-simple-perl | 2.22-1 | 2.24-1 | Package couldn't be found | ✔ | ✔ | 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 | Package couldn't be found | ✔ | ✔ | Supersedes parts of dlls/opengl32/make_opengl | ||
libpcap-dev | 1.8.1-3 | 1.8.1-3 | Package couldn't be found | #760370 | ✔ | Transitional package; pulls in libpcap0.8-dev (not yet multi-arch) | ||
gir1.2-gstreamer-1.0 | 1.4.4-2 | 1.6.3-1 | Satisfies dependencies, but won't be installed | Needed by libgstreamer1.0-dev; see #755874 about multiarch in gobject-introspection | ||||
freeglut3-dev | 2.8.1-2 | 2.8.1-2 | Other arch will be removed | N/A | N/A | ✔ | N/A | Depends on libglu1-mesa-dev |
libatk1.0-dev | 2.14.0-1 | 2.18.0-1 | Other arch will be removed | #689124 | ✔ | Also depends on libglib2.0-dev | ||
libavahi-client-dev | 0.6.31-5 | 0.6.32~rc+dfsg-1 | Other arch will be removed | |||||
libavahi-common-dev | 0.6.31-5 | 0.6.32~rc+dfsg-1 | Other arch will be removed | |||||
libcairo2-dev | 1.14.0-2.1 | 1.14.6-1 | Other arch will be removed | #689122 | ✔ | Also has deps on libfontconfig1-dev, libfreetype6-dev, & libglib2.0-dev | ||
libfreetype6-dev | 2.6.3-3.2 | 2.8-0.2 | Other arch will be removed | #642354 | See also #870618 | |||
libfontconfig1-dev | 2.11.0-6.3 | 2.11.0-6.3 | Other arch will be removed | ✔ | Partially | Marked as Multi-Arch: same; conflict due to dep on libfreetype6-dev | ||
libgdk-pixbuf2.0-dev | 2.31.1-2+deb8u4 | 2.32.3-1.2 | Other arch will be removed | #689125 | Reply to report implies gobject-introspection had priority... but see report #755874 for recent resolution; also needs libglib2.0-dev resolved | |||
libgirepository1.0-dev | 1.42.0-2.2 | 1.46.0-4 | Other arch will be removed | Again, see #755874; also needs multiarch in libglib2.0-dev to resolve | ||||
libglib2.0-dev | 2.42.1-1 | 2.46.2-3 | Other arch will be removed | #683593 | ✔ | Also see merged bug report #648621 | ||
libglu1-mesa-dev | 9.0.0-2 | 9.0.0-2.1 | Other arch will be removed | ✔ | ✔ | N/A | ||
libgnutls28-dev | 3.3.8-6+deb8u3 | 3.4.9-2 | Other arch will be removed | ✔ | ✔ | Package already has Multi-Arch: same; conflict a side-effect of deps on libp11-kit-dev, libtasn1-6-dev, & nettle-dev | ||
libgstreamer1.0-dev | 1.4.4-2 | 1.6.3-1 | Other arch will be removed | Will also need multiarch in libglib2.0-dev & 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 | Will also need multiarch in libgstreamer1.0-dev, libglib2.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 | #689097 | Partially | Several dependencies need multiarch to resolve conflict | ||
libp11-kit-dev | 0.20.7-1 | 0.23.2-3 | Other arch will be removed | ✔ | ✔ | N/A | ||
libpango1.0-dev | 1.36.8-3 | 1.38.1-1 | Other arch will be removed | #683592 | See report #763851 for blocking files | |||
libpulse-dev | 10.0-1+deb9u1 | 10.0-2 | Other arch will be removed | N/A | N/A | Partially | Already marked Multi-Arch: same; needs multiarch in libglib2.0-dev to resolve | |
libtasn1-6-dev | 4.2-3+deb8u1 | 4.7-3 | Other arch will be removed | N/A | N/A | ✔ | N/A | |
libxcomposite-dev | 1:0.4.4-1 | 1:0.4.4-1 | Other arch will be removed | #689082 | ✔ | |||
libxft-dev | 2.3.2-1 | 2.3.2-1 | Other arch will be removed | Will also need multiarch in libfreetype6-dev to resolve | ||||
libxi-dev | 2:1.7.4-1+b2 | 2:1.7.6-1 | Other arch will be removed | ✔ | ||||
libxml-parser-perl | 2.44-2 | 2.44-2 | Requires dependencies | Requires perl and perl-base to resolve. | ||||
libxml2-dev | 2.9.4+dfsg1-2.2 | 2.9.4+dfsg1-3 | Other arch will be removed | Requires libicu-dev to resolve. | ||||
libxslt1-dev | 1.1.29-2.1 | 1.1.29-2.1 | Other arch will be removed | Already marked Multi-Arch: same; requires libxml2-dev to resolve. | ||||
nettle-dev | 2.7.1-5 | 3.2-1 | Other arch will be removed | ✔ | ✔ | N/A | ||
unixodbc-dev | 2.3.1-3 | 2.3.1-4 | Other arch will be removed |
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
Some of these pages might be out of date, but they're still good places to start:
- The MultiarchSpec on the Ubuntu Wiki
- Multiarch on the Debian Wiki
- MultiarchCross on the Ubuntu Wiki has details about how multi-arch works with -dev packages.