[RFC PATCH 0/5] XAudio PE conversion.
Zebediah Figura
zfigura at codeweavers.com
Thu Sep 16 01:32:07 CDT 2021
On 8/31/21 2:30 PM, Alexandre Julliard wrote:
> "Zebediah Figura (she/her)" <zfigura at codeweavers.com> writes:
>
>> On 8/31/21 1:25 PM, Alexandre Julliard wrote:
>>> "Zebediah Figura (she/her)" <zfigura at codeweavers.com> writes:
>>>
>>>> (3) Most importantly, I would like to coöperate with distributions. As
>>>> I understand, they already don't like the way we distribute wine-mono
>>>> and wine-gecko, and I don't think we should annoy them any further by
>>>> going behind their back and distributing more pre-built libraries.
>>>>
>>>> I know people here think that they won't want to distribute PE
>>>> libraries, but I'm inclined to think that at least some distributions
>>>> won't be happy with our proposed solution either. See [1] [2] [3] [4]
>>>> for popular distributions trying to discourage source imports and
>>>> static libraries. I get that we're a special case, and maybe
>>>> distributions will think so too, but I really want to again argue that
>>>> we shouldn't be making that decision for them.
>>> Have you tried asking them?
>>
>> I haven't yet. I didn't really want to speak on behalf of the Wine
>> project if the consensus was against consulting them, and I didn't
>> want to start that conversation without the possibility that its
>> fruits would at least be taken into account. But if there are no
>> objections I'll start writing some mails.
>
> I don't see any harm in asking. I'll admit that I'm fairly skeptical, so
> it will be up to you to build a convincing case. Getting the buy-in of
> the major distros is obviously a required step.
I've spent the last couple of weeks asking Fedora [1], Debian [2],
openSUSE [3], and Arch (private conversation with the maintainer). There
is, perhaps unfortunately, a unanimous consensus among these that they
would indeed like to see us use their packages, and to link dynamically
rather than statically.
Fedora ships about half of the libraries we need already; Debian ships
only one (if you even count zlib), Arch ships none. But representatives
from all of these offered to add the missing ones.
Fedora, openSUSE, and Debian all have a MinGW version of pkg-config,
which can be used to find include and library paths for the relevant
libraries. Arch doesn't have it, but the AUR does; I think it's a clear
enough standard to standardize on.
We don't however have a standardized way to find libraries which don't
have pkg-config support (which I think only ends up being gsm?) We also
don't have a standardized way to find the runtime path.
(As to the question of why these packages exist in the first place: the
uses that people mentioned seem to be mostly about cross-compiling
software for Windows on a Linux host. openSUSE also mentioned that some
of its packages are used by the WSL loader. In general there appears to
be some demand for them, but they're also not currently a very high
priority. For example, Debian has had an open bug [4], with a decent
amount of discussion, regarding adding mingw support to multiarch
instead of its current none-arch solution. But being used by Wine would
certainly change things.)
I brought up the problem of dynamic library conflicts in the above
discussions; the response was universally along the lines of "we'd
really prefer it if you could use dynamic libraries", accompanied by
proposals to work around it on the Wine side. It's not particularly
surprising that distributions would want this; after all, it means less
work for them (and more for us), but personally I'm inclined to believe
it makes sense, and it's worth pursuing if it's at all possible.
So in short, the assumption that distributions don't want to deal with
our nonsense doesn't seem to hold. For better or for worse.
With that in mind, I believe we will still want some way of building
that does *not* rely on distribution packages—in case one is building
from source on a system that doesn't provide any, and doesn't want to
build them manually.
And given that Fedora and Debian currently package some, but not all, of
the libraries we need, we should ideally also be able to use what
distribution packages are available and fall back to static libraries
for the others.
So I think we do want something like Rémi's solution, but on top of that
I'd like to propose that we allow for using pre-built dynamic libraries
where available.
I have attached a set of 3 patches to this mail that should give a very
rough idea of what this would look like. It comprises an implementation
of my proposed rudimentary "namespacing" in the loader, and the
configure bits to look for and use MinGW zlib. The namespacing seems to
work, after some basic tests. (dbghelp is kind of broken, because it
doesn't handle multiple identically named libraries, but that needs to
be fixed anyway.) The runtime dynamic library path is specified via a
configure variable.
This doesn't include the mentioned fallback mechanism (or apply on top
of Rémi's patches at all), mostly because it's not clear to me how close
to the eventual upstream Rémi's patches are.
And yes, it's possible that an application breaks for the simple reason
that we're using dynamic libraries it doesn't expect. The best I can
offer is that usually when applications trawl the loader state, they're
looking for things like ntdll and kernel32, and also that SxS exists and
so it's not unheard of to see multiple identically named libraries
anyway. If nothing else I'd like to argue that the risk of breaking, at
this point, is low enough that it's worth at least trying. If we have a
fallback mechanism, plus the ability to bisect, it'll be easy enough to
diagnose failure anyway.
Sorry for being overly verbose in the above, I wanted to accurately
summarize the discussion and make sure all points had been touched on.
ἔρρωσθε,
Zebediah
[1]
https://lists.fedoraproject.org/archives/list/[email protected]/thread/SL4IPD2VBMJ2XVGXRYFPDXZIC4YIYPWY/
[2] https://lists.debian.org/debian-devel/2021/09/msg00074.html
[3]
https://lists.opensuse.org/archives/list/[email protected]/thread/AFJJB3GDL3ZSQNRRAIJYQEHMMPELHUUS/
[4] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=606825
-------------- next part --------------
A non-text attachment was scrubbed...
Name: system-libraries.mbox
Type: application/mbox
Size: 156262 bytes
Desc: not available
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20210916/6af173e4/attachment-0001.mbox>
More information about the wine-devel
mailing list