Request for discussion: Using PE libraries for Wine dependencies
Zebediah Figura
z.figura12 at gmail.com
Mon Apr 13 10:02:58 CDT 2020
On 4/13/20 3:01 AM, Rémi Bernon wrote:
> On 4/13/20 4:13 AM, Zebediah Figura wrote:
>> On 4/12/20 8:56 PM, Esme (they/them) wrote:
>>>> I guess it's not obvious to me there's a difference between "builtin"
>>>> and "distro" (though we'd presumably not go putting the Wine builtin
>>>> flag in mingw libraries). But yeah, I guess we'd want to vary load
>>>> order
>>>> depending on whether the library is a dependency of a PE builtin or
>>>> not,
>>>> in some way.
>>>
>>> I was thinking about the possibility of a distro shipping a dll that's
>>> also a Wine builtin. But, we could probably resolve that case by
>>> saying "builtin" searches for wine builtins before distro libraries.
>>>
>>> I guess we'd want the load order to be something like:
>>> * If explicitly set in registry or environment, use that.
>>> * If Wine builtin, use preattach.
>>> * If dependency of Wine builtin that exists in distro search path,
>>> builtin,native.
>>> * If dependency of a dll in distro search path (but not a Wine
>>> builtin), builtin,native.
>>> * Otherwise, native,builtin or maybe even native only (should Wine
>>> ever use a distro library to resolve dependencies of the
>>> application?).
>>>
>>
>> This last one is a good question. Would we necessarily expect an
>> application-provided PE library to differ from a distro mingw library?
>> (Maybe because of a lack of backwards compatibility?) To a degree it
>> feels much like preferring builtin d3dx9 when the application provides
>> its own.
>>
>> It also kind of ties into bugs like 14980, 20777, 25373, 43472, 45551,
>> 47053, 47120, 48275 where preferring builtin DLLs break applications.
>> I recall that always preferring native breaks other applications,
>> though I don't know any concrete examples... but since I have yet to
>> hear a solution to this problem, I have to wonder if it would be
>> better in general to use native,builtin for all direct dependencies of
>> native DLLs.
>>
>> (Presumably we'd want native,builtin rather than native only in any
>> case. The number of cases where applications import DLLs but don't
>> ship them is pretty small, in my experience? Though that doesn't
>> include dynamically loading...)
>>
>
> I think it's a bit risky to assume that application provided DLL aren't
> going to collide with Wine dependencies expectations. As long as it's
> Windows DLL breakage, we can imagine that it's Wine's job to make it
> work, but third party DLLs is another story.
>
> I think the idea of having Wine's internal dependencies isolated and not
> used for external dependencies resolution is a good thing. It's like the
> host dependencies -although they are provided by distributions- they
> stay invisible from the PE world.
Sure, I can see why it's reasonable to always use builtin DLLs for
dependencies of Wine builtins, and I'm not suggesting anything different...
>
> So I think that although it could be seen as the architecturally
> "correct" approach, relying on distributions -or redistributed packages-
> to provide pristine PE versions of the dependencies is not going to work
> out.
...but I don't see how that implies that we can't use this approach for
building and distributing them. Frankly, I can't see how it applies any
approach. It does mean we have to do a bit of work to tweak the loader
if we don't just statically link everything, but I don't think it'd end
up being very much work.
>
> Linux distributions already have quite a hard time factoring the
> dependencies and keeping all the Linux software working together nicely,
> and I think that doing the same for Windows software that was never
> written with such a setup in the first place -every application ships
> its with own dependencies isolated from the others- may be more painful
> than expected.
I'm not sure I understand: we wouldn't be managing dependencies for
Windows software any more than we already are; we'd only be managing
dependencies for Wine itself.l
>
> Cheers,
More information about the wine-devel
mailing list