Subject: Re: make install and stuff
To: None <current-users@NetBSD.ORG>
From: der Mouse <mouse@Rodents.Montreal.QC.CA>
List: current-users
Date: 04/09/1997 18:33:06
Someone mentioned something on port-hp300 which provoked this thought.
I recently had occasion to want to do a rebuild-and-reinstall with as
little as possible. (I wanted to do a chrooted install onto a new
disk, _without_ all my private patches, so I wanted to drop in an
unpatched /usr/src and as little else as possible, then chroot to the
mount point and rebuild everything.)
In case anyone's interested, here's what I had to install to get the
build to work:
- The following executables, and the directories necessary to contain
them:
/bin/cat /usr/bin/cpio /usr/bin/rpcgen
/bin/chmod /usr/bin/cpp /usr/bin/sed
/bin/cp /usr/bin/ctags /usr/bin/size
/bin/csh /usr/bin/egrep /usr/bin/sort
/bin/date /usr/bin/find /usr/bin/strip
/bin/dd /usr/bin/flex /usr/bin/tbl
/bin/echo /usr/bin/g++ /usr/bin/tr
/bin/expr /usr/bin/gencat /usr/bin/troff
/bin/hostname /usr/bin/grep /usr/bin/tsort
/bin/ln /usr/bin/groff /usr/bin/uname
/bin/mv /usr/bin/grotty /usr/bin/wc
/bin/pax /usr/bin/install /usr/bin/which
/bin/rm /usr/bin/join /usr/bin/xargs
/bin/sh /usr/bin/ld /usr/bin/yacc
/bin/test /usr/bin/lex /usr/libexec/cpp
/bin/\[ /usr/bin/lint /usr/libexec/cc1
/dev/null /usr/bin/lorder /usr/libexec/cc1plus
/usr/bin/ar /usr/bin/m4 /usr/libexec/ld.so
/usr/bin/as /usr/bin/make /usr/libexec/lint1
/usr/bin/awk /usr/bin/mkdep /usr/libexec/lint2
/usr/bin/basename /usr/bin/nm /usr/sbin/chown
/usr/bin/bc /usr/bin/nroff /usr/sbin/mtree
/usr/bin/cap_mkdb /usr/bin/paste /usr/sbin/pwd_mkdb
/usr/bin/cc /usr/bin/printf
/usr/bin/cmp /usr/bin/ranlib
- The following libraries in /usr/lib:
libc.so.12.5
libgcc.a
libc.so.12.5
libgnumalloc.so.0.0
libm.so.0.1
libutil.so.3.2
- The following directories and their contents. (Not all of these may
have been strictly necessary - for example, only a couple of the
files in /usr/share/mk are truly _needed_ - but I was lazy. :-)
/usr/share/groff_font/devascii
/usr/share/mk
/usr/share/tmac
- In addition, I had to created /etc and /usr/games in the chroot area
(I don't understand why /usr/games didn't get created by mtree - I
need to look into that), install an /etc/group, and copy in an
/etc/master.passwd and then run a chrooted pwd_mkdb.
Having done those, I could then build by chrooting and running the
following script:
#! /bin/sh -e
cd /usr/src/etc
DESTDIR=/ make distrib-dirs
cd /usr/src
make build
cd /usr/src/etc
DESTDIR=/ make distribution
This left only the kernel and bootblocks to do by hand. Because my
patches include increasing the number of partitions per disk, the /dev
directories were incompatible, so I couldn't do anything chrooted that
required access to disk partitions other than the first 8 on sd0.
This was under 1.2; I assume current is pretty similar. :-)
I am somewhat discouraged at how large the list of necessary
executables is. It would be Really Nice (tm) if someone could come up
with a sane scheme for doing such builds with a much smaller set.
(Much of the work would probably benefit cross-builds as well, though
cross-builds have to contend with not being able to run the just-built
binaries, which was not a problem for me.)
der Mouse
mouse@rodents.montreal.qc.ca
7D C8 61 52 5D E7 2D 39 4E F1 31 3E E8 B3 27 4B