Gentoo Archives: gentoo-alt

From: Al <oss.elmar@××××××××××.com>
To: gentoo-alt@l.g.o
Subject: [gentoo-alt] Re: Gentoo/Cygwin: Vicious Python
Date: Sat, 18 Sep 2010 15:25:03
Message-Id: AANLkTikLnDi-L0amviHtdTis_xbTYz3v+xO7Dr+y82on@mail.gmail.com
In Reply to: [gentoo-alt] Re: Gentoo/Cygwin: Vicious Python by Al
1 >
2 > It's "sometimes", because I am in the DLL hell again. DLLs changing
3 > addresses each run and Cygwins rebaseall script doesn't fix it this
4 > time.
5 >
6
7 Again something for the archives and those who are interested:
8
9 The reason why rebaseall didn't fix it is, that it only rebases files
10 that have been installed with setup.exe. It makes use of files in
11 which the pathes of DLLs are listet. By creating such a list file it
12 is possible to rebase user contributed DLLs. The file is given with
13 the -T option of rebaseall.
14
15 SOLVED:
16
17 Open a windows command shell (cmd):
18
19 P:/cygwin/bin/ash
20 /bin/rebaseall -T /home/prefix/rebase.lst
21 exit
22 exit
23
24 I create the rebase.lst with this lines:
25
26 #/bin/bash
27 BASE=/home/prefix
28 rm $BASE/rebase.lst
29 find $BASE/gentoo/bin/ -name *.dll -o -name *.so >> $BASE/rebase.lst
30 find $BASE/gentoo/lib/ -name *.dll -o -name *.so >> $BASE/rebase.lst
31 find $BASE/gentoo/usr/bin -name *.dll -o -name *.so >> $BASE/rebase.lst
32 find $BASE/gentoo/usr/lib -name *.dll -o -name *.so >> $BASE/rebase.lst
33
34 Maybe some more is required if DLLs are outside of this pathes. It is
35 necessary that all DLLs have write access to change the default
36 address where they are loaded to.
37
38 TODO:
39
40 A remaining problem is, that you can't run this script from within
41 bash, which depends on many DLLs itself. Hence you have to run it from
42 a very limited ash. This means, you can't include the rebaseall script
43 into emerge, if you wan't be able to run emerge from bash.
44
45 I need to adapt the rebase all script so that it only rebases those
46 DLLs that are not loaded by bash. It must load them to a completly
47 different address space. That would base DLLs from Perl and Python for
48 example.
49
50 Remains the issue with the ncurses DLL wich has a bad (low) default
51 address, but bash depends on it. The best solution is probably to set
52 it explicitly to a sane address.
53
54 Al