[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Bug in Installing under DOS and DJGPP -Reply




>>> Marcus Daniels <marcus@sysc.pdx.edu>
20/August/1996 07:51pm >>>
>>>>> "PM" == Peter Milliken <peterm@cae.com.au>
writes:

PM> Basically, I can execute all the steps up to the "make
PM> interpreted.mem" target with no errors. The system
goes through
PM> all the .lsp files and loads them OK but fails in the
PM> sys::%saveinitmem command. It gives an error of:

PM> DJDOS error 22 (ENOENT): no such file or
directory.

In May, I built CLISP using DJGPP v. 2.  I think it ought to
be close to working
(http://sayre.sysc.pdx.edu:8001/clisp/binaries/djgpp2/dos_wide.zip).
I dealt with several problems such as the one you describe
here.

One way to see where the error is coming from is to swap
these defines in lispbibl.d:

  # #define OS_error()
OS_error_debug(__FILE__,__LINE__)
  #define OS_error() OS_error_()

then, if such an error occurs, CLISP will indicate where it is
coming from.  Also be sure that the various instances of
"DJGPP == 2" are being compiled-in and used.

PM> I have enclosed the total script of my experiences
below in
PM> attempting the installation for the benefit of whoever
maintains
PM> the DJGPP port of clisp.

The DOS versions of CLISP get very little attention.  If
someone wants them to work, the best thing to do is send
patches or more independently maintain a port.


Thanks for your help, I downloaded your binaries and they
seem to work OK. Pure cussedness on my part insisted that
I get the binaries to compile from the source. Further to the
changes I made originally I made the following changes:

changed pathname.d at line 10184 from:

global int djgpp2_creat(path,mode)
  var reg3 CONST char* path;
  var reg2 unsigned long mode;
  {
       if (unlink(path) < 0) {OS_error();}
   }
    #undef creat
    return creat(path,mode);
  }

to:

global int djgpp2_creat(path,mode)
  var reg3 CONST char* path;
  var reg2 unsigned long mode;
  {
    #include <unistd.h>
    if (access(path, F_OK) == 0)
    {
       if (unlink(path) != 0)
       {
          OS_error();
       }
    }
    #undef creat
    return creat(path,mode);
  }

This change tests if the file exists prior to attempting to
unlink it (which will always fail if the file doesn't exist).

The other change I had to make was to the makefile. I
found that I was getting a stack overflow when creating the
lispinit.mem target on several of the .lsp files. In the end I
changed all the 800kw ocurrences to 8M (overkill I am sure,
but it takes so long on each pass that I couldn't be bothered
refining the number, I have 16MBytes available so I made
use of it).

I will now start to write my lisp program, any further
problems/solutions and I will send them to you.

Again, Thanks

Peter