gcl-devel
[Top][All Lists]
Advanced

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

[Gcl-devel] Re: [Axiom-developer] Axiom/GCL on windows


From: Vanuxem Gregory
Subject: [Gcl-devel] Re: [Axiom-developer] Axiom/GCL on windows
Date: Mon, 11 Dec 2006 19:42:39 +0100

Le dimanche 10 décembre 2006 à 10:16 -0600, Gabriel Dos Reis a écrit :

[...]

> start address -T 10629000 Finished loading xrun.o
> Loading interop.o
> start address -T 1062f000 Finished loading interop.o
> Loading patches.o
> start address -T 10638000 Finished loading patches.o
>    Using local database ../../../axiom.bi/src/share/algebra/compress.daase..  
>  Re-reading compress.daase   Using local database 
> ../../../axiom.bi/src/share/algebra/interp.daase..   Re-reading interp.daase
> 
> Error: Caught fatal error [memory may be damaged]
> Fast links are on: do (si::use-fast-links nil) for debugging
> Error signalled by RETURN.
> Broken at APPLY.  Type :H for Help.

The segfault occurs in cacheKeyedMsg (src/interp/patches.lisp). This is
a path problem, |fetchKeyedMsg| (patches.lisp) calls cacheKeyedMsg with
|$defaultMsgDatabaseName| as argument. This argument is a pathname (path
to target/*/share/msg/s2-us.msgs). GCL can not open this file since it's
a unix path (/some/where) and segfault (I don't know where). With GCL on
Windows you have to use mixed path (c:/some/where) (I know that truename
accept Windows path with two backslash as separator (c:\\some\\where) so
may be other functions too).

I don't know exactly where is the problem but you're rerooting (function
reroot) Axiom when you compile some interpreter's files. Reroot accepts
an argument which has to be the root of Axiom. You give him (to reroot)
a unix path and that's a problem (consequently $spadroot is wrong).
$spadroot is used everywhere to create path relative to it so may be
this is the problem ($spadroot is used to define |
$defaultMsgDatabaseName|).

Now the last thing, AxiomForWindows uses 'pwd -W' to define the SPAD
variable, pwd -W gives an acceptable path for GCL.

Hope that helps,

Greg

PS : It was not too difficult to find the problem I have some problems
actually with files on Windows (user-homedir-pathname) returns '~/' (not
the path that I want :-) and  I had, last week, some problems with the
'start' function (this is the function that display startup messages and
triggers your bug).

======================================================================

Variables and their definitions in AxiomForWindows when building Axiom
in the /home/greg/AxiomOnWindows directory

SPAD=C:/MinGW/MSYS/home/greg/AxiomOnWindows/mnt/ SYS=
SPD=C:/MinGW/MSYS/home/greg/AxiomOnWindows
LSP=C:/MinGW/MSYS/home/greg/AxiomOnWindows/lsp
GCLDIR=C:/MinGW/MSYS/home/greg/AxiomOnWindows/lsp/gcl-2.6.5w
SRC=C:/MinGW/MSYS/home/greg/AxiomOnWindows/src
INT=C:/MinGW/MSYS/home/greg/AxiomOnWindows/int
OBJ=C:/MinGW/MSYS/home/greg/AxiomOnWindows/obj
MNT=C:/MinGW/MSYS/home/greg/AxiomOnWindows/mnt
ZIPS=/home/greg/AxiomOnWindows/zips
TMP=C:/MinGW/MSYS/home/greg/AxiomOnWindows/obj/tmp
SPADBIN=C:/MinGW/MSYS/home/greg/AxiomOnWindows/mnt//bin
INC=C:/MinGW/MSYS/home/greg/AxiomOnWindows/src/include
CCLBASE=C:/MinGW/MSYS/home/greg/AxiomOnWindows/obj//ccl/ccllisp
PART=cprogs SUBPART=everything NOISE=-o
C:/MinGW/MSYS/home/greg/AxiomOnWindows/obj/tmp/trace
GCLVERSION=gcl-2.6.5w
TANGLE=C:/MinGW/MSYS/home/greg/AxiomOnWindows/mnt//bin/lib/notangle


===============          =================
=============== Makefile =================
===============          =================

SPD=$(shell pwd -W)
SYS=$(notdir $(AXIOM))
SPAD=${SPD}/mnt/${SYS}
LSP=${SPD}/lsp
#GCLVERSION=gcl-2.4.1
#GCLVERSION=gcl-2.5
#GCLVERSION=gcl-2.5.2
#GCLVERSION=gcl-2.6.1
#GCLVERSION=gcl-2.6.2
#GCLVERSION=gcl-2.6.2a
#GCLVERSION=gcl-2.6.3
GCLVERSION=gcl-2.6.5w
AWK=gawk
GCLDIR=${LSP}/${GCLVERSION}
SRC=${SPD}/src
INT=${SPD}/int
OBJ=${SPD}/obj
MNT=${SPD}/mnt
ZIPS=${shell pwd}/zips
TMP=${OBJ}/tmp
SPADBIN=${MNT}/${SYS}/bin
INC=${SPD}/src/include
CCLBASE=${OBJ}/${SYS}/ccl/ccllisp
INSTALL=/usr/local/axiom
COMMAND=${INSTALL}/mnt/${SYS}/bin/axiom
TANGLE=${SPADBIN}/lib/notangle

NOISE="-o ${TMP}/trace"

PART= cprogs
SUBPART= everything


ENV= SPAD=${SPAD} SYS=${SYS} SPD=${SPD} LSP=${LSP} GCLDIR=${GCLDIR} \
     SRC=${SRC} INT=${INT} OBJ=${OBJ} MNT=${MNT} ZIPS=${ZIPS} TMP=${TMP}
\
     SPADBIN=${SPADBIN} INC=${INC} CCLBASE=${CCLBASE} PART=${PART} \
     SUBPART=${SUBPART} NOISE=${NOISE} GCLVERSION=${GCLVERSION} \
     TANGLE=${TANGLE} 

all: noweb litcmds
@ echo 1 making a ${SYS} system, PART=${PART} SUBPART=${SUBPART}
@ echo 2 Environment ${ENV}
@ ${TANGLE} -t8 -RMakefile.${SYS} Makefile.pamphlet >Makefile.${SYS}
@ ${ENV} $(MAKE) -f Makefile.${SYS} 
@echo 3 finished system build on `date` | tee >lastBuildDate

start: noweb litcmds

book:
@ echo 79 building the book as ${MNT}/${SYS}/doc/book.dvi 
@ mkdir -p ${TMP}
@ mkdir -p ${MNT}/${SYS}/doc
@ cp ${SRC}/doc/book.pamphlet ${MNT}/${SYS}/doc
@ cp -pr ${SRC}/doc/ps ${MNT}/${SYS}/doc
@ (cd ${MNT}/${SYS}/doc ; \
          if [ .${NOISE} = . ] ; then \
    ( latex book.pamphlet --interaction nonstopmode ; \
      latex book.pamphlet --interaction nonstopmode ) ; \
   else \
    ( latex book.pamphlet --interaction nonstopmode >${TMP}/trace ; \
      latex book.pamphlet --interaction nonstopmode >${TMP}/trace ) ; \
  fi ; \
  rm book.pamphlet ; \
  rm book.toc ; \
  rm book.log ; \
  rm book.aux )
@ echo 80 The book is at ${MNT}/${SYS}/doc/book.dvi 

noweb:
@echo 13 making noweb
@mkdir -p ${OBJ}/noweb
@mkdir -p ${TMP}
@mkdir -p ${MNT}/${SYS}/bin/lib
@( cd ${OBJ}/noweb ; \
tar -zxf ${ZIPS}/noweb-2.10a.tgz ; \
cd ${OBJ}/noweb/src/c ; \
patch <${ZIPS}/noweb.modules.c.patch ; \
cd ${OBJ}/noweb/src ; \
./awkname ${AWK} ; \
patch <${ZIPS}/noweb.src.Makefile.patch ; \
${ENV} ${MAKE} BIN=${MNT}/${SYS}/bin/lib LIB=${MNT}/${SYS}/bin/lib \
                MAN=${MNT}/${SYS}/bin/man \
                TEXINPUTS=${MNT}/${SYS}/bin/tex all install
>${TMP}/trace )
@echo The file marks the fact that noweb has been made > noweb

nowebclean:
@echo 14 cleaning ${OBJ}/noweb
@rm -rf ${OBJ}/noweb
@rm -f noweb

litcmds:
@echo 0 ${ENV}
@echo 10 copying ${SRC}/scripts to ${MNT}/${SYS}/bin
@cp -pr ${SRC}/scripts/* ${MNT}/${SYS}/bin

install:
@echo 78 installing Axiom in ${INSTALL}
@mkdir -p ${INSTALL}
@cp -pr ${MNT} ${INSTALL}
@echo AXIOM=${INSTALL}/mnt/${SYS} >${COMMAND}
@cat ${SRC}/etc/axiom >>${COMMAND}
@chmod +x ${COMMAND}
@echo 79 Axiom installation finished.
@echo
@echo Please add $(shell dirname ${COMMAND}) to your PATH variable
@echo Start Axiom with the command $(shell basename ${COMMAND})
@echo 

document: noweb litcmds
@ echo 4 making a ${SYS} system, PART=${PART} SUBPART=${SUBPART}
@ echo 5 Environment ${ENV}
@ ${TANGLE} -t8 -RMakefile.${SYS} Makefile.pamphlet >Makefile.${SYS}
@ ${ENV} $(MAKE) -f Makefile.${SYS} document
@echo 6 finished system build on `date` | tee >lastBuildDate

clean: noweb litcmds
@ echo 7 making a ${SYS} system, PART=${PART} SUBPART=${SUBPART}
@ echo 8 Environment ${ENV}
@ ${TANGLE} -t8 -RMakefile.${SYS} Makefile.pamphlet >Makefile.${SYS}
@ ${ENV} $(MAKE) -f Makefile.${SYS} clean
@ rm -f noweb 
@ rm -f *~
@echo 9 finished system build on `date` | tee >lastBuildDate





$spadroot is set to a unix path (/some/where) 

> ============================
> 
> 
> To get to that point I have to disable calls to apply the patch (at
> the end of this message) to src/interp/patches.lisp.pamphlet.
> 
> Suggestions?
> 
> -- Gaby
> 
> 
> *** usbdisk_2/cas/axiom/bi/src/interp/patches.lisp.pamphlet   2006-11-30 
> 15:51:12.000000000 -0600
> --- usbdisk/axiom.bi/src/interp/patches.lisp.pamphlet 2006-12-10 
> 08:59:50.000000000 -0600
> *************** previous definition.
> *** 342,352 ****
>       (setq returncode 0))
>      (unless (zerop returncode) (bye returncode)))))
>   
> ! #+:dos
>   (setq vmlisp::$current-directory (truename "."))
>   #+:dos
>   (setq vmlisp::$spadroot "/spad/mnt/dos")
> ! #+:dos
>   (defun user-homedir-pathname ()
>    (truename "."))
>   
> --- 342,352 ----
>       (setq returncode 0))
>      (unless (zerop returncode) (bye returncode)))))
>   
> ! #+(or :dos :win32)
>   (setq vmlisp::$current-directory (truename "."))
>   #+:dos
>   (setq vmlisp::$spadroot "/spad/mnt/dos")
> ! #+(or :dos :win32)
>   (defun user-homedir-pathname ()
>    (truename "."))
>   
> *************** previous definition.
> *** 379,385 ****
>   
>   (defun |makeList| (size el) (make-list size :initial-element el) )
>   
> ! #+:akcl
>   (defun print-xdr-stream (x y z) (format y "XDR:~A" (xdr-stream-name x)))
>   #+:akcl
>   (defstruct (xdr-stream
> --- 379,385 ----
>   
>   (defun |makeList| (size el) (make-list size :initial-element el) )
>   
> ! #+:ackl
>   (defun print-xdr-stream (x y z) (format y "XDR:~A" (xdr-stream-name x)))
>   #+:akcl
>   (defstruct (xdr-stream
> *************** previous definition.
> *** 387,411 ****
>              "A structure to hold XDR streams. The stream is printed out."
>              (handle ) ;; this is what is used for xdr-open xdr-read xdr-write
>              (name ))  ;; this is used for printing
> ! #+:akcl
>   (defun |xdrOpen| (str dir) (make-xdr-stream :handle (system:xdr-open str) 
> :name str))
>   #+:CCL
>   (defun |xdrOpen| (str dir) (xdr-open str dir) )
> ! #+:dos
>   (defun |xdrOpen| (str dir) (format t "xdrOpen called"))
>   
> ! #+:akcl
>   (defun |xdrRead| (xstr r) (system:xdr-read (xdr-stream-handle xstr) r) )
>   #+:CCL
>   (defun |xdrRead| (xstr r) (xdr-read xstr r) )
> ! #+:dos
>   (defun |xdrRead| (str) (format t "xdrRead called"))
>   
> ! #+:akcl
>   (defun |xdrWrite| (xstr d) (system:xdr-write (xdr-stream-handle xstr) d) )
>   #+:CCL
>   (defun |xdrWrite| (xstr d) (xdr-write xstr d) )
> ! #+:dos
>   (defun |xdrWrite| (str) (format t "xdrWrite called"))
>   
>   ;; here is a test for XDR
> --- 387,411 ----
>              "A structure to hold XDR streams. The stream is printed out."
>              (handle ) ;; this is what is used for xdr-open xdr-read xdr-write
>              (name ))  ;; this is used for printing
> ! #+(and :akcl (not (or :dos :win32)))
>   (defun |xdrOpen| (str dir) (make-xdr-stream :handle (system:xdr-open str) 
> :name str))
>   #+:CCL
>   (defun |xdrOpen| (str dir) (xdr-open str dir) )
> ! #+(or :dos :win32)
>   (defun |xdrOpen| (str dir) (format t "xdrOpen called"))
>   
> ! #+(and :akcl (not (or :dos :win32)))
>   (defun |xdrRead| (xstr r) (system:xdr-read (xdr-stream-handle xstr) r) )
>   #+:CCL
>   (defun |xdrRead| (xstr r) (xdr-read xstr r) )
> ! #+(or :dos :win32)
>   (defun |xdrRead| (str) (format t "xdrRead called"))
>   
> ! #+(and :akcl (not (or :dos :win32)))
>   (defun |xdrWrite| (xstr d) (system:xdr-write (xdr-stream-handle xstr) d) )
>   #+:CCL
>   (defun |xdrWrite| (xstr d) (xdr-write xstr d) )
> ! #+(or :dos :win32)
>   (defun |xdrWrite| (str) (format t "xdrWrite called"))
>   
>   ;; here is a test for XDR
> 
> 
> _______________________________________________
> Axiom-developer mailing list
> address@hidden
> http://lists.nongnu.org/mailman/listinfo/axiom-developer
> 





reply via email to

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