On Wednesday, September 20, 2006 6:59 AM I wrote: > ... > Some good news. With the patches supplied by Camm in: > > http://lists.nongnu.org/archive/html/axiom-developer/2006-08/msg00344.ht ml > > and removing the out-of-date patches which have since been > incorporated into gcl, the darcs axiom--windows--1 source code > seems to be compiling using the new gcl-2.6.8pre. I now expect > it to complete successfully (I will confirm in a couple of hours). > > This means that at least we will be able to work with the same > version of gcl in both Linux and Windows once Camm officially > releases 2.6.8. The Windows version of Axiom was last successfully > compiled only with a patched version of gcl-2.6.5. >
Well it wasn't quite that easy, but I did finally get a successful Windows build of Axiom using gcl-2.6.8pre (as patched for the previously mentioned lstat problem) but it turned out I needed a few more patches. The most serious and difficult problem occurred in Axiom's database code. There is some incorrect usage of the lisp 'probe-file' function that no longer corresponds the way 'probe-file' works in gcl (since gcl-2.6.7). This is actually a bug in the current Axiom linux source distribution as well! This might explain the problems that we had recently with trying to compile Martin's Rubey's new 'guess' package since it means that generating the new databases might fail. Patch procedure --------------- The following is an annotated output from $ darcs --diff -u ------ Binary files old-axiom--windows--1-1/zips/gcl-2.6.5.tgz and new-axiom--windows--1-1/zips/gcl-2.6.5.tgz differ Because I was too lazy to take the time to properly modify the Makefile.pamphlet for the new gcl-2.6.8pre build, the first thing I did was prepare a tarball for gcl2.6.8pre using the name gcl-2.6.5w $ tar xzvf gcl-2.6.8pre.tgz $ mv gcl-2.6.8pre gcl-2.6.5w $ tar czvf gcl-2.6.5w.tgz gcl-2.6.5w so that I could just start with the existing Windows sources. -------- The following patch removes those patches to gcl that no longer apply diff -rN -u old-axiom--windows--1-1/lsp/Makefile.pamphlet new-axiom--windows--1-1/lsp/Makefile.pamphlet --- old-axiom--windows--1-1/lsp/Makefile.pamphlet Wed Sep 20 21:32:37 2006 +++ new-axiom--windows--1-1/lsp/Makefile.pamphlet Wed Sep 20 21:32:54 2006 @@ -766,15 +766,9 @@ @mv gcl-2.6.5 ${GCLVERSION} <<gcl-2.6.5w.socket.patch>> <<gcl-2.6.5w.libspad.patch>> -<<gcl-2.6.5w.toploop.patch>> -<<gcl-2.6.5w.h.gmp_wrappers.h.patch>> -<<gcl-2.6.5w.gcl_cmpmain.lsp.patch>> <<gcl-2.6.5w.tail-recursive.patch>> <<gcl-2.6.5w.collectfn.fix>> <<gcl-2.6.5w.h.mingw.defs.patch>> -<<gcl-2.6.5w.o.alloc.c.patch>> -<<gcl-2.6.5w.o.mingfile.c.patch>> -<<gcl-2.6.5w.o.unixfsys.c.patch>> <<gclConfigureMake>> @echo 112 finished system build on `date` | tee >gcldir ------ This is one of Camm's patches. diff -rN -u old-axiom--windows--1-1/src/interp/cfuns.lisp.pamphlet new-axiom--windows--1-1/src/interp/cfuns.lisp.pamphlet --- old-axiom--windows--1-1/src/interp/cfuns.lisp.pamphlet Wed Sep 20 21:32:48 2006 +++ new-axiom--windows--1-1/src/interp/cfuns.lisp.pamphlet Wed Sep 20 21:33:06 2006 @@ -114,10 +114,10 @@ #+(AND KCL (NOT ELF)) (Clines -"unsigned int MYCOMBINE(i,j)" -"unsigned int i,j;" +"int MYCOMBINE(i,j)" +"int i,j;" "{" -"return ( (((j & 16777215) << 6)+i) % 1073741789);" +"return ( (((((unsigned int)j) & 16777215) << 6)+((unsigned int)i)) % 1073741789);" "}" ) #+(AND KCL (NOT ELF)) ------ This patch corrects some incorrect usage of 'probe-file' in the Axiom database code. !! Very important !! diff -rN -u old-axiom--windows--1-1/src/interp/daase.lisp.pamphlet new-axiom--windows--1-1/src/interp/daase.lisp.pamphlet --- old-axiom--windows--1-1/src/interp/daase.lisp.pamphlet Wed Sep 20 21:32:48 2006 +++ new-axiom--windows--1-1/src/interp/daase.lisp.pamphlet Wed Sep 20 21:33:06 2006 @@ -840,7 +840,7 @@ (let (thisdir nrlibs asos asys libs object only dir key (|$forceDatabaseUpdate| t) noexpose) (declare (special |$forceDatabaseUpdate|)) - (setq thisdir (namestring (probe-file "."))) + (setq thisdir (namestring (truename "."))) (setq noexpose nil) (multiple-value-setq (only dir noexpose) (processOptions options)) ;don't force exposure during database build @@ -1106,12 +1106,12 @@ (setq *compressvector* nil) (withSpecialConstructors) (localdatabase nil - (list (list '|dir| (namestring (probe-file "./")) )) + (list (list '|dir| (namestring (truename "./")) )) 'make-database) (dolist (dir dirlist) (localdatabase nil (list (list '|dir| - (namestring (probe-file + (namestring (truename (format nil "./~a" dir))))) 'make-database)) ------- Here are 2 more of Camm's patches. diff -rN -u old-axiom--windows--1-1/src/interp/hash.lisp.pamphlet new-axiom--windows--1-1/src/interp/hash.lisp.pamphlet --- old-axiom--windows--1-1/src/interp/hash.lisp.pamphlet Wed Sep 20 21:32:48 2006 +++ new-axiom--windows--1-1/src/interp/hash.lisp.pamphlet Wed Sep 20 21:33:07 2006 @@ -81,7 +81,7 @@ (define-function 'HASHTABLE-CLASS #'system::hash-table-test) #+AKCL -(clines "static int mem_value(x ,i)object x;int i; { return ((short *)x)[i];}") +(clines "int mem_value(x ,i)object x;int i; { return ((short *)x)[i];}") #+AKCL (defentry memory-value-short(object int) (int "mem_value")) diff -rN -u old-axiom--windows--1-1/src/interp/sockio.lisp.pamphlet new-axiom--windows--1-1/src/interp/sockio.lisp.pamphlet --- old-axiom--windows--1-1/src/interp/sockio.lisp.pamphlet Wed Sep 20 21:32:49 2006 +++ new-axiom--windows--1-1/src/interp/sockio.lisp.pamphlet Wed Sep 20 21:33:08 2006 @@ -78,7 +78,7 @@ (defentry sock_send_int (int int) (int "sock_send_int")) (defentry sock_get_string_buf (int string int) (int "sock_get_string_buf")) (defentry sock_send_string_len (int string int) (int "sock_send_string_len")) - (defentry sock_get_float (int) (float "sock_get_float")) + (defentry sock_get_float (int) (double "sock_get_float")) (defentry sock_send_float (int float) (int "sock_send_float")) (defentry sock_send_wakeup (int int) (int "sock_send_wakeup")) (defentry server_switch () (int "server_switch")) ------- This patch corrects an error in the 'document' script which fails when the path to 'latex' contains a directory name with a space. diff -rN -u old-axiom--windows--1-1/src/scripts/document new-axiom--windows--1-1/src/scripts/document --- old-axiom--windows--1-1/src/scripts/document Wed Sep 20 21:32:49 2006 +++ new-axiom--windows--1-1/src/scripts/document Wed Sep 20 21:33:08 2006 @@ -1,5 +1,5 @@ #!/bin/sh -latex=`which latex` +latex=latex if [ "$latex" = "" ] ; then echo document ERROR You must install latex first exit 0 ------- The following chunk of the unixport.makefile.patch no longer applies to gcl-2.6.8pre diff -rN -u old-axiom--windows--1-1/zips/gcl-2.6.5w.unixport.makefile.patch new-axiom--windows--1-1/zips/gcl-2.6.5w.unixport.makefile.patch --- old-axiom--windows--1-1/zips/gcl-2.6.5w.unixport.makefile.patch Wed Sep 20 21:32:52 2006 +++ new-axiom--windows--1-1/zips/gcl-2.6.5w.unixport.makefile.patch Wed Sep 20 21:33:10 2006 @@ -10,12 +10,3 @@ ifeq ($(ARRS),) ARRS:=ar rs -@@ -28,7 +29,7 @@ - rm -rf gmp - mkdir gmp - a="$^" ; \ -- for i in $^ ; do \ -+ for i in $$a ; do \ - cp $$i gmp/$$(echo $$i | sed -e 's,\.\./,,1' -e 's,/,_,g') ; \ - done - touch $@ -------- There, that's all there is too it. :-) Now you can build Axiom on Windows with the newest prerelease version of GCL. Regards, Bill Page. _______________________________________________ Axiom-developer mailing list Axiom-developer@nongnu.org http://lists.nongnu.org/mailman/listinfo/axiom-developer