Subject: Re: Updating an existing system?
To: Paul Mather <paul@gromit.dlib.vt.edu>
From: Luke Mewburn <lukem@netbsd.org>
List: port-alpha
Date: 12/15/2002 23:11:01
On Thu, Dec 12, 2002 at 01:01:15PM -0500, Paul Mather wrote:
  | On Thu, Dec 12, 2002 at 10:45:25AM +1100, Luke Mewburn wrote:
  | 
  | =>   | or is the recommended way to update an existing -current to
  | =>   | "build.sh" to some DESTDIR and then pax the contents of that DESTDIR
  | =>   | over your existing / after it's finished successfully?
  | => 
  | => Currently, the easiest method for that situation is to build into
  | => $DESTDIR, and then run
  | => 	cd /usr/src/distrib/sets
  | => 	nbmake-$MACHINE maketars
  | => and then extract the tar files in $RELEASEDIR/binary/sets into /
  | => (except etc.tgz, unless you want to overwrite your local config :)
  | 
  | Thanks for the info!  As someone who recently hosed his native compiler
  | during a recent "build.sh" upgrade (only to be rescued by re-installing
  | the "comp" set from a recent snapshot), I much appreciate anything that
  | will mitigate catastrophic build failure/complications. :-)
  | 
  | Just one quick question, though: is the above sequence of commands you
  | give equivalent to "build.sh -R /some/destdir"?  Or, is building a
  | release something different?  (I got the impression that building a
  | release involved building a distribution ["build.sh -d"] and then
  | converting that into installable tarballs.)

Building a release is a different operation.
A "make release" in usr/src effectively does:
	make build
	(cd etc ; make release)

The latter can be broken into components:
	make distribution	# populates $DESTDIR/etc
	make snap_kern		# builds all the kernels
	(cd ../distrib ; make && make release)
				# build install media, kernels, (etc)
	(cd ../distrib/sets ; make sets
				# build the sets


What I described effectively just does the "make build" and then the
"make sets".  For that to succeed, you probably have to do
"cd /usr/src/etc && make install-etc-files" first. 

Note that I have added a new feature which removes the need to build
the tar files and extract them; if you do
	cd /usr/src/distrib/sets ; make INSTALLDIR=/ installsets
after the "make build", it will copy the files in $DESTDIR to
$INSTALLDIR (`/' in this case) that would have been updated if you
extracted the sets "base comp games man misc text" (but NOT "etc").


Luke.