Re: ghc 4.08 under Win98 [was: Re: ghc 4.08 under WinNT]

2000-07-25 Thread Reuben Thomas

>* Setting TMPDIR to a path with a drive letter works, no need to
>  edit the Perl driver. Without a drive letter, Perl/Bash/Cygwin
>  seems to forget the drive and/or the location of the tmp dir.

My experiments suggested that bash and perl were independently stripping
out any drive letters I put into TMPDIR..., e.g.

export TMPDIR=C:/tmp
perl -e 'print $ENV{"TMPDIR"} . "\n";' # or whatever the syntax is; I'm
 # no Perl wizard

resulted in:

/tmp

>* OK, so I've tried a simple HelloWorld app next, but failed
>  immediately again: The resulting main.exe can't find HSSTD.DLL.
>  Where is it searching? How can I find that out from an .exe?
>  How can I set the DLL search path at compilation time? Things
>  I definitely knew in the past, but happily forgot.

The search order for DLLs is specified at run-time, and detailed in MSDN,
but goes something like:

1. System "built-in" DLLs.
2. Directory the executable was run from
3. System path (WINNT/ &c.).
4. Current directory (hell security!)
5. PATH

> Main.o(.text+0x1c):fake: undefined reference to 
>`_imp__PrelBase_unpackCStringzh_closure'
> Main.o(.text+0x20):fake: undefined reference to 
>`_imp__PrelIO_putStrLn_closure'
> Main.o(.text+0x3a):fake: undefined reference to `_imp__stg_gc_enter_1'
> Main.o(.text+0x3f):fake: undefined reference to `_imp__upd_frame_info'
> Main.o(.text+0x66):fake: undefined reference to 
>`_imp__PrelBase_unpackCStringzh_closure'
> Main.o(.text+0x8e):fake: undefined reference to `_imp__stg_gc_enter_1'
> Main.o(.text+0x93):fake: undefined reference to `_imp__CAF_BLACKHOLE_info'
> Main.o(.text+0x9b):fake: undefined reference to `_imp__IND_STATIC_info'
> Main.o(.text+0xb1):fake: undefined reference to `_imp__upd_frame_info'
> Main.o(.text+0xd9):fake: undefined reference to 
>`_imp__PrelIO_putStrLn_closure'
> collect2: ld returned 1 exit status

Yup, this ain't gonna work.

> At least Cygwin didn't crash my Win98 box, which it easily does after
> emitting some obscure error messages when -split-objs is given to GHC
> for large files. I forgot the exact text of the messages, but cut'n'paste
> is a little bit hard when your box is thrashing and about to die in the
> next 3 seconds.

Don't *ever* use -split-objs on Windows. I never had a crash as a result,
but I had major thrashing. Don't even think about building DLLs this way,
it's horrible.

-- 
http://sc3d.org/rrt/ | Si hoc legere scis nimium eruditionis habes.






ghc 4.08 under Win98 [was: Re: ghc 4.08 under WinNT]

2000-07-25 Thread Sven Panne

I've just tried to fix that stub file problem on Win98 and now I'm even
more confused:

   * Setting TMPDIR to a path with a drive letter works, no need to
 edit the Perl driver. Without a drive letter, Perl/Bash/Cygwin
 seems to forget the drive and/or the location of the tmp dir.

   * OK, so I've tried a simple HelloWorld app next, but failed
 immediately again: The resulting main.exe can't find HSSTD.DLL.
 Where is it searching? How can I find that out from an .exe?
 How can I set the DLL search path at compilation time? Things
 I definitely knew in the past, but happily forgot.

   * Cunningly I've tried -static then, but linking failed with:

Main.o(.text+0x1c):fake: undefined reference to 
`_imp__PrelBase_unpackCStringzh_closure'
Main.o(.text+0x20):fake: undefined reference to `_imp__PrelIO_putStrLn_closure'
Main.o(.text+0x3a):fake: undefined reference to `_imp__stg_gc_enter_1'
Main.o(.text+0x3f):fake: undefined reference to `_imp__upd_frame_info'
Main.o(.text+0x66):fake: undefined reference to 
`_imp__PrelBase_unpackCStringzh_closure'
Main.o(.text+0x8e):fake: undefined reference to `_imp__stg_gc_enter_1'
Main.o(.text+0x93):fake: undefined reference to `_imp__CAF_BLACKHOLE_info'
Main.o(.text+0x9b):fake: undefined reference to `_imp__IND_STATIC_info'
Main.o(.text+0xb1):fake: undefined reference to `_imp__upd_frame_info'
Main.o(.text+0xd9):fake: undefined reference to `_imp__PrelIO_putStrLn_closure'
collect2: ld returned 1 exit status

