discuss-gnustep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Symlinks from Tools to Applications


From: Christopher Armstrong
Subject: Re: Symlinks from Tools to Applications
Date: Mon, 19 Mar 2007 22:26:10 +1100
User-agent: Thunderbird 1.5.0.7 (Windows/20060909)

Hi

Nicola Pero wrote:
Just to recap on this, I've been thinking a bit, and reading about it, and
there doesn't seem to be an easy general solution. The fact that a bundle needs to be linked against all libraries all the time on Windows and some other
systems makes things very difficult on these systems ... unless you reimplement
the dynamic linker yourself to work around these limitations (which seems too 
much work). :-(
I don't really think we can modify the linker, unless we get the MINGW people to implement delay loaded DLLs (DLLs which get loaded when the first call against one of its exports is called, instead of at application startup), which could possibly offer us a way out of this mess, as if we added the right code to every application, an app would (possibly) be able to modify its search path for DLLs at runtime. That is if the MINGW people can figure this out (or if we can).
One thing we can do is make sure at least the gnustep-base and gnustep-gui 
bundles
are located inside the library versioned resource directory ... in that way, for
example, you can have two SSL gnustep-base bundles installed, each one used by
its own gnustep-base.  I've done this for gnustep-base, but not yet for 
gnustep-gui.
Presumably it's something to be done before the forthcoming release. :-)
The problem of different versioned copies of the same DLL being loaded into an address space should go away if both of the same versioned dlls have the same name. This obviously means they are in different directories. What you say above makes sense and sounds like the equivalent of a user containing two API incompatible versions of gnustep-base, such that two versions of the library are installed. We probably should use version numbers for library versions which are known to be incompatible, or use frameworks and implement proper support for those (somehow).
Unfortunately, not sure we can do that for the backend bundle ?  Should the 
backend
bundle be installed into a versioned directory (versioned on the version of 
gnustep-gui
it was linked against) too ?
It should be installed against the gnustep-gui version it was linked against, but this version should stay the same as long as the gnustep-gui version remains compatible with previous versions (API wise).
Once the core bundles are used only by the appropriate library, the problem 
should mostly
be hidden ... usually bundles used by applications are bundled with the 
application
and are linked against the same libraries.  The problem would mostly occur for
bundles app add-ins distributed by a different packager than the original 
application.
No matter what we do, I don't see an easy solution to that.
A packager would have to distribute a different version for each application version I would think. Unless the APIs it depended on handed been changed. Probably a case by case basis thing we can't avoid.

Regards
Chris




reply via email to

[Prev in Thread] Current Thread [Next in Thread]