axiom-developer
[Top][All Lists]
Advanced

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

Re: [Axiom-developer] Build machinery -- support for out of source build


From: Gabriel Dos Reis
Subject: Re: [Axiom-developer] Build machinery -- support for out of source build
Date: Sun, 1 Jul 2007 22:41:45 -0500 (CDT)

Tim --

  I'm replying to Bill's message, but really I'm replying to your 
message.  Please CC: me as I do not have "physically" access to 
Axiom mails.

  The CD "argument" is not a rare situation.  Replace CD by
US stick, if you're more modern than CD.

  It is not just because everybody is doing it -- even if it is
a good reason because there is no benefit of refusing to do it.



  The argument that 'by design the "src" tree should never be
touched by Make so you should be able to mount the source read-only
and type Make' is inherently bogus.  "src", "obj" and friends
are created *within* the Axiom source tree.  So if the source tree
is read only, there is no way you make type configure/make and succeed.  Here
is an experiment for you: Check out Axiom silver, make the whole tree
read-only; then try to build Axiom.  Report back.  
Maybe you thought you designed to accomplish out of source build, but there
are all evidence that you never try to see whether the implementation 
meets its goal.  You can just try and see.  There are obvious reasons
why the implementation can never succeed: the design has logical flaws.


* Minimize work.

  Obviously the Boot -> Lisp translation happens only if there is a
need to.  There is a simple straight forward solution to that:  setup
the dependencies correctly

     %.clisp: %.boot

In build-improvements, the dependency is slightly more complicated because
I have added a full bootstrap in three stages:
   (1) build from cached Lisp translation -- boot0
   (2) use boot0 to build from Boot source code -- boot1
   (3) use boot1 to build from Boot source code -- boot2
  
There should be a bootstrap compare between stages 1 and 2 -- not done
at the moment in build-improvements.  To the dependencies take into
account that staged build.  In case, an unnecessary rebuild is done.

The argument that "int/" speeds up the build process almost fallacious.


* Parallel build

  The current setup does not support parallel build -- at least
what most people using Make understand by parallel builds.  That is
a fact.  

  To minimize  user and developer time, Axiom should support parallel
build on the same machine, in the same build tree.  I know you don't care
about developer time, but others do.  I'm not working for an
imperial business machine corporation so I don't own several supercomputers,
many other potential contributors are in similar situation.

  Build-improvements support parallel builds.  Because it supports out of
source build, it also support build on NFS.  Note that parallel build
is supported because build-improvements is carefully in setting up
dependencies on the files -- something the current setup does not do, which
obviously is a fundamental flaw.


* Build only required parts.

  This is supported by modularization and crafting Make target rules.
Obviously build-improvements does support selective builds.  

    make all-boot   
    make all-lib    
    make all-hyper
    make all-axiomsys
    make all-algebra
    ...


The key is in knowing to use the tool we have: Make.

-- Gaby




reply via email to

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