Return-Path: Received: from b.gp.cs.cmu.edu by G.GP.CS.CMU.EDU id aa00575; 18 Aug 92 2:21:21 EDT Received: from lisp-pmax2.slisp.cs.cmu.edu by B.GP.CS.CMU.EDU id aa22848; 18 Aug 92 2:19:26 EDT Received: from BatMail.robin.v2.13.CUILIB.3.45.SNAP.NOT.LINKED.LISP.PMAX2.SLISP.CS.CMU.EDU.pmax.ul4 via MS.5.6.LISP-PMAX2.SLISP.CS.CMU.EDU.pmax_ul4; Tue, 18 Aug 1992 02:18:46 -0400 (EDT) Message-ID: Date: Tue, 18 Aug 1992 02:18:46 -0400 (EDT) From: William.Lott@cs.cmu.edu To: cmucl-bugs@cs.cmu.edu, Sandra Loosemore Subject: Re: genesis problem In-Reply-To: <199208161914.AA10418@MONAD.SYSTEMSZ.CS.YALE.EDU> References: <199208161914.AA10418@MONAD.SYSTEMSZ.CS.YALE.EDU> loosemore-sandra@CS.YALE.EDU (Sandra Loosemore) writes: > I'm trying to build a core file without clx, hemlock, etc. loaded, > starting from the 15d sources. I figured out how to get everything > to compile, but now it's croaking in genesis because there's no file > ldb/ldb.map. I found a makefile in that directory, but that's failing > because it can't find lisp.h, which is written by genesis??? What do > I do to break the circularity? Or have I missed a step? > > -Sandra Yep, you missed a step: you need to pull either a lisp.h or a ldb.map out of your ear. Once you have either, you can build the other. And if the original was incorrect, you can rebuild it. The lisp.h rarely changes from one build to the next, you can just leave around the old on and not worry about it. To start off, you either need to pick up a lisp.h from us, or fake an ldb.map. The only problem is that we don't have the lisp.h for the 15e sitting around anywhere. You should probably take this opportunity to shift to a 16 series core, as it has many bug fixes and improvements. If you want to stick with 15e, make an ldb.map that contains nothing but: Map file for ldb version 37 and then run Genesis with no input files. Genesis will then create a kernel.core with nothing but T, NIL, and a few other random symbols in it and a lisp.h. Use that lisp.h to compile the C code. That will produce a real ldb.map file. Then run genesis for real. ``.../tools/do-worldbuild'' is a handy way to run genesis for real. It fires up a lisp and then loads worldbuild.lisp, which runs genesis with the minimum stuff necessary to bootstrap a lisp. ``.../tools/compile-all -compile genesis'' does the same thing. After you have built a kernel.core with genesis, load whatever you want into it and use save.lisp to save it. Check out .../tools/worldload.lisp for details about how to turn on the garbage collector, etc. .../tools/mk-lisp is a handy script that sets up some stuff and then loads worldload.lisp. You can do handy things like ``.../tools/mk-lisp alpha :no-hemlock :no-clx :no-pcl'' to build a core with no hemlock, clx, or pcl. But mk-lisp expects your paths to be set up exactly as we have here. Note: if you do the save-lisp inside a loaded file, be sure to load the file with ``(load (open "foo.lisp"))'' and not just ``(load "foo.lisp")'' because the WITH-OPEN-FILE inside of LOAD will try to close foo.lisp in the restored core even though it wasn't opened, causing all sorts of confusion. If you move to a version 16 core, there is a new tool ``.../tools/config'' that prompts you for the various pieces you want to load and builds the core for you. Also, the version 16 cores do not turn off the garbage collector for the duration of compiling a single function. Instead they multiply *BYTES-CONSED-BETWEEN-GCS* by 4, so you won't loose when trying to compile huge functions. For details as to what changes went into the 16 series, check out beta-release-notes.txt in our FTP area. If you have any more questions, comments, whatevers, send us mail. -William Lott CMU Common Lisp Group