[Top][All Lists]

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

[Gcl-devel] system::getenv does not return MSYS environment variables

From: Page, Bill
Subject: [Gcl-devel] system::getenv does not return MSYS environment variables
Date: Tue, 7 Dec 2004 02:58:09 -0500

Tim, Mike,

Doubly odd. When I went back to check my build.log for the last
compile I just noticed that

| The syntax of the command is incorrect.
| The syntax of the command is incorrect.

does not appear in the log that I captured with

  make | tee build.log

But if I repeat the make, then sure enough they do show up again,
presumably from stderr.

Comparing the contents of the log to the stanza
in src/algebra/Makefile and noting the location of the marker
  4301 rebuilding databases ...
it seems to me that these syntax error messages must originate
during the call to the make-databases lisp function since
the Loading messages are generated by AXIOMsys and the message
"building browse.daase" is generated in make-databases.

In any case make-databases seems to be doing something that
Windows doesn't like. When I look at src/interp/daase.lisp.pamphlet
I see a lot of file manipulation like probe-file, namestring,
rename-file, delete-file, etc. But running as much of AXIOMsys
that got built (it kicks me into BOOT) I can tell that in spite
of the fact that probe-file returns a string starting with "c:/"
(a Windows convention that refers to a drive c), the rename-
file functions etc. do seem to work. However I note that I can
cause namestring to return the message "Cannot coerce NIL to
a PATHNAME" if I do something like (namestring (probe-file "xxx"))
when "xxx" doesn't exist.

Apparently at the point that that "Cannot coerce NIL ..." occurs
make-databases has successfully built the *.build files (I checked
that they do actually exist in int/algebra) and it is calling
(create-initializers) before doing the file renaming etc.

I don't clearly understand what create-initializers does, but
one thing seemed strange. The call to

  (|getEnv| "AXIOM")

returns NIL even though

  echo $AXIOM

shows that the environment variable is set. But stranger still is

  (|getEnv| "PATH")

does return the PATH in windows format (with ; ) while the

  echo $PATH

shows it correctly in unix format (with : ).

In cfuns.lisp I see

(deffun |getEnv| (varname) (system::getenv varname))

and it seems that (system::getenv "AXIOM") also returns
NIL. I think that is wrong!

One of the external lib/cfunc.c routines is copyEnvValue which
calls the stdlib routine getenv(). A simple test program shows
that this gets both AXIOM and PATH variables properly. But it is
apparently no longer used in Axiom. I wonder what GCL is calling
of system::getenv?

Anyway, that's about as far as I can get understanding this
error right now.

Bill Page.

> -----Original Message-----
> From: root [mailto:address@hidden
> Sent: Monday, December 06, 2004 10:42 PM
> To: address@hidden
> Cc: address@hidden; address@hidden; 
> address@hidden;
> address@hidden
> Subject: Re: [Gcl-devel] RE: [Axiom-developer] Metadata for 
> the uploaded
> Windows source/binary package.
> Mike,
> |    Loading ZLINDEP.NRLIB/code for package IntegerLinearDependence
> |    Loading ZMOD.NRLIB/code for domain IntegerMod
> | The syntax of the command is incorrect.
> | The syntax of the command is incorrect.
> |
> | "building browse.daase"
> | "building category.daase"
> | "building interp.daase"
> |    >> System error:
> |    Cannot coerce NIL to a PATHNAME.
> odd. perhaps a command i use is missing?
> can you modify the makefile and remove the '@' in front of the 
> commands so we can see what the failing commands are?
> t

reply via email to

[Prev in Thread] Current Thread [Next in Thread]