nhc98 as cross-compiler: it (almost) work
"sylvain nahas" <[email protected]> Thu, 3 Apr 2008 00:46:06 +0200
| Newsgroups | gmane.comp.lang.haskell.nhc.user |
|---|---|
| Message-ID | <[email protected]> |
------=_Part_1958_29119035.1207176366471
Content-Type: multipart/alternative;
boundary="----=_Part_1959_18906344.1207176366472"
------=_Part_1959_18906344.1207176366472
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
Hi,
I intend to use Haskell on embedded systems (ARM and MIPS), where porting
and even installing a compiler is not an option.
So I definitively need a cross-compiler, and to my dismay I have find out
that there is by now no Haskell compiler distribution with this capacity.
So. I have tried to modify the source of nhc98 so that it supports being
configured as a cross-compiler.
The result is in the attached patch.
In the current state it makes an error during the compilation ( cabal-parse
is probably not compiled with the correct compiler ) but the result of "make
install" is able to cross-compile correctly the program:
main = print("hello world") .
So I send the patch as it in the hope that others will have a look at it and
even finish it (hint, hint).
I have somewhat the feeling we are very close to get a fully working
cross-compiler
SHORTCOMINGS:
This patch is ugly. Please consider it as something experimental rather as
a true proposal.
* The name of the cross-compiler is hard coded in nhc98.inst, so if you want
to test it, you must adapt that.
* it uses the presence of a environment variable (TARGET) to know if a
cross-compiler is wished. It should be a "--target" flag to ./configure, but
I was not sure how to implement it at best ( by the way, would it not be
better to use the GNU autotools for that ? )
* As I said, the compilation doesn't even complete
* I had to remove the -m32 flag because it was not supported by the version
of the ARM GCC cross-compiler I have installed.
HOW TO TEST
$ patch -p 1 < ../nhc98-1.20-with-cross-compilation.patch1
$ CC=/usr/local/uclibc-0.9.28-3/arm/bin/arm-linux-gcc TARGET=arm-linux
./configure --prefix=/home/sylvain/bin/nhc98-1.20-arm-linux
$ TARGET=arm-linux make basic
$ TARGET=arm-linux make install
As a result:
sylvain@portable:/tmp$ TARGET=arm-linux
/home/sylvain/bin/nhc98-1.20-arm-linux/bin/nhc98 -v /tmp/toto.hs -o
/tmp/toto
/home/sylvain/bin/nhc98-1.20-arm-linux/lib/nhc98/arm-linux/nhc98comp +RTS
-RTS -P/home/sylvain/bin/nhc98-1.20-arm-linux/include/nhc98/packages/base
-I. -P/home/sylvain/bin/nhc98-1.20-arm-linux/include/nhc98 /tmp/toto.hs
/tmp/toto.hs /tmp/toto.11658.hi /tmp/toto.11658.hc
rm /tmp/toto.11658.hi
/usr/local/uclibc-0.9.28-3/arm/bin/arm-linux-gcc -D__NHC__=120 -x c -S
-DLOW_BYTE_FIRST -I/home/sylvain/bin/nhc98-1.20-arm-linux/include/nhc98/
/tmp/toto.11658.hc -o /tmp/toto.11658.s
rm /tmp/toto.11658.hc
/usr/local/uclibc-0.9.28-3/arm/bin/arm-linux-gcc -D__NHC__=120 -c -o
/tmp/toto.o /tmp/toto.11658.s
rm /tmp/toto.11658.s
/home/sylvain/bin/nhc98-1.20-arm-linux/lib/nhc98/arm-linux/nhc98heap |
/usr/local/uclibc-0.9.28-3/arm/bin/arm-linux-gcc -D__NHC__=120 -x c -c -o
/tmp/nhc11658.o -
/usr/local/uclibc-0.9.28-3/arm/bin/arm-linux-gcc -D__NHC__=120 -o /tmp/toto
/tmp/toto.o
/home/sylvain/bin/nhc98-1.20-arm-linux/lib/nhc98/arm-linux/main.o
/home/sylvain/bin/nhc98-1.20-arm-linux/lib/nhc98/arm-linux/mutlib.o
/home/sylvain/bin/nhc98-1.20-arm-linux/lib/nhc98/arm-linux/mutator.o
/home/sylvain/bin/nhc98-1.20-arm-linux/lib/nhc98/arm-linux/Prelude.a
/home/sylvain/bin/nhc98-1.20-arm-linux/lib/nhc98/arm-linux/Runtime.a
/home/sylvain/bin/nhc98-1.20-arm-linux/lib/nhc98/arm-linux/Prelude.a
/home/sylvain/bin/nhc98-1.20-arm-linux/lib/nhc98/arm-linux/Runtime.a
/home/sylvain/bin/nhc98-1.20-arm-linux/lib/nhc98/arm-linux/Prelude.a
/home/sylvain/bin/nhc98-1.20-arm-linux/lib/nhc98/arm-linux/Runtime.a
/tmp/nhc11658.o -lm
rm -f /tmp/nhc11658.o /tmp/nhc11658.c
on my ARM system ( running on a Qemu image downloaded from the Qemu site ):
$./toto
hello world
nice :)
I hope this patch will wake some interest in the developers of nhc98.
Having the ability to work as cross-compiler would be a bonus for a
compiler, and more generally for the use of the Haskell language in embedded
systems.
I personnaly do think this is a must have.
Greetings,
Sylvain
PS: the patch is against the distribution nhc98-1.20. The head of the darcs
repository seems unable to build for now.
------=_Part_1959_18906344.1207176366472
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
Hi,<br><br>I intend to use Haskell on embedded systems (ARM and MIPS), where porting and even installing a compiler is not an option.<br>So
I definitively need a cross-compiler, and to my dismay I have find out
that there is by now no Haskell compiler distribution with this
capacity.<br>
<br>So. I have tried to modify the source of nhc98 so that it supports being configured as a cross-compiler. <br>The result is in the attached patch.<br><br>In
the current state it makes an error during the compilation (
cabal-parse is probably not compiled with the correct compiler ) but
the result of "make install" is able to cross-compile correctly the
program: <br>
main = print("hello world") .<br><br>So I send the patch as it in the hope that others will have a look at it and even finish it (hint, hint). <br>I have somewhat the feeling we are very close to get a fully working cross-compiler <br>
<br>SHORTCOMINGS:<br><br>This patch is ugly. Please consider it as something experimental rather as a true proposal.<br>* The name of the cross-compiler is hard coded in nhc98.inst, so if you want to test it, you must adapt that.<br>
* it uses the presence of a environment variable (TARGET) to know if a
cross-compiler is wished. It should be a "--target" flag to
./configure, but I was not sure how to implement it at best ( by the
way, would it not be better to use the GNU autotools for that ? )<br>
* As I said, the compilation doesn't even complete<br>* I had to remove the -m32 flag because it was not supported by the version of the ARM GCC cross-compiler I have installed.<br><br>HOW TO TEST<br><br>$ patch -p 1 < ../nhc98-1.20-with-cross<div id="1fi9" class="ArwC7c ckChnd">
-compilation.patch1<br>
$ CC=/usr/local/uclibc-0.9.28-3/arm/bin/arm-linux-gcc TARGET=arm-linux ./configure --prefix=/home/sylvain/bin/nhc98-1.20-arm-linux<br>$ TARGET=arm-linux make basic<br>$ TARGET=arm-linux make install<br><br>As a result:<br>
<br>sylvain@portable:/tmp$ TARGET=arm-linux /home/sylvain/bin/nhc98-1.20-arm-linux/bin/nhc98 -v /tmp/toto.hs -o /tmp/toto<br>/home/sylvain/bin/nhc98-1.20-arm-linux/lib/nhc98/arm-linux/nhc98comp +RTS -RTS -P/home/sylvain/bin/nhc98-1.20-arm-linux/include/nhc98/packages/base -I. -P/home/sylvain/bin/nhc98-1.20-arm-linux/include/nhc98 /tmp/toto.hs /tmp/toto.hs /tmp/toto.11658.hi /tmp/toto.11658.hc<br>
rm /tmp/toto.11658.hi<br>/usr/local/uclibc-0.9.28-3/arm/bin/arm-linux-gcc -D__NHC__=120 -x c -S -DLOW_BYTE_FIRST -I/home/sylvain/bin/nhc98-1.20-arm-linux/include/nhc98/ /tmp/toto.11658.hc -o /tmp/toto.11658.s<br>rm /tmp/toto.11658.hc<br>
/usr/local/uclibc-0.9.28-3/arm/bin/arm-linux-gcc -D__NHC__=120 -c -o /tmp/toto.o /tmp/toto.11658.s<br>rm /tmp/toto.11658.s<br>/home/sylvain/bin/nhc98-1.20-arm-linux/lib/nhc98/arm-linux/nhc98heap | /usr/local/uclibc-0.9.28-3/arm/bin/arm-linux-gcc -D__NHC__=120 -x c -c -o /tmp/nhc11658.o -<br>
/usr/local/uclibc-0.9.28-3/arm/bin/arm-linux-gcc -D__NHC__=120 -o /tmp/toto /tmp/toto.o /home/sylvain/bin/nhc98-1.20-arm-linux/lib/nhc98/arm-linux/main.o /home/sylvain/bin/nhc98-1.20-arm-linux/lib/nhc98/arm-linux/mutlib.o /home/sylvain/bin/nhc98-1.20-arm-linux/lib/nhc98/arm-linux/mutator.o /home/sylvain/bin/nhc98-1.20-arm-linux/lib/nhc98/arm-linux/Prelude.a /home/sylvain/bin/nhc98-1.20-arm-linux/lib/nhc98/arm-linux/Runtime.a /home/sylvain/bin/nhc98-1.20-arm-linux/lib/nhc98/arm-linux/Prelude.a /home/sylvain/bin/nhc98-1.20-arm-linux/lib/nhc98/arm-linux/Runtime.a /home/sylvain/bin/nhc98-1.20-arm-linux/lib/nhc98/arm-linux/Prelude.a /home/sylvain/bin/nhc98-1.20-arm-linux/lib/nhc98/arm-linux/Runtime.a /tmp/nhc11658.o -lm<br>
rm -f /tmp/nhc11658.o /tmp/nhc11658.c<br><br>on my ARM system ( running on a Qemu image downloaded from the Qemu site ):<br>$./toto<br>hello world<br><br>nice :)<br><br>I hope this patch will wake some interest in the developers of nhc98. <br>
Having the ability to work as cross-compiler would be a bonus for a
compiler, and more generally for the use of the Haskell language in
embedded systems.<br>I personnaly do think this is a must have.<br><br>Greetings,<br><font color="#888888">
Sylvain<br></font><br>PS: the patch is against the distribution nhc98-1.20. The head of the darcs repository seems unable to build for now.</div>
------=_Part_1959_18906344.1207176366472--
------=_Part_1958_29119035.1207176366471
Content-Type: application/octet-stream;
name=nhc98-1.20-with-cross-compilation.patch1
Content-Transfer-Encoding: base64
X-Attachment-Id: f_fekhn2pu0
Content-Disposition: attachment;
filename=nhc98-1.20-with-cross-compilation.patch1
ZGlmZiAtTmF1ciBuaGM5OC0xLjIwLW9yaWcvY29uZmlndXJlIG5oYzk4LTEuMjAvY29uZmlndXJl
Ci0tLSBuaGM5OC0xLjIwLW9yaWcvY29uZmlndXJlCTIwMDctMTEtMjIgMTQ6MDU6MjQuMDAwMDAw
MDAwICswMTAwCisrKyBuaGM5OC0xLjIwL2NvbmZpZ3VyZQkyMDA4LTA0LTAyIDIwOjM2OjU2LjAw
MDAwMDAwMCArMDIwMApAQCAtMzYsMTEgKzM2LDMwIEBACiBJTlNUQUxMRElSPS91c3IvbG9jYWwK
IAogVVNFUj0ke1VTRVItYHdob2FtaSAyPi9kZXYvbnVsbGB9CisKK2lmIFsgIiRUQVJHRVQiICE9
ICIiIF0KK3RoZW4KK01BQ0hJTkU9YHNjcmlwdC9oYXJjaGAKK2Nhc2UgJE1BQ0hJTkUgaW4KKyAg
cG93ZXJwYy1EYXJ3aW5bNTZdKSBDQ0M9JHtDQy1jY307IFNUUklQPSR7U1RSSVAtc3RyaXB9OzsK
KyAgKikgICAgICAgICAgICAgICAgICBDQ0M9JHtDQy1nY2N9OyBTVFJJUD0ke1NUUklQLXN0cmlw
fTs7Citlc2FjCisjIGluIGNhc2Ugb2YgYnVpbGRpbmcgYSBjcm9zcy1jb21waWxlciwgQ0NDIGlz
IHRoZSBjcm9zcy1jb21waWxlciBDQworIyBhbmQgSE9TVCB0aGUgbG9jYWwgQyBjb21wbGlsZXIK
K0hPU1RDQ0M9Z2NjCitIT1NUU1RSSVA9c3RyaXAKKworZWxzZQogTUFDSElORT1gc2NyaXB0L2hh
cmNoYAorCiBjYXNlICRNQUNISU5FIGluCi0gIHBvd2VycGMtRGFyd2luWzU2XSkgQ0NDPSR7Q0Mt
Y2N9OzsKLSAgKikgICAgICAgICAgICAgICAgICBDQ0M9JHtDQy1nY2N9OzsKKyAgcG93ZXJwYy1E
YXJ3aW5bNTZdKSBDQ0M9JHtDQy1jY307IFNUUklQPSR7U1RSSVAtc3RyaXB9IDs7CisgICopICAg
ICAgICAgICAgICAgICAgQ0NDPSR7Q0MtZ2NjfTtTVFJJUD0ke1NUUklQLXN0cmlwfSA7OwogZXNh
YworSE9TVENDQz0ke0NDQ30KK0hPU1RTVFJJUD0ke1NUUklQfQorZmkKKwogUFdEPWBwd2RgCiBj
YXNlICRPUyBpbgogICBDWUdXSU4qKSBQV0Q9YGN5Z3BhdGggLXcgIiRQV0QiIHwgdHIgJ1xcXFwn
ICcvJ2AKQEAgLTMzNCw3ICszNTMsNyBAQAogICB9CiB9CiAhISEKLSAgICAkQ0NDIC1tMzIgJENP
UFRTIC1vIGVuZGlhbiBlbmRpYW4uYworICAgICRIT1NUQ0NDIC1tMzIgJENPUFRTIC1vIGVuZGlh
biBlbmRpYW4uYwogICAgIEVORElBTj1gLi9lbmRpYW5gCiAgICAgcm0gLWYgZW5kaWFuJEVYRSBl
bmRpYW4uYwogICAgIGVjaG8gLW4gIiRFTkRJQU4gIgpAQCAtNDE2LDkgKzQzNSw5IEBACiAgICAg
IGNwIHNyYy9wcmVsdWRlL0RFcnJOby5wLmMgIHNyYy9wcmVsdWRlLyRNQUNISU5FL05IQwogICAg
ICBjcCBzcmMvcHJlbHVkZS9ERXJyTm8uei5jICBzcmMvcHJlbHVkZS8kTUFDSElORS9OSEMKICAg
ZmkKLSAgJENDQyAkQ09QVFMgLW8gY29uZmlnLWVycm5vIHNjcmlwdC9jb25maWctZXJybm8uYyAm
JiBcCisgICRIT1NUQ0NDICRDT1BUUyAtbyBjb25maWctZXJybm8gc2NyaXB0L2NvbmZpZy1lcnJu
by5jICYmIFwKIAkuL2NvbmZpZy1lcnJubyA+dGFyZ2V0cy8kTUFDSElORS9FcnJuby5ocyAmJiBy
bSAtZiAuL2NvbmZpZy1lcnJubyRFWEUKLSAgJENDQyAkQ09QVFMgLW8gZXJybm9nZW4gc2NyaXB0
L2Vycm5vZ2VuLmMgJiYgXAorICAkSE9TVENDQyAkQ09QVFMgLW8gZXJybm9nZW4gc2NyaXB0L2Vy
cm5vZ2VuLmMgJiYgXAogCS4vZXJybm9nZW4gPkRFcnJOby5ocyAmJiBybSAtZiAuL2Vycm5vZ2Vu
JEVYRQogICBpZiBkaWZmIERFcnJOby5ocyBzcmMvcHJlbHVkZS8kTUFDSElORS9OSEMvREVyck5v
LmhzID4vZGV2L251bGwKICAgdGhlbgpAQCAtNTQ0LDYgKzU2Myw5IEBACiAgICAgICBlY2hvICJD
VVJTRVM9XCIkQ1VSU0VTXCIiOwogICAgICAgZWNobyAiRVhFPSRFWEUiOwogICAgICAgZWNobyAi
Q0M9JENDQyI7CisgICAgICBlY2hvICJIT1NUQ0M9JEhPU1RDQ0MiOworICAgICAgZWNobyAiU1RS
SVA9JFNUUklQIiA7CisgICAgICBlY2hvICJIT1NUU1RSSVA9JEhPU1RTVFJJUCIgOwogICAgICAg
ZWNobyAiQ09QVFM9XCIkQ09QVFNcIiI7CiAgICAgICBlY2hvICJHSENTWU09YGNhdCB0YXJnZXRz
LyRNQUNISU5FL2doY3N5bSB8fCB0cnVlYCI7CiAgICAgICBlY2hvICJUUlVFPSRUUlVFIjsKQEAg
LTgyMyw2ICs4NDUsOSBAQAogICBlY2hvICJCVUlMRERJUj0kQlVJTERESVIiIDsKICAgZWNobyAi
UlRTRkxBRz0kUlRTRkxBRyIgOwogICBlY2hvICJDQz0kQ0NDIiA7CisgIGVjaG8gIkhPU1RDQz0k
SE9TVENDQyIgOworICBlY2hvICJTVFJJUD0kU1RSSVAiIDsKKyAgZWNobyAiSE9TVFNUUklQPSRI
T1NUU1RSSVAiIDsKICAgZWNobyAiQ09QVFM9XCIkQ09QVFNcIiI7CiAgIGVjaG8gIkVORElBTj0k
RU5ESUFOIiA7CiAgIGVjaG8gIkhFQVA9JEhFQVAiIDsKZGlmZiAtTmF1ciBuaGM5OC0xLjIwLW9y
aWcvTWFrZWZpbGUuaW5jIG5oYzk4LTEuMjAvTWFrZWZpbGUuaW5jCi0tLSBuaGM5OC0xLjIwLW9y
aWcvTWFrZWZpbGUuaW5jCTIwMDctMTEtMjIgMTQ6MDU6MDQuMDAwMDAwMDAwICswMTAwCisrKyBu
aGM5OC0xLjIwL01ha2VmaWxlLmluYwkyMDA4LTA0LTAyIDE3OjMwOjU5LjAwMDAwMDAwMCArMDIw
MApAQCAtMSw3ICsxLDggQEAKICMjIyBDb25maWd1cmFibGUgdmFyaWFibGVzOgogCiBPUFQgPSAt
TzMKLUFSQ0ggPSAtbTMyCisjQVJDSCA9IC1tMzIKK0FSQ0ggPSAKIAogIyBDQyA9IGFjdHVhbGx5
IHNvdXJjZWQgZnJvbSBMSUJESVIvTUFDSElORS9jb25maWcKIElOU1RBTEwgPSBjcApkaWZmIC1O
YXVyIG5oYzk4LTEuMjAtb3JpZy9zY3JpcHQvaGFyY2ggbmhjOTgtMS4yMC9zY3JpcHQvaGFyY2gK
LS0tIG5oYzk4LTEuMjAtb3JpZy9zY3JpcHQvaGFyY2gJMjAwNy0xMS0yMiAxMTozMjo1MS4wMDAw
MDAwMDAgKzAxMDAKKysrIG5oYzk4LTEuMjAvc2NyaXB0L2hhcmNoCTIwMDgtMDQtMDIgMTc6MzE6
MzUuMDAwMDAwMDAwICswMjAwCkBAIC04LDYgKzgsMTIgQEAKIE9TPQogUkVMPQogCitpZiBbICIk
VEFSR0VUIiAhPSAiIiBdCit0aGVuCisJZWNobyAkVEFSR0VUCisJZXhpdCAwCitmaQorCiAjICBV
bmZvcnR1bmF0ZWx5LCB0aGVyZSBhcmUgYSB2YXJpZXR5IG9mIGluY29tcGF0aWJsZQogIyAgd2F5
cyBvZiBkZXRlY3RpbmcgYXJjaGl0ZWN0dXJlLCBzbyB0cnkgdGhlbSBhbGwhCiAKZGlmZiAtTmF1
ciBuaGM5OC0xLjIwLW9yaWcvc2NyaXB0L25oYzk4Lmluc3QgbmhjOTgtMS4yMC9zY3JpcHQvbmhj
OTguaW5zdAotLS0gbmhjOTgtMS4yMC1vcmlnL3NjcmlwdC9uaGM5OC5pbnN0CTIwMDctMTEtMjIg
MTI6MjI6MTYuMDAwMDAwMDAwICswMTAwCisrKyBuaGM5OC0xLjIwL3NjcmlwdC9uaGM5OC5pbnN0
CTIwMDgtMDQtMDIgMjM6NTk6MDguMDAwMDAwMDAwICswMjAwCkBAIC03MCw3ICs3MCwxMyBAQAog
CiBNQUlOUk9VVElORT0kTkhDOThMSUJESVIvJE1BQ0hJTkUvbWFpbgogCitpZiBbICIkVEFSR0VU
IiAhPSAiIiBdCit0aGVuCitDQz0iL3Vzci9sb2NhbC91Y2xpYmMtMC45LjI4LTMvYXJtL2Jpbi9h
cm0tbGludXgtZ2NjIC1EX19OSENfXz0kVkVSU0lPTk5VTSIKK2Vsc2UKIENDPSR7Q0MtZ2NjfSIg
LW0zMiAtRF9fTkhDX189JFZFUlNJT05OVU0iCitmaQorCiBDUFBIUz0iJE5IQzk4TElCRElSLyRN
QUNISU5FL2NwcGhzIgogaWYgdGVzdCAkVVNJTkdSVFMgLWVxIDAgOyB0aGVuCiAgIENQUEhTPSIk
Q1BQSFMgLSIKZGlmZiAtTmF1ciBuaGM5OC0xLjIwLW9yaWcvc3JjL2NvbXBpbGVyOTgvTWFrZWZp
bGUuaGF0IG5oYzk4LTEuMjAvc3JjL2NvbXBpbGVyOTgvTWFrZWZpbGUuaGF0Ci0tLSBuaGM5OC0x
LjIwLW9yaWcvc3JjL2NvbXBpbGVyOTgvTWFrZWZpbGUuaGF0CTIwMDctMTEtMjIgMTE6MzQ6Mjgu
MDAwMDAwMDAwICswMTAwCisrKyBuaGM5OC0xLjIwL3NyYy9jb21waWxlcjk4L01ha2VmaWxlLmhh
dAkyMDA4LTA0LTAyIDIwOjIzOjIwLjAwMDAwMDAwMCArMDIwMApAQCAtNDMsNyArNDMsNyBAQAog
JChUQVJHRVQpOiAke09CSkRJUn0gJChPQkpESVIpLyQoSEMpICQoU1JDUykKIAlobWFrZSAtJChI
QykgJChITUFLRUZMQUdTKSAtZCAkKE9CSkRJUikgSGF0VHJhbnMKIAltdiAkKE9CSkRJUikvSGF0
VHJhbnMkKEVYRSkgJChUQVJHRVQpCi0Jc3RyaXAgJChUQVJHRVQpCisJJChTVFJJUCkgJChUQVJH
RVQpCiAke09CSkRJUn06CiAJbWtkaXIgLXAgJHtPQkpESVJ9CiAkKE9CSkRJUikvJChIQyk6CmRp
ZmYgLU5hdXIgbmhjOTgtMS4yMC1vcmlnL3NyYy9ydW50aW1lL0ludGVnZXIvTWFrZWZpbGUgbmhj
OTgtMS4yMC9zcmMvcnVudGltZS9JbnRlZ2VyL01ha2VmaWxlCi0tLSBuaGM5OC0xLjIwLW9yaWcv
c3JjL3J1bnRpbWUvSW50ZWdlci9NYWtlZmlsZQkyMDA3LTExLTIyIDExOjMyOjUxLjAwMDAwMDAw
MCArMDEwMAorKysgbmhjOTgtMS4yMC9zcmMvcnVudGltZS9JbnRlZ2VyL01ha2VmaWxlCTIwMDgt
MDQtMDIgMTc6MzY6MzguMDAwMDAwMDAwICswMjAwCkBAIC01MSw3ICs1MSw3IEBACiAJJChPQkpE
SVIpL2NyZS1tcGFyYW0gPiB0bXAtJEAKIAltdiB0bXAtJEAgJEAKICQoT0JKRElSKS9jcmUtbXBh
cmFtOiBjcmUtbXBhcmFtLmMgZ21wLmggaGFza2VsbDJjLmggCi0JJChDQykgJChDRkxBR1MpIGBp
ZiBbIHgkKGZpcnN0d29yZCAkXikgPSB4IF07CVwKKwkkKEhPU1RDQykgJChDRkxBR1MpIGBpZiBb
IHgkKGZpcnN0d29yZCAkXikgPSB4IF07CVwKIAkJCSAgICAgICB0aGVuIGVjaG8gY3JlLW1wYXJh
bS5jOwkJXAogCQkJICAgICAgIGVsc2UgZWNobyAkKGZpcnN0d29yZCAkXik7IGZpYCAtbyAkQAog
CmRpZmYgLU5hdXIgbmhjOTgtMS4yMC1vcmlnL3NyYy9ydW50aW1lL01ha2VmaWxlIG5oYzk4LTEu
MjAvc3JjL3J1bnRpbWUvTWFrZWZpbGUKLS0tIG5oYzk4LTEuMjAtb3JpZy9zcmMvcnVudGltZS9N
YWtlZmlsZQkyMDA3LTExLTIyIDExOjMyOjUxLjAwMDAwMDAwMCArMDEwMAorKysgbmhjOTgtMS4y
MC9zcmMvcnVudGltZS9NYWtlZmlsZQkyMDA4LTA0LTAyIDE3OjM4OjIzLjAwMDAwMDAwMCArMDIw
MApAQCAtNjYsNiArNjYsNiBAQAogCWNkIE1rOyAgICAgICAgJChNQUtFKSBvYmpkaXIKIAogJChE
U1QpL25oYzk4aGVhcCQoRVhFKTogbmhjOThoZWFwLmMKLQkkKENDKSAkKEFSQ0gpICQoc2hlbGwg
ZWNobyAke0NPUFRTfSkgLW8gJEAgJDwKKwkkKEhPU1RDQykgJChBUkNIKSAkKHNoZWxsIGVjaG8g
JHtDT1BUU30pIC1vICRAICQ8CiAJJChTVFJJUCkgJEAKIAo=
------=_Part_1958_29119035.1207176366471
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
_______________________________________________
Nhc-users mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/nhc-users
------=_Part_1958_29119035.1207176366471--