Subject: RE: Rules for building "current"
To: None <current-users@sun-lamp.cs.berkeley.edu, dds@irvine.dg.com>
From: Marc Wandschneider <marcwan@microsoft.com>
List: current-users
Date: 01/10/1994 10:49:52
----------
| From: "Dennis D. Sherod"  <netmail!dds@irvine.dg.com>
|
| I apologize for having to ask this question, but I just got on the list and
| missed the discussion that is most pressing to me.  "How to build current."
|
| I've read the FAQ and picked up the sequence there and was wondering if that
| was the "up-to-date" sequence... at least for a current-kernel?

	this was posted to comp.os.386bsd.questions a few weeks
	back.  there might be some subtle differences between then
	and now, but it gives the general outline of how to proceed.

	if anybody has any obvious corrections to this, please let me
	know.


						marc 'em.


Newsgroups: comp.os.386bsd.misc,comp.os.386bsd.questions
Subject: Re: Updating to current

In article <2ej7v4INN75v@flop.engr.orst.edu>,
Jason R. Thorpe <thorpej@xanth.CS.ORST.EDU> wrote:
>Does anyone have a canned procedure for updating to current?
>
>I'd appreciate it...

	I work with NetBSD, so I will describe this for NetBSD-current.

	The following is exactly what I did to upgrade to the
	tar files from saturday morning.  I make no guarnatees
	as to it's working with anything more recent (the tar
	files are only updated every saturday morning):


	1.  There was NO /usr/src tree---Mine was completely removed/
	trashed.  This ends up being big as certain files have moved, and
	if you just copy over an old tree, things will get screwed up with
	miltiple copies of things. [okay,. I lied, keep the TOP level Makefile,
	since the current tar files don't come with it.]

	2.  I extracted the newest tar_files.

	3.  Ran the following guantlet: (I use csh)

	% setenv MACHINE_ARCH i386
	% cd /usr/src/include; make && make install
	% cd /usr/usr/share/mk; make install
	% cd /usr/src/include; make && make install # don't ask--i just did it
	% setenv LDSTATIC -static
	% setenv NOPIC
	% cd /usr/src/lib/libc; make && make install
	% cd /usr/src/gnu/lib/libmalloc; make && make install
	% cd /usr/src/gnu/usr.bin/gas; make && make install
	% cd /usr/src/gnu/usr.bin/ld; make && make install
	# Things WILL barf while building rtld (ld.so).  Just ignore
	# it and type make install (where things will barf again, because they
	# can't find ld.so :-)), and you will be okay.
	% cd /usr/src/gnu/usr.bin/gcc2; make && make install
	% unsetenv LDSTATIC NOPIC
	% cd /usr/src/lib; make && make install
	% cd /usr/src/gnu/lib; make && make install
	% cd /usr/src/gnu/usr.bin/ld; make && make install


	4.  Now, here is where things get messy.  Most suggestions
	I saw recommend now just going to /usr/src, and then
	typeing make && make install.  However, there will be a few
	barfs along the way, and you will want to rebuild the kernel.

	The top level Makefile builds things in this order:

      lib include bin libexec sbin usr.bin usr.sbin share games gnu sys

	Thus, what I did was to go to each directory, one at a time
	and build with make && make install.

	Ie (from /usr/src)

	% cd lib; make && make install
	% cd ../include; make && make install
	% ...

	AFTER building sbin, I then went and rebuilt a new kernel,
	because the 0.9 kernel has a bug which will cause extremely
	frequent kernel panics during long builds.

	TO do this, use the exact same procedure you used in 0.9 to build
	a new kernel, EXCEPT YOU MUST INSTALL A NEW CONFIG FIRST.

	Ie,

	% cd /usr/src/usr.sbin/config; make && make install
	% cd /sys/arch/i386/conf
	% $EDITOR MYCONFIGFILE
	% config MYCONFIGFILE
	% cd ../compile/MYCONFIGFILE
	% make depend && make
	% cp /netbsd /wumpus
	% cp netbsd /netbsd
	% reboot

	# AFTER REBOOTING< DON'T FORGET TO  setenv MACHINE_ARCH i386

	You can then continue building where you left off (ie
	/usr/src/usr.bin).  Please note the following (READ ALL FIRST):

	a. in usr.bin, tn3270 will not build.  I have never been
	able to get this to build, and couldn't be bothered figuring
	out how to fix it, thus, I just removed it temporarily from
	the usr.bin Makefile so that the rest would work fine. The old
	statically linked one will still be there, and (allah willing)
	should work fine.

	b. When in gnu/usr.bin/lex, things will vomit left and right. To
	get it to work, read the Makefile
	[basically, cd lib, make && make install; cd .. ; cp initscan.c
	 scan.c; make && make install]

	c. Things in share will vomit left and right, and again, I couldn't
	have been bothered to fix them up, as much of the stuff was already
	there.   After the first death in share, I just aborted, and went
	back to install the games tree.  This might not be a great idea :-)

	d. in games, if you do NOT use the obj/ stuff, (as I do not), then
	fortune will vomit during the build.  I fixed this by removing
	any obj/ from the Makefile.  Everything worked fine after
	that.



	Finally, please note the following:

	1.  Please do not attempt this if you are not patient, and willing
	to tolerate a sudden loss of a lot of data.

	2. You might want to have a copy of old binaries lying around.  I
	 trashed  up a few here and there with really stdupid moves, and
	had to get a new (old) ld and make.

	3. Kneeling towards the east before starting might help
	a little.  this stuff is quite amusing.

	4. I don't speak for the NetBSD core team, and might very well get
	flamed for being an ignorant little twip for this post.  Use at your
	own risk.


	Right now, I'm having a gas with this thing.  I just got a 1,8GB disk,
	and now, with the -current up and running, have even MORE space
	free :-)


						Marc 'em.

------------------------------------------------------------------------------