Hi all,

I have committed some changes to objc-load.m and to NSPathUtilities.m that
are needed to run Calculator without errors and warnings, respectively.

On Sat, Aug 10, 2013 at 4:09 PM, David Chisnall <[email protected]
> wrote:

> On 10 Aug 2013, at 14:59, Fred Kiefer <[email protected]> wrote:
>
> > The call to /bin/rebaseall belongs somewhere into the target.make file
> > of GNUstep make. Anybody with more insight should place it there.
>
> On Win16 and Win32 (but not Win64), DLLs are not position-independent code
> and are expected to be located in the same part of the address space in
> every program that they are linked into.  The DLLs have all of their
> relocations applied the first time they are loaded and sometimes this
> generates conflicts the second time it's loaded.  This quickly becomes a
> mess.  As I recall, the fork() implementation in Cygwin often has problems
> on the exec if it needs to relocate a DLL.  The solution to this is the
> rebaseall utility, which searches all applications, finds the DLLs that
> they use, and reapplies the relocations to make them work.
>
> The correct time to run this command is just after you've installed a new
> program, or a new version of an existing DLL.
>

Ideally, it would be added someplace that's executed with 'make install'.

Sadly, one CANNOT run this as long as even a single cygwin process is run
-- except for /bin/ash.exe or /bin/dash.exe. This is according to Cygwin's
own documentation.  So, one has to shut down the terminal, any X clients
and X servers one may be running, and then:

  /bin/find /WHATEVER_YOUR_GNUSTEP_PREFIX_IS '(' -name '*.dll' -or -name
'*.exe' ')' -print > /tmp/gs-rebase-list.txt
  /bin/rebaseall -T /tmp/gs-rebase-list.txt
  /bin/rm /tmp/gs-rebase-list.txt

Since on my last build I used the 'mac' layout with prefix '/', this would
be counterproductive, so considering I installed everything into the LOCAL
domain:

  /bin/find /Library '(' -name '*.dll' -or -name '*.exe' ')' -print >
/tmp/gs-rebase-list.txt
  /bin/rebaseall -T /tmp/gs-rebase-list.txt
  /bin/rm /tmp/gs-rebase-list.txt

Note, it doesn't seem this works for GNUstep .exes listed in
gs-rebase-list.txt. Maybe the command doesn't work on .exes at all. It
doesn't hurt either, so I left that in /bin/find.

I have another script ready for installing under Cygwin. Unfortunately,
it's actually not a script, but a .txt file listing commands and describing
what to run at what point. The actual script would have to be a .bat, and I
really am not masochistic enough to write .bat scripts.

So what I'll do is get a blogpost up, containing instructions for any other
individual who wants to sail the uncharted territories of Cygwin+GNUstep.
As soon as I clean the 'script' up. The process is not that terrible, but
it need some extensive commentary before being usable.

-- 
Ivan Vučica
[email protected]
_______________________________________________
Discuss-gnustep mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnustep

Reply via email to