Subject: Re: road map for new immigrants?
To: Julian Coleman <J.D.Coleman@newcastle.ac.uk>
From: Richard Earnshaw <rearnsha@arm.com>
List: current-users
Date: 09/15/1998 13:17:58
> Richard Earnshaw wrote:
> AFAIK, it doesn't contain 'the main entry points for bootstrapping'.  

That's not what seebs@plethora.net (sorry don't know the name) suggested:
	>> I think (the first time only, luckily) you have to go into
	>> /usr/src/domestic, find the directory with all the compile_foo* 
	>> in it, and run 'make && make install' there.

> If
> you have no domestic directory, the source tree will build without it.  If,
> however, you do have a domestic directory, and try to upgrade from 1.3 to
> -current (and possibly other cases), it appears that you will run into this
> problem when upgrading the binaries that are built from the domestic tree.
> 
I have managed to build things, sort of.  But it was far from automatic.

> 
> > No wonder I've found it such a pain to try and get things bootstrapped.
> 
> What problem are/were you having?  I've gone from 1.3.2 to -current (June
> sometime) and then to -current (Sep 05) without major problems on an Atari
> (without domestic).
> 

Several, actually (this is for an arm32 build, but I don't think it is any 
way port specific):

1) Since it was a first time build, the last thing I wanted was to blow 
away my known working installation until I was happy that I could get a 
-current to work.  A wise choice, since I still haven't managed to do 
this, though this is probably as much due to lack of time on my part as to 
real problems now.

2) There is no (single) document that describes building the NetBSD source 
from scratch

3) It therefore took a while to find the DESTDIR variable.

3a) The fact that you can't set DESTDIR in /etc/mk.conf (or $MAKECONF) 
because that file isn't always included before DESTDIR is first used -- so 
you have to set it on the command line.

4) I wanted to put the install for the build onto a spare disk (that way I 
could then boot from that disk to see if it all worked -- see 1 above).  
To do this I mounted the empty disk on /mnt and set DESTDIR to that.

5) The fact that the new disk had no directory structure on it immediately 
caused "make includes" to barf.  Had to spend an eternity looking for this 
one (eventually found the "distribution" rule in src/etc/Makefile -- why 
isn't this mirrored into the top-level makefile with a special rule?).

6) The fact that make picks up /usr/share/mk implicitly, which does not 
contain all the needed rules for building the -current sources.  However, 
the new rules (in src/share/mk) invoke commands with options that don't 
exist in the 1.3 release -- the biggest culprits are ld when building 
shared libraries and lint.

7) The fact that you keep having to install parts that have just been 
built before you can build the next stage.  This means that the build can 
only be done as a single step if you are root.  I really want to do the 
compilation as a non-root task and then finally do an install as root once 
the compiling is complete.

8) The fact that when I started all this, my installation was on a SCSI 
disk with an Acorn SCSI podule card (read no DMA and a maximum throughput 
of around 600Kb/s) -- OK this isn't a fault I expect anyone to fix :-(



There have been other problems, but they were largely self-inflicted -- 
such as trying to use a development version of egcs sucked directly from 
the Cygnus repository (the main reason I want to do all of this is to test 
out the compiler).

I suspect that a large number of the above would have to be fixed to make 
a cross-build system work cleanly.

Richard