diff --git a/books/bookvol4.pamphlet b/books/bookvol4.pamphlet index 6596b4a..854dcf3 100644 --- a/books/bookvol4.pamphlet +++ b/books/bookvol4.pamphlet @@ -298,6 +298,586 @@ November 10, 2003 ((iHy)) \eject \pagenumbering{arabic} \setcounter{chapter}{0} % Chapter 1 +\section{How Axiom Builds} +\subsection{The environment variables} +Axiom uses a tree of Makefiles to build the system. Each Makefile +is created from the literate file (Makefile.pamphlet) and then executed. + +In order to have a complete set of variables we create an ``environment'' +that contains all of the shell variables (except the AXIOM variable). + +These can be changed on the command line at the time of the top level +``make'' command. One common usage pattern is to override the NOISE +variable. This variable controls whether we see the full output or just +the echo of each individual step. Sometimes a build fails at a step and +we would like to know the details. By default they are written to +\verb|$TMP/trace| but we can watch every detail with the command line: +\begin{verbatim} + make NOISE= +\end{verbatim} +This overrides the output file and writes everything to the console. + +Another common usage pattern is to override the tests that are run. +By default, all tests are run. This can be very time consuming. +A particular subset can be run or, using the option ``notests'', none +will be run: +\begin{verbatim} + make TESTSET=notests +\end{verbatim} + +\begin{verbatim} +AWK=gawk +BOOKS=/research/test/books +BYE=bye +CC=gcc +CCF=-O2 -fno-strength-reduce -Wall -D_GNU_SOURCE -DLINUXplatform + -I/usr/X11/include +COMMAND=/usr/local/axiom/mnt/ubuntu/bin/axiom +DAASE=/research/test/src/share +DESTDIR=/usr/local/axiom +DOCUMENT=/research/test/mnt/ubuntu/bin/document +GCLDIR=/research/test/lsp/gcl-2.6.8pre4 +GCLOPTS=--enable-vssize=65536*2 --enable-locbfd --disable-dynsysbfd + --disable-statsysbfd --enable-maxpage=512*1024 --disable-xgcl + --disable-tkconfig +GCLVERSION=gcl-2.6.8pre4 +INC=/research/test/src/include +INT=/research/test/int +LDF= -L/usr/X11R6/lib -L/usr/lib -lXpm +LISP=lsp +LSP=/research/test/lsp +MNT=/research/test/mnt +NOISE=-o /research/test/obj/tmp/trace +O=o +OBJ=/research/test/obj +PART=cprogs +PATCH=patch +PLF=LINUXplatform +RANLIB=ranlib +RUNTYPE=serial +SPAD=/research/test/mnt/ +SPADBIN=/research/test/mnt/ubuntu/bin +SPD=/research/test +SRC=/research/test/src +SRCDIRS=interpdir sharedir algebradir etcdir clefdir docdir graphdir + smandir hyperdir browserdir inputdir +SUBPART=everything +SYS=ubuntu +TANGLE=/research/test/mnt/ubuntu/bin/lib/notangle +TAR=tar +TESTSET=none +TMP=/research/test/obj/tmp +TOUCH=touch +UNCOMPRESS=gunzip +VERSION=Axiom (May 2010) +WEAVE=/research/test/mnt/ubuntu/bin/lib/noweave +XLIB=/usr/X11R6/lib +ZIPS=/research/test/zips +\end{verbatim} + +\subsection{The build step} +This shows the steps taken to build Axiom in the sequence they happen. +Each level of indentation is another level of Makefile being executed. +\begin{verbatim} + +Makefile + 1 noweb + 2 copy SRC/scripts to AXIOM/bin + 3 extract Makefile.SYS from Makefile.pamphlet + 4 latex SRC/input/*.input.pamphlet + 5 extract SRC/algebra/Makefile.help from SRC/algebra/Makefile.pamphlet + 5a make SRC/algebra/Makefile.help parallelhelp + 5a1 extract syntax help from BOOKS/bookvol5 + 5a2 extract help files from BOOKS/bookvol10.* + 6 extract BOOKS/Makefile from BOOKS/Makefile.pamphlet + 6a make BOOKS/Makefile + 6a1 copy SRC/scripts/tex/axiom.sty to AXIOM/doc + 6a2 create AXIOM/doc/*.pdf + 6a2a copy book*.pamphlet to AXIOM/doc + 6a2b extract latex for each book + 6a2c latex each book + 6a2d dvipdfm each dvi file + 6a3 make AXIOM/doc/toc.pdf + 7 extract AXIOM/doc/hypertex/Makefile1 from BOOKS/bookvol11 + 7a make AXIOM/doc/hypertex/Makefile1 + 7a1 extract all xhtml pages to AXIOM/doc/hypertex + 7a2 extract axiom1.bitmap from BOOK/bookvol11 + 7a3 extract rcm3720.input from BOOK/bookvol11 + 7a4 extract strang.input from BOOK/bookvol11 + 7a5 extract signatures.txt from BOOK/bookvol11 + 7a6 copy BOOKS/ps/doctitle.png to AXIOM/doc/hypertex + 7a7 copy BOOKS/ps/lightbayou.png to AXIOM/doc/hypertex + 8 make Makefile.SYS + 8a create the root directories + 8b create noweb if needed + 8c extract SRC/Makefile from SRC/Makefile.pamphlet + 8d make SRC/Makefile setup + 8d1 extract SRC/scripts/Makefile from SRC/scripts/Makefile.pamphlet + 8d2 make SRC/scripts/Makefile + 8d1a copy all scripts to AXIOM/bin + 8d3 extract SRC/lib/Makefile from SRC/lib/Makefile.pamphlet + 8d4 make SRC/lib/Makefile + 8d4a compile INT/lib/bsdsignal.c + 8d4b compile INT/lib/cursor.c + 8d4c compile INT/lib/edin.c + 8d4d compile INT/lib/fnct-key.c + 8d4e compile INT/lib/halloc.c + 8d4f compile INT/lib/openpty.c + 8d4g compile INT/lib/pixmap.c + 8d4h compile INT/lib/prt.c + 8d4i compile INT/lib/sockio-c.c + 8d4j compile INT/lib/spadcolors.c + 8d4k compile INT/lib/util.c + 8d4l compile INT/lib/wct.c + 8d4m compile INT/lib/xdither.c + 8d4n compile INT/lib/xshade.c + 8d4o compile INT/lib/xspadfill.c + 8d4p create libspad.a + 8d4q compile INT/lib/cfuns-c.c + 8d4r compile INT/lib/hash.c + 8d4s latex all files to INT/doc/src/lib + 8e extract LSP/Makefile from LSP/Makefile.pamphlet + 8f make LSP/Makefile gcldir + 8f1 untar ZIPS/gcl + 8f2 apply Axiom patches to gcl + 8f3 copy gcl_collectfn.lsp to OBJ/SYS/lsp + 8f4 copy sys-proclaim.lisp to OBJ/SYS/lsp + 8f5 make LSP/GCLVERSION/Makefile + 8f6 add BOOKS/tangle.lsp to gcl to create INT/SYS/lisp + 8g make SRC/Makefile + 8g1 make stanzas from SRCDIRS + 8g1a interpdir + 8g1a1 copy bookvol5 to src/interp + 8g1a2 copy bookvol9 to src/interp + 8g1a3 copy bookvol10.5 to src/interp + 8g1a4 extract util.ht from BOOKS/bookvol7.1 to AXIOM/doc + 8g1a5 make SRC/interp/Makefile + 8g1a5a build SAVESYS=OBJ/SYS/bin/interpsys + 8g1a5a1 build DEPSYS=OBJ/SYS/bin/depsys + 8g1a5a2 compile all interp files + 8g1a5a3 call build-interpsys to make SAVESYS + 8g1a5a4 build warm.data + 8g1a5a5 build SAVESYS + 8g1a5a6 copy SAVESYS to AXIOMSYS=AXIOM/bin/AXIOMsys + 8g1b sharedir + 8g1b1 make share/Makefile + 8g1b1a copy SRC/share/algebra/command.list to AXIOM/lib + 8g1c algebradir + 8g1c1 extract algebra/Makefile from SRC/algebra/Makefile.pamphlet + 8g1c2 copy bookvol10.2 to SRC/algebra + 8g1c3 copy bookvol10.3 to SRC/algebra + 8g1c4 copy bookvol10.4 to SRC/algebra + 8g1c5 copy bookvol10.5 to SRC/algebra + 8g1c6 extract 'findAlgebraFiles' + from SRC/algebra/Makefile.pamphlet + 8g1c7 execute findAlgebraFiles and append output + to SRC/algebra/Makefile + 8g1c8 make SRC/algebra/Makefile + 8g1c8a build INT/algebra nrlibs + 8g1c8b copy SRC/algebra/libdb.text to AXIOM/algebra + 8g1c8c construct AXIOM/bin/index.html + 8g1c8d copy SRC/share/algebra/gloss.text AXIOM/algebra + 8g1c8e copy SRC/share/algebra/glossdef.text AXIOM/algebra + 8g1c8f copy SRC/share/algebra/glosskey.text AXIOM/algebra + 8g1d etcdir + 8g1d1 extract SRC/etc/Makefile from SRC/etc/Makefile.pamphlet + 8g1d2 make etc/Makefile + 8g1d2a copy SRC/doc/gloss.text INT/algebra + 8g1d2b copy SRC/doc/topics.data INT/algebra + 8g1d2c call make-databases + 8g1d2b copy INT/algebra/*.daase AXIOM/algebra + 8g1d2e compile asq.c + 8g1d2f copy OBJ/SYS/etc/asq AXIOM/bin + 8g1d2g copy SRC/etc/summary AXIOM/lib + 8g1d2h copy SRC/etc/copyright AXIOM/lib + 8g1e clefdir + 8g1e1 extract SRC/clef/Makefile from SRC/clef/Makefile.pamphlet + 8g1e2 make clef/Makefile + 8g1e2a extract edible.c to OBJ/SYS/clef + 8g1e2b compile OBJ/SYS/clef/edible.c + 8g1e2c link edible, fnct-key, edin, bsdsignal, prt, wct, + openpty, cursor into AXIOM/bin/clef + 8g1f docdir + 8g1f1 extract SRC/doc/Makefile from SRC/doc/Makefile.pamphlet + 8g1f2 make SRC/doc/Makefile + 8g1f2a extract SRC/doc/axiom.bib to INT/doc + 8g1f2b extract SRC/doc/axiom.sty to AXIOM/bin/tex + 8g1f2c extract SRC/doc/refcard.dvi to AXIOM/doc + 8g1f2d extract SRC/doc/endpaper.dvi to AXIOM/doc + 8g1f2e copy SRC/doc/ps/* to AXIOM/doc/ps + 8g1f2f extract SRC/doc/rosetta.dvi to AXIOM/doc + 8g1f2g extract SRC/doc/booklet.c to INT + 8g1f2h compile booklet.c + 8g1f2i copy booklet to AXIOM/bin + 8g1g graphdir + 8g1g1 extract SRC/graph/Makefile from BOOKS/bookvol8.pamphlet + 8g1g2 make graph/Makefile + 8g1g2a compile and link AXIOM/lib/viewman + 8g1g2b compile and link AXIOM/lib/view2d + 8g1g2c compile and link AXIOM/lib/view3d + 8g1g2d compile and link AXIOM/lib/viewalone + 8g1g2e extract AXIOM/graph/parabola.view from bookvol8 + 8g1g2f extract psfiles from bookvol8 to AXIOM/lib/graph + 8g1h smandir + 8g1h1 extract SRC/sman/Makefile from BOOKS/bookvol6.pamphlet + 8g1h2 make sman/Makefile + 8g1h2a extract INT/sman/session.c from bookvol6 + 8g1h2b compile INT/sman/session.c to OBJ/SYS/sman/session.o + 8g1h2c link OBJ/SYS/sman/session.o to AXIOM/lib/session + 8g1h2d extract INT/sman/spadclient.c from bookvol6 + 8g1h2e compile INT/sman/spadclient.c + to OBJ/SYS/sman/spadclient.o + 8g1h2f link OBJ/SYS/sman/spadclient.o to AXIOM/lib/spadclient + 8g1h2g extract INT/sman/sman.c from bookvol6 + 8g1h2h compile INT/sman/sman.c to OBJ/SYS/sman/sman.o + 8g1h2i link OBJ/SYS/sman/sman.o to AXIOM/lib/sman + 8g1h2j extract axiom shell script from bookvol6 to AXIOM/bin + 8g1h2k chmod axiom shell script to be executable + 8g1h2l create AXIOM/doc/bookvol6.dvi + 8g1i hyperdir + 8g1i1 extract INT/hyper/Makefile from BOOKS/bookvol7.pamphlet + 8gli2 make INT/hyper/Makefile (to make hyperdoc) + 8g1i2a extract and compile AXIOM/lib/spadbuf + 8g1i2b extract and compile AXIOM/lib/ex2ht + 8g1i2c extract and compile AXIOM/bin/htadd + 8g1i2d extract and compile AXIOM/lib/hthits + 8g1i2e extract and compile AXIOM/bin/htsearch + 8g1i2f extract and compile AXIOM/lib/presea + 8g1i2g extract and compile AXIOM/bin/hypertex + 8g1i2h untar SPD/books/axbook.tgz to AXIOM/doc + 8g1i2j copy SPD/books/bigbayou.png to AXIOM/doc + 8g1i2k copy SPD/books/doctitle.png to AXIOM/doc + 8g1i3 extract INT/hyper/Makefile from BOOKS/bookvol7.1.pamphlet + 8g1i4 make INT/hyper/Makefile (to make hyperdoc pages) + 8g1i4a copy SPD/books/bookvol7.1 to AXIOM/doc + 8g1i4b htadd pages from AXIOM/doc/bookvol7.1 + 8g1i4c copy SPD/books/bitmaps AXIOM/doc/bitmaps + 8g1i4d copy SPD/books/viewports AXIOM/doc/viewports + 8g1i4e untar AXIOM/doc/viewports .Z files + 8g1j browserdir + 8g1j1 build of hyperdoc browser commented out + 8g1k inputdir + 8g1k1 extract SRC/input/Makefile from SRC/input/Makefile.pamphlet + 8g1k2 make SRC/input/Makefile + 8g1k2a copy SRC/input/*.input INT/input + 8g1k2b lisp tangle input files from SRC/input/*.input.pamphlet + 8g1k2c extract INT/input/Makefile + from SRC/input/Makefile.pamphlet + 8g1k2d make INT/input/Makefile TESTSET + 8g1k2d1 run regresstests + 8g1k2d2 run catstests + 8g1k2d3 run richtests + 8g1k2d4 run regression tests + 8g1k2d5 extract INT/input/Makefile.algebra + from SRC/algebra/Makefile.pamphlet + 8g1k2d6 make INT/input/Makefile.algebra +\end{verbatim} + +\subsection{Where each output file is created} +Here we show which step in the above set of actions creates the file +that ends up in the final ship directory. We break it down by subdirectory +in the final image. +\subsubsection{AXIOM/algebra} +\begin{verbatim} +in AXIOM/algebra: + *.o + browse.daase + category.daase + compress.daase + dependents.daase + interp.daase + operation.daase + users.daase + +\end{verbatim} +\subsubsection{AXIOM/autoload} +\begin{verbatim} +in AXIOM/autoload: + ax.o + bc-matrix.o + br-con.o + ht-util.o + mark.fn + mark.o + nag-c02.o + nag-c05.o + nag-c06.o + nag-d01.o + nag-d02.o + nag-d03.o + nag-e01.o + nag-e02.o + nag-e04.o + nag-f01.o + nag-f02.o + nag-f04.o + nag-f07.o + nag-s.o + nspadaux.o + pspad1.fn + pspad1.o + pspad2.fn + pspad2.o + topics.o + wi1.fn + wi1.o + wi2.fn + wi2.o + +\end{verbatim} +\subsubsection{AXIOM/bin} +\begin{verbatim} +in AXIOM/bin: + asq 8g1d2f copy OBJ/SYS/etc/asq AXIOM/bin + axiom 8g1h2k chmod axiom shell script to be executable + axiom.sty 6a1 copy SRC/scripts/tex/axiom.sty to AXIOM/doc + AXIOMsys 8g1a5a6 copy SAVESYS to AXIOMSYS=AXIOM/bin/AXIOMsys + booklet 8g1f2i copy booklet to AXIOM/bin + boxhead 2 copy SRC/scripts to AXIOM/bin + boxtail 2 copy SRC/scripts to AXIOM/bin + boxup 2 copy SRC/scripts to AXIOM/bin + clef 8g1e2c link edible, fnct-key, edin, bsdsignal, prt, wct, + openpty, cursor into AXIOM/bin/clef + document 2 copy SRC/scripts to AXIOM/bin + htadd 8g1i2c extract and compile AXIOM/bin/htadd + htsearch 8g1i2e extract and compile AXIOM/bin/htsearch + hypertex 8g1i2g extract and compile AXIOM/bin/hypertex + index.html 8g1c8c construct AXIOM/bin/index.html + lib 1 noweb + btdefn + cpif + emptydefn + finduses + h2a + htmldoc + markup + mnt + nodefs + noidx + noindex + noroff + noroots + notangle + nountangle + noweave + noweb + nt + nuweb2noweb + numtime + pipedocs + tmac.w + toascii + tohtml + toroff + totex + unmarkup + Makefile.pamphlet + man + man1 + cpif.1 + htmltoc.1 + nodefs.1 + noindex.1 + noroff.1 + noroots.1 + notangle.1 + nountangle.1 + noweave.1 + noweb.1 + nuweb2noweb.1 + sl2h.1 + man7 + nowebfilters.7 + nowebstyle.7 + showdvi 2 copy SRC/scripts to AXIOM/bin +? sman 8g1h2i link OBJ/SYS/sman/sman.o to AXIOM/lib/sman + SPADEDIT 2 copy SRC/scripts to AXIOM/bin + tex 2 copy SRC/scripts to AXIOM/bin + axiom.sty 8g1f2b extract SRC/doc/axiom.sty to AXIOM/bin/tex + 2 copy SRC/scripts to AXIOM/bin + noweb.sty 1 noweb + nwmac.tex 1 noweb +? viewalone 8g1g2d compile and link AXIOM/lib/viewalone + +\end{verbatim} +\subsubsection{AXIOM/doc} +\begin{verbatim} +AXIOM/doc: + axbook + *.xhtml + axiom.sty + bigbayou.png + bitmaps + *.bitmap + bookvol0.out + bookvol0.pdf + bookvol0.toc + bookvol10.1.out + bookvol10.1.pdf + bookvol10.1.toc + bookvol10.2.out + bookvol10.2.pdf + bookvol10.2.toc + bookvol10.3.out + bookvol10.3.pdf + bookvol10.3.toc + bookvol10.4.out + bookvol10.4.pdf + bookvol10.4.toc + bookvol10.5.out + bookvol10.5.pdf + bookvol10.5.toc + bookvol10.out + bookvol10.pdf + bookvol10.toc + bookvol11.out + bookvol11.pdf + bookvol11.toc + bookvol12.out + bookvol12.pdf + bookvol12.toc + bookvol1.out + bookvol1.pdf + bookvol1.toc + bookvol2.out + bookvol2.pdf + bookvol2.toc + bookvol3.out + bookvol3.pdf + bookvol3.toc + bookvol4.out + bookvol4.pdf + bookvol4.toc + bookvol5.out + bookvol5.pdf + bookvol5.toc + bookvol6.out + bookvol6.pdf + bookvol6.toc + bookvol7.out + bookvol7.pdf + bookvol7.toc + bookvol7.1.out + bookvol7.1.pamphlet + bookvol7.1.pdf + bookvol7.1.toc + bookvol8.out + bookvol8.pdf + bookvol8.toc + bookvol9.out + bookvol9.pdf + bookvol9.toc + bookvolbib.pdf + doctitle.png + endpaper.dvi + ht.db + hypertex + *.xhtml + msgs + s2-us.msgs + ps + *.ps + refcard.dvi + rosetta.dvi + spadhelp + *.help + src +? algebra + algebra.Makefile.dvi + books.Makefile.dvi + clef + axiom.sty + edible.c.dvi + clef.Makefile.dvi + doc.Makefile.dvi + etc.Makefile.dvi +? hyper + input + *.input.dvi + input.Makefile.dvi +? interp + interp.Makefile.dvi + lib + *.c.dvi + lib.Makefile.dvi + Makefile.dvi + root.Makefile.dvi + scripts.Makefile.dvi + share.Makefile.dvi +? sman + src.Makefile.dvi + toc.pdf + util.ht + viewports + *.view + data + graph0 + image.bm + image.xpm + +\end{verbatim} +\subsubsection{AXIOM/graph} +\begin{verbatim} +AXIOM/graph + parabola.view: 8g1g2e extract AXIOM/graph/parabola.view from bookvol8 + data + graph0 + +\end{verbatim} +\subsubsection{AXIOM/input} +\begin{verbatim} +AXIOM/input: + *.input files + +\end{verbatim} +\subsubsection{AXIOM/lib} +\begin{verbatim} +AXIOM/lib: + command.list 8g1b1a copy SRC/share/algebra/command.list to AXIOM/lib + copyright 8g1d2h copy SRC/etc/copyright AXIOM/lib + ex2ht 8g1i2b extract and compile AXIOM/lib/ex2ht + graph 8g1g2f extract psfiles from bookvol8 to AXIOM/lib/graph + colorpoly.ps + colorwol.ps + drawarc.ps + drawcolor.ps + drawIstr.ps + drawline.ps + drawlines.ps + drawpoint.ps + draw.ps + drawrect.ps + drawstr.ps + drwfilled.ps + end.ps + fillarc.ps + fillpoly.ps + fillwol.ps + header.ps + setup.ps + hthits 8g1i2d extract and compile AXIOM/lib/hthits + presea 8g1i2f extract and compile AXIOM/lib/presea + session 8g1h2c link OBJ/SYS/sman/session.o to AXIOM/lib/session + spadbuf 8g1i2a extract and compile AXIOM/lib/spadbuf + spadclient 8g1h2f link OBJ/SYS/sman/spadclient.o AXIOM/lib/spadclient + SPADEDIT + summary 8g1d2g copy SRC/etc/summary AXIOM/lib + view2d 8g1g2b compile and link AXIOM/lib/view2d + view3d 8g1g2c compile and link AXIOM/lib/view3d + viewman 8g1g2a compile and link AXIOM/lib/viewman + +\end{verbatim} +\subsubsection{AXIOM/src} +\begin{verbatim} +AXIOM/src: +? algebra + +\end{verbatim} +\subsubsection{AXIOM/timestamp} +\begin{verbatim} +AXIOM/timestamp +\end{verbatim} + \section{How Axiom Works} \subsection{Input and Type Selection} First we change the default setting for autoload messages to diff --git a/changelog b/changelog index 9839b73..83efeca 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,5 @@ +20100711 tpd src/axiom-website/patches.html 20100711.01.tpd.patch +20100711 tpd books/bookvol4 document the Makefile build process 20100706 tpd src/axiom-website/patches.html 20100706.02.tpd.patch 20100706 tpd src/share/algebra/operation.daase update databases 20100706 tpd src/share/algebra/interp.daase update databases diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html index f158e5a..a6739a7 100644 --- a/src/axiom-website/patches.html +++ b/src/axiom-website/patches.html @@ -2986,5 +2986,7 @@ books/bookvol10.3 add ComplexDoubleFloatMatrix
books/bookvol10.3 add HTMLFormat
20100706.02.tpd.patch src/share/algebra/*.daase update databases
+20100711.01.tpd.patch +books/bookvol4 document the Makefile build process