ab3@stat-l (Rsk the Wombat) (06/25/84)
Here's some notes I made while installing S under 4.2; these changes seem to make life somewhat simpler, so I thought I'd share them and ask for comments for other folks out there. Many of these ideas came from Mike Meyer @ uwstat; The steps that he recommended are flagged with an "MM" below. Conventions: ~ is S's home directory. 1. Things to do before you generate the system. 1a. Get the 4.1c-under-4.2 f77 compiler, and install it. I built it in ~/sf77. It comes with its own (simple) instructions and came up with no problem. You will need to edit ~/sf77/f77/drivedefs to define the places where you will stash the driver and compiler phases; I used ~/sf77/bin and ~/sf77/lib. You'll end up (after you delete .o's, etc.) with the following files: ~/sf77/bin/sf77 ~/sf77/lib/of77pass1 ~/sf77/lib/of1 ~/sf77/lib/oc2 1b. Make the yacc that came with S. You'll need to edit ~/src/yacc/files to change the directory names to reflect where "~" really is. Make yacc. [MM] 1c. Make the m4 that came with S. First of all, force it to use the yacc created in 1b by adding the following line to ~/src/m4/makefile: YACC=~/src/yacc/yacc Then make m4. It leaves the output in "a.out", so mv it to "m4". [MM] 2. Fixing S's makefiles to use all this hard work from step 1. 2a. Change ~/cmd/makehead; define f77 as f77=$${SHOME}/sf77/bin/sf77 and m4 as m4=$${SHOME}/src/m4/m4 [MM] It turns out that S likes to throw this file (~/cmd/makehead) onto the beginning of every makefile it uses, so this changes the definition universally. 2b. Change ~/adm/cmd/MAKEm4 so that it uses the new m4 when it tests "m4" to find out if it can handle certain constructions. To do this, change "m4" to "~/src/m4/m4". 3. Telling S where is lives (directories, operating system, and so on). 3a. In the file ~/ENVIRONMENT, make sure that: OpSys=Berkeley [MM] and make sure you have defined "SHOME" to point to S's home directory. 3b. In the file ~/newfun/include/u/mach.m, make sure that: OpSys=Berkeley Change the line define(`F77_MAIN',`MAIN_') to define(`F77_MAIN',`MAIN__') [MM] and add the line: define(`SHOME',`/userb/s') [MM] (I don't know why you add this; ask Mike Meyer!) Also, change the definition of MAX_FILE_NAME_LEN to 255 (rather than 14). [MM] 4. Optional things that may help later. 4a. In ~/adm/cmd/SYSGEN, delete the "-s" flag on the make command; this will keep make from being quiet, and might help if make dies somewhere. 4b. In ~/cmd/MAKE, delete the "-s" flag on the make command. 4c. Backup the following files, in case something weird happens: ~/adm/cmd/LOGFILE ~/adm/cmd/SOLUTION ~/adm/cmd/LOGCOUNT 4d. Fix the file ~/cmd/editor so that the (possible) spurious ":" is deleted; I also changed the editor-to-use to "vi" instead of "ed". [MM] 5. Deciding what to include in S; and that nasty blit! 5a. Copy the file ~/src/main/big.list to ~/src/main/infun.list; this will cause S to load everything in together in the main executable. This is sort of a local decision; on our 11/780, it creates a 1.16 Mbyte binary. 5b. Edit the file ~/src/main/stop.list so that it contains the line "blit". [MM] I also included a line "blitid", since that function appeared in the "infun.list" mentioned above. 6. Building S. 6a. Change to ~/adm/cmd. Type "SYSGEN", or if you want to see what happens later, "SYSGEN | tee -a a-file-somewhere-which-logs-everything". 6b. When SYSGEN finally finished (the next day, usually), edit ~/S to delete the line that includes a check for a writable directory; or comment it out. [MM] 6c. Make sure that you run "~/adm/cmd/DOTEST ALL"; it's one way of checking the whole process. Don't worry if the test files and standard files don't *exactly* match; this is allowable for two reasons: 1. The precision of the machines may not be the same. 2. It looks like the commands are run with time(1) used; and the System V and 4.2BSD time(1) commands produce different output. -- Rsk the Wombat UUCP: { decvax, ihnp4, uiucdcs, ucbvax } !pur-ee!rsk { decwrl, hplabs, psuvax1 } !purdue!rsk "Hey, has anybody seen a ghost?"