[Top][All Lists]
[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
>