axiom-developer
[Top][All Lists]
Advanced

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

RE: [Axiom-developer] axiom opportunity


From: Bill Page
Subject: RE: [Axiom-developer] axiom opportunity
Date: Sat, 29 Apr 2006 15:29:38 -0400

On April 26, 2006 2:50 PM Gabriel Dos Reis wrote:
> 
> Tim Daly (root) writes:
> 
> | All of that effort is due to Camm. Unfortunately his tarball of 
> | patches are all undocumented so I have no idea why those changes
> | are necessary. I'm reluctant to make changes without understanding.
> | > 
> | > Do you have link to those patches?
> | 
> | wget daly.axiom-developer.org/axiom_20050901-6.diff
> 
> Thanks!
> 

Concerning documentation of the Debian patches for Axiom recall
that:

http://lists.gnu.org/archive/html/gcl-devel/2005-12/msg00052.html

On December 14, 2005 8:50 PM Camm Maguire wrote:

Greetings!

OK, for accuracy, here is the full patch I am using for
axiom_20050901-4.  This is debian/patch.merge in the Debian source
package.   It is far more complex than it looks, as it supports as
well the platforms on which native object relocation is not yet
implemented (2.6.x hppa ia64 mips alpha, 2.7.0 hppa ia64).  For the
ubiquitous x86, we just need the #+native-reloc code.

I'll be happy to try to explain this again as time permits, but for
now let me say that the purpose of

the first patch is to load gcl_collectfn, turn sgc on, and link in
cfuns-c.o, sock-io.o, and libspad.a,

the second and third patches is to avoid making the databases when
native object relocation is not available, and to use prebuilt copies
supplied under debian instead, as on such machines one cannot have
more than 1024 open file descriptors, which likewise bounds the number
of binary loads.

the fourth patch is to link $(OBJS1) into the image.  This might now
be made obsolete by the first patch, or vice versa.

the fifth and sixth patches are only to support machines without
native object relocation.  They use the same compiler::link mechanism
to link in all the compiled lisp objects which normally would be
achieved via a load and a si::save-system.  I'm hoping 2.7.0 will be
the end of this requirement.

Take care,
============================================================================
=
--- ./lsp/Makefile.pamphlet.~1.5.~      2005-09-05 18:50:31.000000000 +0000
+++ ./lsp/Makefile.pamphlet     2005-09-20 21:20:10.000000000 +0000
@@ -1012,14 +1012,7 @@
        @echo 1 building ${LSP} ${GCLVERSION}
 
 gcldir: 
