Return-Path: Received: from b.gp.cs.cmu.edu by G.GP.CS.CMU.EDU id aa13663; 26 Jan 92 8:10:46 EST Received: from lisp-pmax1.slisp.cs.cmu.edu by B.GP.CS.CMU.EDU id aa07887; 26 Jan 92 8:09:24 EST Received: from BatMail.robin.v2.13.CUILIB.3.45.SNAP.NOT.LINKED.LISP.PMAX1.SLISP.CS.CMU.EDU.pmax.ul4 via MS.5.6.LISP-PMAX1.SLISP.CS.CMU.EDU.pmax_ul4; Sun, 26 Jan 1992 08:09:09 -0500 (EST) Message-ID: Date: Sun, 26 Jan 1992 08:09:09 -0500 (EST) From: William.Lott@cs.cmu.edu To: cmucl-bugs@cs.cmu.edu Subject: Re: re-build from sources In-Reply-To: <9201260035.AA18731@NMSU.Edu> References: <9201260035.AA18731@NMSU.Edu> writes: > I just went through the most of the exercise of rebuilding cmucl from > sources again and have a few comments. Always glad to hear them... > a) having a coherent source tree available for ftp saves enormous > amounts of headaches. THANKS! > > b) the compile scripts seem to work much better than before. total > compilation time was only about 6-8 hours. no problems were encounted > other than a large number of warnings during the compilation of pcl. Specially comments like these... > c) the circular dependency problem is still severe. running > do-worldbuild runs genesis which requires ldb.map which can be created > if you build a new makefile, but that requires lisp.h which is created > during the genesis process. creating ldb.map also requires ldb (which > is bin/lisp) and version which can be created trivially by hand > (unless you don't know what goes into it). after creating ldb.map by > hand, creating a new lisp.h still requires having an old lisp.h, > although the old one can now be empty. then after lisp.h.NEW is > created with (paradoxically) 444 permissions, the system has trouble > opening it. changing modes and retrying gets us to the point of > building a useable kernel.core. > > somehow, this process doesn't seem intuitive. to simplify the process > for others, i am putting a tar file with kernel.core, ldb, ldb.map and > lisp.h in it onto crl.nmsu.edu in the directory pub/cmucl with the > name new-kernel.tar.Z, available for anonymous ftp. > > if there is a problem with the way that i created these files, will > somebody please tell me? Hm. Sounds like we need to clean this up a bit, but I can't think of anyway to get rid of the circular dependency. Well, actually, I know of one way, which I've implemented in our prototype generational GC system, but retrofiting it into the current system would be very difficult. The process you described sounds more complicated then necessary, but the results should be okay. The easiest way to bootstrap the system is as follows: - Create a ldb.map file: % echo "Map file for ldb version 0" > ldb/ldb.map - Run genesis with no imput files: * (load ".../compiler/generic/genesis") * (lisp::genesis nil ".../ldb/ldb.map" "/dev/null" ".../ldb/lisp.map" ".../ldb/lisp.h") - Make an initial version file if necessary: % echo [some-number] > ldb/version - Use the resultant lisp.h to compile the C code: % make Now you are fully bootstrapped. Take if from there: - Rerun genesis for real now that you have a real ldb.map: % .../tools/do-worldbuild - Build the full core: % .../tools/mk-lisp Note: the various scripts mentioned above have hard-wired paths in them set up for our directory layout here at CMU. Anyone anywhere else will have to edit them before they will work. -William Lott CMU Common Lisp Group