At least Cygwin didn't crash my Win98 box, which it easily does after
emitting some obscure error messages when -split-objs is given to GHC
for large files. I forgot the exact text of the messages, but cut'n'paste
is a little bit hard when your box is thrashing and about to die in the
next 3 seconds.

Although I'd really like to make a compatibility release for HOpenGL,
personally I declare Windows deprecated for now and switch back to Diablo II...

Frustrated,
   Sven




En: ghc 4.08 under WinNT

2000-07-24 Thread Anibal Maffioletti Rodrigues de DEUS

I would like just to say that I had no problems to upgrade my GHC 4.045 to
4.08 in WinNT 4.0 Workstation...
My biggest problems was during 4.045 installation when I had to set a path
with a MS strange directory (c:/tmp instead of c:\tmp) and perl.

> - Original Message -
> From: Sven Panne <[EMAIL PROTECTED]>
> To: GHC Users <[EMAIL PROTECTED]>
> Sent: Sunday, July 23, 2000 1:25 PM
> Subject: Re: ghc 4.08 under WinNT
>
>
> > It seems like the saga continues: With Reuben's TMPDIR-fix the
> > handling of stub files (for foreign export dynamic) is broken:
> >
> >...
> >Copy foreign export C stubs:
> >rm -f GLU_Quadrics_stub.c && echo '#include "GLU_Quadrics_stub.h"' >
> GLU_Quadrics_stub.c && cat C:/tmp/ghc1139_stb.c >> GLU_Quadrics_stub.c
> >0.00user 0.00system 0:00.11elapsed 0%CPU (0avgtext+0avgdata
> 0maxresident)k
> >0inputs+0outputs (0major+0minor)pagefaults 0swaps
> >
> >C compiler:
> >
>
>
>
>
gcc -v  -S -Wimplicit -O -mno-cygwin -DSTOLEN_X86_REGS=4   -I. -Id:/programm
> e/ghc-4.08/lib/includes ghc1139.c > C:/tmp/ghc1139.ccout 2>&1 && ( if
>  ghc1139.s != C:/tmp/ghc1139.s ] ; then mv ghc1139.s C:/tmp/ghc1139.s ;
else
> exit 0 ; fi )
> >mv: cannot move `ghc1139.s' to `C:/tmp/ghc1139.s': File exists
> >
> > Double-*sigh*  :-(  The invention of drive letters marks one of the
> > darkest days in computer science...
> >
> > Cheers,
> >Sven
> >
>





Re: ghc 4.08 under WinNT

2000-07-23 Thread Sven Panne

It seems like the saga continues: With Reuben's TMPDIR-fix the
handling of stub files (for foreign export dynamic) is broken:

   ...
   Copy foreign export C stubs:
   rm -f GLU_Quadrics_stub.c && echo '#include "GLU_Quadrics_stub.h"' > 
GLU_Quadrics_stub.c && cat C:/tmp/ghc1139_stb.c >> GLU_Quadrics_stub.c
   0.00user 0.00system 0:00.11elapsed 0%CPU (0avgtext+0avgdata 0maxresident)k
   0inputs+0outputs (0major+0minor)pagefaults 0swaps

   C compiler:
   gcc -v  -S -Wimplicit -O -mno-cygwin -DSTOLEN_X86_REGS=4   -I. 
-Id:/programme/ghc-4.08/lib/includes ghc1139.c > C:/tmp/ghc1139.ccout 2>&1 && ( if [ 
ghc1139.s != C:/tmp/ghc1139.s ] ; then mv ghc1139.s C:/tmp/ghc1139.s ; else exit 0 ; 
fi )
   mv: cannot move `ghc1139.s' to `C:/tmp/ghc1139.s': File exists

Double-*sigh*  :-(  The invention of drive letters marks one of the
darkest days in computer science...

Cheers,
   Sven




Re: ghc 4.08 under WinNT

2000-07-20 Thread Reuben Thomas

> I spoke too soon. I can only compile from C:\ not from any
> subdirectory, i.e. not just failure from another drive.

This I can't reproduce. Failure to compile from another drive, I can.

A fix is to edit C:/ghc/ghc-4.08/bin/ghc in the following way:

change the definition of $TMPDIR near the top to be 

$TMPDIR='C:/tmp';

and lower down find the line that says

if ( $ENV{'TMPDIR'} ) ...

and insert

$ENV{'TMPDIR'} = $TMPDIR;

directly before it.

Fiddling with the driver script directly is necessary because even if you
set the environment variable TMPDIR to C:/tmp, bash reduces it to /tmp,
and even if you set it in your .bashrc, Perl mangles it to /tmp. Aargh.

-- 
http://sc3d.org/rrt/
L'art des vers est de transformer en beautés les faiblesses (Aragon)