axiom-developer
[Top][All Lists]
Advanced

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

[Axiom-developer] RE: algebra Makefiles with explicit dependencies, boot


From: Bill Page
Subject: [Axiom-developer] RE: algebra Makefiles with explicit dependencies, bootstrap, fixed-points etc.
Date: Fri, 7 Jan 2005 02:58:45 -0500

Tim,

I failed in my first simple attempts find any propagation of
dependencies during spad compilation. See for example

http://page.axiom-developer.org/zope/Plone/Members/billpage/CyclicDependenci
es

so I was beginning to think that this did not happen at least,
as you have suggested, not in the case where the signatures
stayed constant. But the Boolean and BasicType dependency case
that I looked at above is quite simple and much more complicated
things are possible in Axiom, so to be really sure I decided to
doing the following test.

1) I built Axiom from the archive in the normal way using 'make'.

2) I copied all of the int/algebra/*.NRLIB/code.lsp files to
   where the bootstrap files are located int/algebra/*.lsp so
   that I can compare any changes in these files later. All of
   these lisp files were generated by the Axiom compiler.

3) Then I deleted all of the int/algebra/*.NRLIB's and touched
   the int/algebra/*.spad files in order to force a full re-
   compilation of all the spad files on the next 'make'.

4) I ran 'make' again to re-build the NRLIB's. The only difference
   with this build is that it is loading the *.o files for the
   bootstrap from the *.o's that were compiled from the spad
   sources, rather than the bootstrap lisp.

5) Finally using diff I compared the old int/algebra/*.lsp files
   to the newly generated int/algebra/*.NRLIB/code.lsp files.

Because of my first experiments, I did not expect to see any
differences, but to my surprize (or was it relief because of
my earlier convictions :) I did find some small but apparently
significant differences in the following files.

--- int/algebra/BINFILE.lsp     Thu Jan  6 22:22:55 2005
+++ int/algebra/BINFILE.NRLIB/code.lsp  Thu Jan  6 23:09:32 2005
--- int/algebra/D01AGNT.lsp     Thu Jan  6 22:22:57 2005
+++ int/algebra/D01AGNT.NRLIB/code.lsp  Fri Jan  7 00:23:04 2005
--- int/algebra/FC.lsp  Thu Jan  6 22:23:00 2005
+++ int/algebra/FC.NRLIB/code.lsp       Thu Jan  6 23:59:50 2005
--- int/algebra/FFCGP.lsp       Thu Jan  6 22:23:01 2005
+++ int/algebra/FFCGP.NRLIB/code.lsp    Thu Jan  6 23:39:00 2005
--- int/algebra/FORTRAN.lsp     Thu Jan  6 22:23:02 2005
+++ int/algebra/FORTRAN.NRLIB/code.lsp  Fri Jan  7 00:00:23 2005
--- int/algebra/INBFF.lsp       Thu Jan  6 22:23:04 2005
+++ int/algebra/INBFF.NRLIB/code.lsp    Fri Jan  7 00:23:21 2005
--- int/algebra/OMENC.lsp       Thu Jan  6 22:23:10 2005
+++ int/algebra/OMENC.NRLIB/code.lsp    Thu Jan  6 22:49:46 2005
--- int/algebra/PATTERN.lsp     Thu Jan  6 22:23:11 2005
+++ int/algebra/PATTERN.NRLIB/code.lsp  Thu Jan  6 23:45:01 2005
--- int/algebra/PRIMELT.lsp     Thu Jan  6 22:23:13 2005
+++ int/algebra/PRIMELT.NRLIB/code.lsp  Thu Jan  6 23:45:25 2005
--- int/algebra/RECLOS.lsp      Thu Jan  6 22:23:14 2005
+++ int/algebra/RECLOS.NRLIB/code.lsp   Thu Jan  6 23:45:39 2005
--- int/algebra/ROIRC.lsp       Thu Jan  6 22:23:14 2005
+++ int/algebra/ROIRC.NRLIB/code.lsp    Thu Jan  6 23:28:06 2005

None of these are bootstrap files.

I am now in the process of re-iterating the above steps to see
if these differences will disappear in the next cycle or if they
will propagate further to other files that depend on these. I
will let you know what happens a little later.

Here are the actual bash scripts that I am running.

----------

$ cat fixedPoint

# fixedPoint:
#
# This script attempts to find a "fixed point" in the Axiom
# algebra that is defined by repeating the build until there
# is no change in the generated lisp code.
#
# Author: Bill Page  6 Jan 2005.

echo "Axiom Fixed Point Build" | tee fixedPoint.log

# The first step is to build Axiom in the usual way starting
# with the bootstrap lisp files in int/algebra/*.lsp that are
# extracted from the *.spad.pamphlet files 

# linux or windows
export AXIOM=`pwd`/mnt/linux
export PATH=$AXIOM/bin:$PATH
make clean
make

# At each iteration we copy all of the lisp files from
# int/algebra/*.NRLIB/code.lsp to int/algebra/*.lsp and
# then delete the int/algebra/*.NRLIB files and touch
# all of the int/algebra/*.spad files to force a complete
# re-compilation.

level=1

# The initial bootstrap *.lsp files are overwritten

mv2boot
touch int/algebra/*.spad

# The Axiom compiler will load the most recent algebra code
# from the ${MNT}/${SYS}/algebra/*.o files.

make
echo "***Iteration*** $level" | tee -a fixedPoint.log

# Then we compare the new int/algebra/*.NRLIB/code.lsp
# files to the previous versions at int/algebra/*.lsp

while ! cmp2boot>>fixedPoint.log; do

# Differences are written to a log, then we repeat
# the above steps if necessary

  level=$((level+1))
  mv2boot
  touch int/algebra/*.spad
  make
  echo "***Iteration*** $level" | tee -a fixedPoint.log
done

--------

$ cat mv2boot
# mv2boot:
#
# This script copies all of the new lisp files back to
# the bootstrap

for i in int/algebra/*.NRLIB/code.lsp; do
  cp $i ${i/.NRLIB\/code/};
  rm -r ${i/\/code.lsp/}
done

---------

$ cat cmp2boot
# cmp2boot:
#
# This script compares the new lisp files to the old
# bootstrap lisp files. It outputs any differences and
# returns status 1 or 0 if there are no differences.

error=0
for i in int/algebra/*.NRLIB/code.lsp; do
  if ! diff -au ${i/.NRLIB\/code/} $i; then error=1; fi
done
exit $error

----------

Does this test procedure make sense to you. Do you think
I have made any logical errors here?

If you have a machine to spare, I would be very interested
to see if you get the same results.

Regards,
Bill Page.





reply via email to

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