-       @echo 2 building ${GCLVERSION}
-       @tar -zxf ${ZIPS}/${GCLVERSION}.tgz
-<<gcl-2.6.7.socket.patch>>
-<<gcl-2.6.7.libspad.patch>>
-<<gcl-2.6.7.toploop.patch>>
-<<gcl-2.6.7.tail-recursive.patch>>
-<<gcl-2.6.7.collectfn.fix>>
-<<gclConfigureMake>>
+       echo '(compiler::link nil "${OUT}/lisp" (format nil "(progn (let
((*load-path* (cons ~S *load-path*))(si::*load-types* ~S))
(compiler::emit-fn t))(when (fboundp (quote si::sgc-on)) (si::sgc-on
t))#-native-reloc(setq compiler::*default-system-p* t))"
si::*system-directory* (quote (list #+native-reloc".o" ".lsp")))
"${OBJ}/${SYS}/lib/cfuns-c.o ${OBJ}/${SYS}/lib/sockio-c.o
${OBJ}/${SYS}/lib/libspad.a")' | gcl
        @echo 13 finished system build on `date` | tee >gcldir
 
 ccldir: ${LSP}/ccl/Makefile
--- ./src/algebra/Lattice.pamphlet.orig 2005-01-04 23:45:59.000000000 +0000
+++ ./src/algebra/Lattice.pamphlet      2005-02-14 18:45:10.000000000 +0000
@@ -39620,13 +39620,14 @@
        @ cp -p ${SRC}/doc/gloss.text ${LIB}
        @ cp -p ${SRC}/doc/topics.data ${MID}
        @ echo rebuilding daase files
-       @ (cd ${MID} ; \
-          echo ')set out le 200' >/tmp/tmp.input ; \
-          echo ')fin' >>/tmp/tmp.input ; \
-          echo '(make-databases "" (QUOTE ("unix")))' >>/tmp/tmp.input ; \
-          echo '(bye)' >>/tmp/tmp.input ; \
-          cat /tmp/tmp.input | ${INTERPSYS} ; \
-          rm -f /tmp/tmp.input )
+       @ (cd ${MID} ; \
+          echo ')set out le 200' >/tmp/tmp.input ; \
+          echo ')fin' >>/tmp/tmp.input ; \
+          echo "#+native-reloc(make-databases \"\" (QUOTE
(\"unix\")))#-native-reloc(system \"cp ${SRC}/../debian/*.daase ${MID}\")"
>>/tmp/tmp.input ; \
+          echo '(bye)' >>/tmp/tmp.input ; \
+          cat /tmp/tmp.input | ${INTERPSYS} ; \
+          rm -f /tmp/tmp.input )
+#      @ (cp ${SRC}/../debian/*.daase ${MID})
        @ echo If all went well, go-ahead Mike and do a db-install as well !
 
 db-install:
@@ -39758,7 +39759,8 @@
        @ echo rebuilding databases...
        @ cp ${SRC}/doc/gloss.text ${MID}
        @ cp ${SRC}/doc/topics.data ${MID}
-       @ (cd ${MID} ; echo ')lisp (make-databases "" nil)' | ${INTERPSYS} )
+       @ (cd ${MID} ; echo ")lisp (progn #+native-reloc(make-databases \"\"
nil)#-native-reloc(system \"cp ${SRC}/../debian/*.daase ${MID}\"))" |
${INTERPSYS} )
+#      @ (cp ${SRC}/../debian/*.daase ${MID})
 
 check:
        @ echo Checking that INTERP.EXPOSED and NRLIBs are consistent
--- ./src/etc/Makefile.pamphlet.orig    2005-01-30 12:03:12.000000000 +0000
+++ ./src/etc/Makefile.pamphlet 2005-02-14 18:47:16.000000000 +0000
@@ -33,9 +33,10 @@
        @ cp ${SRC}/doc/gloss.text ${INT}/algebra
        @ cp ${SRC}/doc/topics.data ${INT}/algebra
        @ cp ${SRC}/doc/topics.data ${INT}/algebra
-       @ (cd ${INT}/algebra ; \
-           echo ')lisp (make-databases "" nil)' | ${INTERPSYS} )
-       @ cp ${INT}/algebra/*.daase ${MNT}/${SYS}/algebra
+       @ (cd ${INT}/algebra ; \
+           echo ")lisp (progn #+native-reloc(progn (make-databases \"\"
nil)(system \"cp ${INT}/algebra/*.daase
${MNT}/${SYS}/algebra\"))#-native-reloc(system \"cp ${SRC}/../debian/*.daase
${MNT}/${SYS}/algebra\"))" | ${INTERPSYS} )
+#      @ cp ${INT}/algebra/*.daase ${MNT}/${SYS}/algebra
+#      @ (cp ${SRC}/../debian/*.daase ${MNT}/${SYS}/algebra)
 
 @
 \section{summary}
--- ./src/boot/Makefile.pamphlet.orig   2005-06-05 03:23:35.000000000 +0000
+++ ./src/boot/Makefile.pamphlet        2005-09-20 21:36:15.000000000 +0000
@@ -1173,7 +1173,8 @@
 
 Until this is fixed we need to continue to use the old scheme.
 <<environment>>= 
-CMD0=  (progn (mapcar (function (lambda (x) (load  x))) (quote (${OBJS1})))
(system::save-system "${SAVESYS}"))
+#CMD0= (progn (mapcar (function (lambda (x) (load  x))) (quote (${OBJS1})))
(system::save-system "${SAVESYS}"))
+CMD0=  (if (member :native-reloc *features*) (progn (mapcar (function
(lambda (x) (load  x))) (quote (${OBJS1}))) (system::save-system
"${SAVESYS}")) (compiler::link (quote (${OBJS1})) "${SAVESYS}" (format nil
"(let ((*load-path* (cons ~S *load-path*))(si::*load-types* ~S))
(compiler::emit-fn t)) (when (fboundp (quote si::sgc-on)) (si::sgc-on t))
(setq compiler::*default-system-p* t)" si::*system-directory* (quote  (list
".lsp")))))
  
 @
 \subsection{boothdr.lisp \cite{1}}
--- ./src/interp/Makefile.pamphlet.orig 2005-09-20 21:48:56.000000000 +0000
+++ ./src/interp/Makefile.pamphlet      2005-09-20 21:49:14.000000000 +0000
@@ -576,7 +576,28 @@
 \begin{verbatim}
 <<save depsys image>>=
        @ (cd ${MNT}/${SYS}/bin ; \
-          echo '(progn (load "${OUT}/makedep.lisp") (spad-save
"${DEPSYS}"))' | ${LISPSYS})
+          echo '#+native-reloc(progn (load "${OUT}/makedep.lisp")
(spad-save "${DEPSYS}"))#-native-reloc(progn \
+                       (setq si::*collect-binary-modules* t) \
+                       (load "${OUT}/makedep.lisp") \
+                       (compiler::link \
+                               (remove-duplicates si::*binary-modules*
:test (quote equal)) \
+                               "$(DEPSYS)" \
+                               (format nil "\
+                                       (setq si::*collect-binary-modules*
t) \
+                                       (let ((si::*load-path* (cons ~S
si::*load-path*))\
+                                            (si::*load-types* ~S))\
+                                               (compiler::emit-fn t))\
+                                       (load \"$(OUT)/makedep.lisp\")\
+                                       (gbc t)\
+                                       (when si::*binary-modules* \
+                                               (error
si::*binary-modules*))\
+                                       (setq si::collect-binary-modules*
nil si::*binary-modules* nil)\
+                                       (gbc t)\
+                                       (when (fboundp (quote si::sgc-on))
(si::sgc-on t))\
+                                       (setq compiler::*default-system-p*
t)\
+                               " si::*system-directory* (quote (list
".lsp")))\
+                               "" \
+                               nil))' | ${LISPSYS})
 @
 \end{verbatim}
 
@@ -880,8 +901,36 @@
        @ echo '#+:akcl (setq compiler::*suppress-compiler-notes* t)' >>
${OUT}/makeint.lisp
        @ echo '#+:akcl (si::gbc-time 0)' >> ${OUT}/makeint.lisp
        @ echo '#+:akcl (setq si::*system-directory* "${SPAD}/bin/")' >>
${OUT}/makeint.lisp
+#      @ (cd ${OBJ}/${SYS}/bin ; \
+#        echo '(progn (gbc t) (load "${OUT}/makeint.lisp") (gbc t)
(user::spad-save "${SAVESYS}"))' | ${LISPSYS} )
        @ (cd ${OBJ}/${SYS}/bin ; \
-         echo '(progn (gbc t) (load "${OUT}/makeint.lisp") (gbc t)
(user::spad-save "${SAVESYS}"))' | ${LISPSYS} )
+         echo '#+native-reloc(progn (gbc t) (setq x
si::*system-directory*)(load "${OUT}/makeint.lisp") (setq
si::*system-directory* x) (unintern (quote x))(gbc t)(user::spad-save
"${SAVESYS}"))#-native-reloc(progn \
+                       (setq si::*collect-binary-modules* t)\
+                       (setq x si::*system-directory*)\
+                       (load "${OUT}/makeint.lisp")\
+                       (setq si::*system-directory* x)\
+                       (unintern (quote x))\
+                       (compiler::link \
+                               (remove-duplicates si::*binary-modules*
:test (quote equal))\
+                               "$(SAVESYS)" \
+                               (format nil "\
+                                       (let ((si::*load-path* (cons ~S
si::*load-path*))\
+                                             (si::*load-types* ~S))\
+                                               (compiler::emit-fn t))\
+                                        (setq si::*collect-binary-modules*
t)\
+                                        (setq x si::*system-directory*)\
+                                        (load \"$(OUT)/makeint.lisp\")\
+                                        (setq si::*system-directory* x)\
+                                        (unintern (quote x))\
+                                        (when si::*binary-modules* \
+                                               (error
si::*binary-modules*))\
+                                       (setq si::collect-binary-modules*
nil si::*binary-modules* nil)\
+                                       (gbc t)\
+                                       (when (fboundp (quote si::sgc-on))
(si::sgc-on t))\
+                                       (setq compiler::*default-system-p*
t)\
+                               " si::*system-directory* (quote (list
".lsp")))\
+                       "$(OBJ)/$(SYS)/lib/sockio-c.o
$(OBJ)/$(SYS)/lib/cfuns-c.o $(OBJ)/$(SYS)/lib/libspad.a" \
+                       nil))' | $(LISPSYS))
        @ echo 6 ${SAVESYS} created
        @ cp ${SAVESYS} ${AXIOMSYS}
        @ echo 6a ${AXIOMSYS} created
============================================================================
=


root <address@hidden> writes:

> > > also, how do we handle the fact that users can build gcl
> > > using the -ansi switch. that means that their local copy
> > > of gcl cannot be used by axiom (yet).
> > > 
> > 
> > The Debian prerequiste for Axiom is the non-ansi version of
> > gcl. If the non-ansi version is not installed on the system
> > then 'apt-get install axiom' will also install it.
> 
> true but not everyone uses debian. 
> how do we solve the redhat9 issue?
> 

Note that the rpms created by alien from the debian binaries
work on redhad9.

Regards,
Bill Page.






reply via email to

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