Finally! The ghc from the CVS repository can bootstrap itself. The way
to go was: Build a 3.02 from .hc files, compile 4.02 with 3.02, and
bootstrap 4.02 with 4.02. There were some small glitches (cf. patches):

   * a missing include (for IF_DEBUG)

   * a comment which isn't a comment anymore in Haskell 98

   * fail's type has changed

   * the defaulting mechanism for numbers changed, so a cast ... uhm:
     type annotation :-) was neccessary in two places

I'll put a tar file for libc6 Linux into

   ftp://ftp.informatik.uni-muenchen.de/pub/local/pms/

when I've remembered/guessed my password on our FTP server.  :-]
(hopefully this will be *very* soon...)

Cheers,
   Sven
-- 
Sven Panne                                        Tel.: +49/89/2178-2235
LMU, Institut fuer Informatik                     FAX : +49/89/2178-2211
LFE Programmier- und Modellierungssprachen              Oettingenstr. 67
mailto:[EMAIL PROTECTED]            D-80538 Muenchen
http://www.pms.informatik.uni-muenchen.de/mitarbeiter/panne
diff -r -x CVS -c orig/fptools/ghc/includes/PrimOps.h fptools/ghc/includes/PrimOps.h
*** orig/fptools/ghc/includes/PrimOps.h Tue Jan 19 10:49:55 1999
--- fptools/ghc/includes/PrimOps.h      Wed Jan 20 19:47:36 1999
***************
*** 8,13 ****
--- 8,15 ----
  #ifndef PRIMOPS_H
  #define PRIMOPS_H
  
+ #include "Rts.h"
+ 
  /* -----------------------------------------------------------------------------
     Comparison PrimOps.
     -------------------------------------------------------------------------- */
diff -r -x CVS -c orig/fptools/ghc/lib/misc/Readline.lhs 
fptools/ghc/lib/misc/Readline.lhs
*** orig/fptools/ghc/lib/misc/Readline.lhs      Thu Jan 14 19:17:36 1999
--- fptools/ghc/lib/misc/Readline.lhs   Wed Jan 20 19:47:36 1999
***************
*** 36,42 ****
  
  import System
  
! --#include <readline/readline.h>
       
  type KeyCode = Int
  
--- 36,42 ----
  
  import System
  
! -- #include <readline/readline.h>
       
  type KeyCode = Int
  
***************
*** 64,70 ****
                prompt  (length prompt)
      litstr <- _casm_GC_ ``%r = readline (rl_prompt_hack);''
      if (litstr == ``NULL'') 
!      then fail (userError "Readline has read EOF")
       else do
        str <- unpackCStringIO litstr
        _ccall_ free litstr
--- 64,70 ----
                prompt  (length prompt)
      litstr <- _casm_GC_ ``%r = readline (rl_prompt_hack);''
      if (litstr == ``NULL'') 
!      then fail "Readline has read EOF"
       else do
        str <- unpackCStringIO litstr
        _ccall_ free litstr
***************
*** 80,86 ****
          -> IO ()
  rlBindKey key cback =
      if (0 > key) || (key > 255) then
!       fail (userError "Invalid ASCII Key Code, must be in range 0.255")
      else  do
        addCbackEntry (key,cback)
        _casm_ `` rl_bind_key((KeyCode)%0,&genericRlCback); '' key
--- 80,86 ----
          -> IO ()
  rlBindKey key cback =
      if (0 > key) || (key > 255) then
!       fail "Invalid ASCII Key Code, must be in range 0.255"
      else  do
        addCbackEntry (key,cback)
        _casm_ `` rl_bind_key((KeyCode)%0,&genericRlCback); '' key
***************
*** 100,106 ****
              IO ()
  rlAddDefun name cback key =
      if (0 > key) || (key > 255) then
!       fail (userError "Invalid ASCII Key Code, must be in range 0..255")
      else do
        addCbackEntry (key, cback)
        _casm_ ``rl_add_defun (%0, &genericRlCback, (KeyCode)%1);'' name key
--- 100,106 ----
              IO ()
  rlAddDefun name cback key =
      if (0 > key) || (key > 255) then
!       fail "Invalid ASCII Key Code, must be in range 0..255"
      else do
        addCbackEntry (key, cback)
        _casm_ ``rl_add_defun (%0, &genericRlCback, (KeyCode)%1);'' name key
***************
*** 231,238 ****
  rlSetMark mark = _casm_ ``rl_mark = %0;'' mark
  
  rlSetDone :: Bool -> IO ()
! rlSetDone True  = _casm_ ``rl_done = %0;'' 1
! rlSetDone False = _casm_ ``rl_done = %0;'' 0
  
  rlPendingInput :: KeyCode -> IO ()
  rlPendingInput key = primIOToIO (_casm_ ``rl_pending_input = %0;'' key)
--- 231,238 ----
  rlSetMark mark = _casm_ ``rl_mark = %0;'' mark
  
  rlSetDone :: Bool -> IO ()
! rlSetDone True  = _casm_ ``rl_done = %0;'' (1::Int)
! rlSetDone False = _casm_ ``rl_done = %0;'' (0::Int)
  
  rlPendingInput :: KeyCode -> IO ()
  rlPendingInput key = primIOToIO (_casm_ ``rl_pending_input = %0;'' key)

Reply via email to