Home | History | Annotate | Line # | Download | only in src
UPDATING revision 1.135
      1 $NetBSD: UPDATING,v 1.135 2005/02/11 17:50:13 jmc Exp $
      2 
      3 This file (UPDATING) is intended to be a brief reference to recent
      4 changes that might cause problems in the build process, and a guide for
      5 what to do if something doesn't work.
      6 
      7 For a more detailed description of the recommended way to build NetBSD
      8 using build.sh, see the BUILDING file.
      9 
     10 Note that much of the advice in this UPDATING file was written before
     11 build.sh existed.  Nevertheless, the advice here may be useful for
     12 working around specific problems with build.sh.
     13 
     14 See also: BUILDING, build.sh, Makefile.
     15 
     16 Recent changes:
     17 ^^^^^^^^^^^^^^^
     18 20050211:
     19 	Fixes to tools/Makefile.gnuhost may cause UPDATE=1 builds in
     20 	some of the cross tools to fail if they use configure. Some configure's
     21 	cache the environment passed in and notice the new environment is
     22 	different and abort. Doing a clean in tools/ should be enough to
     23 	make a build continue.
     24 
     25 20050109:
     26 	Since su is using pam by default now, make sure that you have
     27 	/etc/pam.d populated (postinstall will do that automatically
     28 	for you). Otherwise su will fail open (i.e. will not require
     29 	a password).
     30 
     31 20041229:
     32 	Make had a path resolution bug that manifested itself as not
     33 	being able to install openpam.3. This bug has been fixed, but
     34 	you might need to rebuild make manually first to get through
     35 	the build.
     36 
     37 20041201:
     38 	Userland programs have been changed to use /dev/bpf instead of
     39 	/dev/bpfX. You need to create that device by installing a new
     40 	MAKEDEV and running it, or mv /dev/bpf0 /dev/bpf && rm /dev/bpf[0-9]*
     41 
     42 20041006:
     43 
     44 	A bug was introduced into /bin/sh (var.c rev 1.35) which causes
     45 	variables to not export correctly to subshells in all cases. This
     46 	will cause builds to break if that version of /bin/sh is installed
     47 	on the system. The proper version of /bin/sh can be verified with:
     48 
     49         ident /bin/sh | grep var
     50 
     51 	Any /bin/sh w. version 1.35 will not work and needs to be updated
     52 	before attempting a build.
     53 	
     54 20041001:
     55 	The ipfilter kernel sources moved from sys/netinet to
     56 	dist/sys/ipf/netinet. Due to the move some Makefile
     57 	dependencies are now dangling requiring a make cleandir
     58 	before they work again (kdump, ktruss, rescue, ipf, and
     59 	ftp-proxy are the victims).
     60 
     61 20040715:
     62 	The rc.d/sendmail script now uses a heuristic to determine
     63 	if sendmail should be started at boot time.  It checks the
     64 	contents of /etc/mailer.conf, /etc/mail/submit.cf, and the
     65 	owner and mode of the sendmail binary to see if any changes
     66 	to the mail infrastructure have been made.  If no changes
     67 	are detected, it will start an SMTP listener.
     68 
     69 	Setting sendmail=NO in /etc/rc.conf will override this.
     70 
     71 	If you are only using sendmail by default and only for
     72 	local delivery, it is important that you also update your
     73 	sendmail.cf so that the SMTP listener only listens on the
     74 	loopback interface.
     75 
     76 20040715:
     77 	The method by which athhal-elf.o gets pulled into i386
     78 	kernel builds has been changed again.  The latest version
     79 	of bsd.files.mk is no longer required.
     80 
     81 20040621:
     82 	Due to the recent rototill of tools/compat it's crucial one starts
     83 	from a clean objdir under tools/*.
     84 
     85 	This is mostly due to generated files (yacc and lex sources) needing
     86 	to be generated with new rules from bsd.hostprog.mk.
     87 
     88 	The safest course is to rm -rf all objects under tools before building.
     89 
     90 20040516:
     91 	The end-user modifiable X11 configuration has been moved
     92 	from /usr/X11R6/lib/X11/<dir> to /etc/X11/<dir>.
     93 	Ensure that src and xsrc is up to date, and run
     94 	"make cleandir" in src/x11 before your next build.
     95 
     96 	postinstall currently doesn't migrate the files from
     97 	/usr/X11R6/lib/X11/* to /etc/X11/* although it does
     98 	detect that this needs to occur, so you'll have to
     99 	manually move these files yourself.
    100 
    101 20040426:
    102 	Support for the original dynamic sysctl node structure has
    103 	been removed in favor of the newer layout.  This affects
    104 	consumers of the create and delete interface, as well as
    105 	the dynamic discovery mechanism.  This is believed only to
    106 	be the sysctl(8) binary itself, at this point in time, so
    107 	the only effect of this should be that a sysctl binary
    108 	built from sources dated between 2003/12/04 and 2004/03/24
    109 	will not work on a kernel built from sources dated after
    110 	2004/04/25.  If you need a new sysctl binary but build.sh
    111 	does not work, make sure that your revision of
    112 	src/sys/sys/sysctl.h is 1.112 (or later), and then the
    113 	do the following:
    114 
    115 	cd /usr/src (or wherever your source tree is)
    116 	make USETOOLS=no includes
    117 	cd lib/libc
    118 	make USETOOLS=no dependall install
    119 	cd ../../sbin/sysctl
    120 	make USETOOLS=no dependall install
    121 
    122 	If you are using older sysctl binary, GNU autoconf would fail to
    123 	identify your machine architecture, and tries to build binary for
    124 	"unknown-unknown-netbsd20F" or something like that.  if that happens,
    125 	make sure to follow the above steps.
    126 
    127 20040425:
    128 	The ffs superblock issues listed below under 20040109 and 20030402
    129 	are now automatically addressed by the /etc/rc.d/fixsb script or by
    130 	sysinst when it checks a a filesystem. The manual fsck_ffs -b16 -c4
    131 	invocation mentioned below will continue to work and is now
    132 	automated by those scripts.  Note that under certain circumstances,
    133 	affected filesystems upgraded to a -current kernel first before
    134 	upgrading their userland with the fixsb and fsck_ffs fixes may
    135 	encounter a 'freeing free inode' panic when writing to the affected
    136 	filesystem, so it is a good idea to repair the filesystem as soon as
    137 	possible.  For more details on the fixsb script, see pr install/25138.
    138 
    139 20040418:
    140 	statfs(2) and friends have been replaced with statvfs(2). Before
    141 	installing a newly build userland make sure that you are running
    142 	a newly built kernel with COMPAT_20 set. In addition your libc
    143 	build might not work (undefined SYS_statfs symbol) because make
    144 	clean does not know how to remove files it does not know about
    145 	anymore. Manually remove all generated .S sources and objects
    146 	from the libc build directory.
    147 
    148 20040326:
    149 	The method by which athhal-elf.o gets pulled into i386 kernel builds
    150 	has been changed. The file is now stored as a uuencoded file in CVS
    151 	and the generated Makefile will use the new .uue rules from bsd.file.mk
    152 	to build it.
    153 
    154 	This means you must have the latest bsd.files.mk installed when
    155 	building a kernel without USETOOLS=yes.
    156 
    157 20040318:
    158 	A bug in the cgd(4) blowfish code was corrected, without
    159 	provision of backwards compatibility, after several public
    160 	notices over several months. Users of cgd with blowfish cipher
    161 	ONLY must dump their data before updating their kernels, and
    162 	recreate cgd's and restore data using the new kernel. See
    163 	(recent message to current-users, URL when mail-index has updated)
    164 
    165 20040313:
    166 	On acorn32, the opms and qms drivers have been withdrawn, and
    167 	the old wsqms driver is now called qms.  Kernel config files
    168 	will need updating.  See the ones in sys/arch/acorn32/conf
    169 	for examples.
    170 
    171 20040125:
    172 	On acorn32, the beep and sysbeep devices are no longer
    173 	needed, and will need to be deleted from kernel configuration
    174 	files.
    175 
    176 20040109:
    177 	Compatibility for old ffs superblock layouts has been
    178 	added, and the restrictive fsck checks have been reenabled
    179 	when using those layouts.  If you have been using -current
    180 	since 20030402, you may find that fsck again signals fatal
    181 	superblock mismatches.  To repair, make sure you have
    182 	an updated fsck_ffs and then you can use fsck_ffs -b 16 -c 4
    183 	to complete the filesystem upgrade.  A message has
    184 	been added to the kernel which should detect this problem.
    185 	See the following discussion for more information:
    186 	http://mail-index.NetBSD.org/current-users/2004/01/11/0022.html
    187 
    188 20031203:
    189 	New binutils builds may fail due to old dependencies.
    190 	It's necessary to "make cleandir" to ensure that
    191 	the dependencies will be rebuilt correctly.
    192 
    193 20031111:
    194 	A newer mkdep is needed.  Error noting that is
    195 		cc: Ambiguous abbreviation --
    196 
    197 20031008:
    198 	/usr/include/sys/disklabel_mbr.h was removed.
    199 	It's necessary to "make cleandir" to ensure that
    200 	the dependencies will be rebuilt correctly.
    201 
    202 20031007:
    203 	A sign exension bug was fixed which set all the high bits
    204 	of our newly expanded ffs fs_flags.  This should only
    205 	affect users who installed or upgraded in September of 2003.
    206 	A small utility program was posted to tech-kern which
    207 	should fix this problem, and a warning message was added
    208 	to the kernel which should discover and warn about it.  See
    209 	http://mail-index.NetBSD.org/tech-kern/2003/10/07/0005.html
    210 
    211 20030906:
    212 	With the addition of siginfo support the old signal trampoline
    213 	code has been deprecated to COMPAT_16. Make sure that your running
    214 	kernel has COMPAT_16 enabled before building userland.
    215 
    216 20030801:
    217 	With the new openssl, there is some header and library shuffling.
    218 	rm -f /usr/include/des.h /usr/include/kerberosIV/* /lib/libdes* \
    219 	/usr/lib/libdes* before building.
    220 
    221 20030703:
    222 	Texinfo was updated to 4.6.  To avoid failures when trying to
    223 	build the included texinfo files, do:
    224 
    225 	cd src/gnu/usr.bin/texinfo
    226 	make MKINFO=no dependall install
    227 
    228 20030630:
    229 	Groff was updated to 1.19; it's probably necessary to do
    230 		cd share/mk && make install
    231 		cd src/gnu/usr.bin/groff
    232 		make MKMAN=no dependall install
    233 	(untested).
    234 
    235 20030516:
    236 	Due to bugs in the export handling code, invalid export lines
    237 	were accepted before and caused the kernel to panic when
    238 	mountd got restarted because it freed memory that had already
    239 	been freed. This has been fixed and the kernel checks
    240 	export addresses very strictly. If you upgrade your kernel,
    241 	make sure you also upgrade mountd, because if your export
    242 	file contains lines with an old inet4 address syntax (i.e.
    243 	a.b.c or a.b or a), they will get rejected by the new kernel.
    244 
    245 20030402:
    246 	The superblock layout for FFS was changed.  If you have 1.6
    247 	fsck binaries, they will signal a fatal superblock mismatch
    248 	with the first alternate, because they compare too many
    249 	fields (even ones that aren't useful).  If possible, upgrade
    250 	your fsck_ffs binary before using a new kernel.
    251 	None of this signals actual filesystem damage.
    252 
    253 20030324:
    254 	sendmail version 8.12.8 was imported.  Since sendmail is
    255 	now setgid to the smmsp group, and runs in "collection"
    256 	mode for most common activities, there is a new config
    257 	file called submit.cf that needs to live in /etc/mail.
    258 	The generic submit.cf sample in /usr/share/sendmail/cf
    259 	is named netbsd-msp.cf.  Upgrading your regular sendmail
    260 	configuration file is also strongly advised.
    261 
    262 	See the section named "MESSAGE SUBMISSION PROGRAM" in
    263 	the updated /usr/share/sendmail/README file for more
    264 	information.
    265 
    266 20030117:
    267 	Texinfo was updated to 4.3.  To avoid failures when trying to
    268 	build the included texinfo files, do:
    269 
    270 	cd src/gnu/usr.bin/texinfo
    271 	make MKINFO=no dependall install
    272 
    273 20021223:
    274 	The METALOG format changed slightly, to remove the leading
    275 	"${DESTDIR}" from path names.
    276 	This only affects people building with UNPRIVED.
    277 	For complete safety, remove the DESTDIR entirely and
    278 	update tools/mtree, before running make build.
    279 
    280 20021219:
    281 	CVS repository layout was changed.  See the following for details
    282 	if you are using (anonymous) cvs to update your tree.
    283 
    284 	http://mail-index.NetBSD.org/netbsd-announce/2002/12/19/0000.html
    285 
    286 20021219:
    287 	install(1) had a '-N dbdir' option added, to specify an
    288 	alternate location to look up users & groups (instead
    289 	of the host system passwd(5) and group(5) databases).
    290 
    291 	The build system was modified to take advantage of
    292 	this option (using ${NETBSDSRCDIR}/etc), so if you
    293 	use USETOOLS==no, you may have to rebuild and
    294 	reinstall usr.bin/xinstall first.
    295 
    296 20021130:
    297 	fparseln(3) moved from libutil to libc.
    298 	If building to DESTDIR=/, reinstall the includes
    299 	and rebuild libc:
    300 		make includes
    301 		make do-lib-libc
    302 	If using build.sh, "cd tools/compat && make clean"
    303 	before rebuilding the tools.
    304 
    305 20021126:
    306 	The mk.conf(5) variable SYS_INCLUDE has been deprecated,
    307 	including the optional "SYS_INCLUDE=symlinks" support.
    308 	All header files, including <sys/*.h> are copied into
    309 	/usr/include.
    310 
    311 20021121:
    312 	The C run-time support files crtbegin.o and crtend.o
    313 	(and their companions crtbeginS.o and crtendS.o) were
    314 	split up, with new crti.o and crtn.o files resulting.
    315 	This means that libtool needs to be rebuilt once the
    316 	new libraries are installed.  The process of rebuilding
    317 	libtool will cause it to automatically notice the new
    318 	required files, but it *must* be rebuilt in order to
    319 	do this.
    320 
    321 	An out-of-date libtool will result in shared libraries
    322 	which lack _init() and _fini() routines, which means that
    323 	their global contructors/destructors will not be invoked.
    324 
    325 20021121:
    326 	A bug related to how ARM ELF objects were tagged has been
    327 	corrected.
    328 
    329 	NetBSD ARM ELF uses the soft-VFP floating point model by
    330 	default.  However, the assembler lacked support for marking
    331 	objects as using the VFP floating point format, and the
    332 	compiler was not properly passing the flag indicating "soft-VFP"
    333 	to the assembler.
    334 
    335 	Unfortunately, this means that the linker will now consider
    336 	old (i.e. not marked "softvfp") NetBSD ARM ELF objects to be
    337 	incompatible with new (properly marked) objects.
    338 
    339 	The problem will only manifest itself if you attempt to compile
    340 	a new program using the fixed toolchain, and link that program
    341 	against old libraries which do not have the proper "softvfp"
    342 	markings.  ALL OF YOUR EXISTING BINARIES AND SHARED LIBRARIES
    343 	WILL CONTINUE TO WORK PROPERLY.
    344 
    345 	The only work-around for the problem is to recompile all of
    346 	the libraries on the system.  The easiest way to do this for
    347 	system libraries is to install a binary snapshot; they are
    348 	generally available on releng.NetBSD.org.  Any packages you
    349 	have installed which supply libraries will have to be recompiled
    350 	if you wish to link new programs against those libraries.
    351 
    352 	If you have questions about this matter, please contact
    353 	port-arm (a] NetBSD.org.
    354 
    355 20021011:
    356 	Systrace has been improved to support privilege elevation.
    357 	Updating the kernel requires the userland part of systrace
    358 	to be rebuilt.
    359 
    360 20021010:
    361 	The config(8) grammar was changed to allow options to register
    362 	dependencies on attributes, as well as other options.  Users
    363 	must update and reinstall usr.sbin/config before building a new
    364 	kernel.
    365 
    366 20021009:
    367 	A new attribute dependency syntax was introduced to config(8),
    368 	which is now used by the SCSI configuration description.  Users
    369 	must update and reinstall usr.sbin/config before building a new
    370 	kernel.
    371 
    372 20021003:
    373 	Several changes have been made to the autoconfiguration
    374 	framework.  Users must update and reinstall usr.sbin/config
    375 	before building a new kernel.
    376 
    377 20021001:
    378 	The i386mp branch has been merged.  To compile a kernel, users
    379 	will need to add the option 'cpu* at mainbus?' to their configuration
    380 	file.  Multiprocessor kernels will need
    381 	ioapic*		at mainbus? apid ?
    382 	options		MULTIPROCESSOR
    383 	options		COM_MPLOCK
    384 
    385 20020922:
    386 	MKDYNAMICROOT=yes enabled by default, which means that
    387 	certain shared libraries are installed into /lib, the shared
    388 	linker is installed into /libexec, and all programs in /bin
    389 	and /sbin are dynamically linked.
    390 	If you do not use "make build", you should ensure that
    391 	you have the libraries and shared linker in the new locations,
    392 	with:
    393 		make do-lib-csu do-lib-libc do-lib do-gnu-lib do-ld.elf_so
    394 
    395 20020917:
    396 	USE_NEW_TOOLCHAIN has been replaced with:
    397 	    -	TOOLCHAIN_MISSING -- set to "yes" on platforms for which
    398 		there is no working in-tree toolchain (hppa, ns32k, sh5,
    399 		x86_64).
    400 	    -	EXTERNAL_TOOLCHAIN -- if defined by the user, points to the
    401 		root of an external toolchain (e.g. /usr/local/gnu).  This
    402 		enables the cross-build framework even for TOOLCHAIN_MISSING
    403 		platforms.
    404 
    405 20020906:
    406 	gehenna-devsw has been merged into the trunk. Need to update and
    407 	reinstall usr.sbin/config before building the kernel.
    408 
    409 20020822:
    410 	Crunched rescue tools (contents of /bin and /sbin, plus others)
    411 	are now provided in /rescue.
    412 
    413 	To ensure that these are built statically linked (no matter
    414 	what the setting of LDSTATIC is), use a crunchgen(1) built
    415 	from sources newer than 20020820 (see the next entry).
    416 
    417 20020820:
    418 	crunchgen(1) changed to ensure that the generated program
    419 	is statically linked.
    420 
    421 	Solution: update and reinstall usr.bin/crunch
    422 
    423 20020605:
    424 	smmsp user/group has been added for sendmail.
    425 
    426 	Add the following into /etc/group:
    427 
    428 	smmsp:*:17:
    429 
    430 	and the following to /etc/master.passwd (via vipw):
    431 
    432 	smmsp:*:17:17::0:0:Sendmail Message Submission Program:/nonexistent:/sbin/nologin
    433 
    434 20020515:
    435 	sshd user/group has been added.  Need to hand add this in, or sshd
    436 	will not let you log in (with default, or UsePrivlegeSeparation=yes)
    437 
    438 	Add the following into /etc/group:
    439 
    440 	sshd:*:16:
    441 
    442 	and the following to /etc/master.passwd (via vipw):
    443 
    444 	sshd:*:16:16::0:0:& pseudo-user:/var/chroot/sshd:/sbin/nologin
    445 	
    446 	Also /var/chroot/sshd directory needs to be present (digged as part of
    447 	the build process).
    448 
    449 20020426:
    450 	NBUILDJOBS obsoleted in favor of just using -j.
    451 
    452 20020426:
    453 	etc/postinstall added, which performs various checks for 
    454 	configuration file updates and changes, and can fix most of
    455 	the problems identified.
    456 	This should make it much easier to upgrade a system's
    457 	configuration from earlier systems (as far back as NetBSD 1.5).
    458 
    459 20020320:
    460 	<bsd.lib.mk> needs a new install(1) for its "-a cmd" support.
    461 	Build and install at usr.bin/xinstall before the build.
    462 
    463 20020319:
    464 	Raw IPv6 socket now makes strict checking for sa_family and sa_len
    465 	on send(2) operation.  Be sure to have sbin/rtsol and usr.sbin/rtsold
    466 	newer than November 2001 when you upgrade the kernel.
    467 
    468 20020311:
    469 	ssh configuration files were moved from /etc to /etc/ssh.  Beware
    470 	if you restart your machine from remote.  Note that sshd.conf needs
    471 	to be changed (due to the use of "/etc" inside).
    472 
    473 20020223:
    474 	Users of the VAX port will need to rebuild and install gas
    475 	so it deal with the now present register prefix used in all
    476 	the VAX assembly files.
    477 
    478 20020118:
    479 	ntpd user/group has been added.  Need to hand add this in or builds
    480 	will break as mtree aborts early.
    481 
    482 	Add the following into /etc/group:
    483 
    484 	ntpd:*:15:
    485 
    486 	and the following to /etc/master.passwd (via vipw):
    487 
    488 	ntpd:*:15:15::0:0:Ntpd pseudo-user:/var/chroot/ntpd:/sbin/nologin
    489 
    490 20011207:
    491 	If you're attempting to build a snapshot on sparc64 and are getting
    492 	reloc errors from the toolchain groff binary this means your native
    493 	toolchain has some broken C++ bits.
    494 
    495 	To fix:
    496 
    497 	Build a new toolchain (i.e. build.sh -t)
    498 	Use the new toolchain to build and install natively (i.e. /usr/lib)
    499 
    500 	gnu/lib/libgcc
    501 	gnu/lib/libstdc++
    502 
    503 	After this a snapshot will be able to be built.
    504 
    505 20011201:
    506 	In order for a sparc64 build to work you must have a working awk. If
    507 	you've built and installed a system with the new toolchain up to this
    508 	point you do not have a working awk as its ability to do floating
    509 	point is broken. 
    510 
    511 	To build:
    512 
    513 	remake and install gnu/lib/libgcc
    514 	remake and install gnu/usr.bin/gawk into /usr/bin (make sure it links
    515 	against the new libgcc.a)
    516 
    517 20011128:
    518 	Kernel config information was changed to use defflag in
    519 	the various "files" files.  Bug fixes to config(8) are
    520 	required in order for this to work properly.  Make sure
    521 	to build and install in usr.sbin/config before attempting
    522 	to build a new kernel.
    523 
    524 20011030:
    525 	libc/locale/wcstod.c now needs new lint(1). Update lint(1)
    526 	before building libc.
    527 
    528 20011029:
    529 	The new document BUILDING.mdoc (view with nroff | more, or
    530 	see pre-generated .txt and .html versions) describes the build
    531 	procedure in great detail.  BUILDING, and the USE_NEW_TOOLCHAIN
    532 	build process, are intended in the long run to replace this
    533 	manual update log.
    534 
    535 	Users building a USE_NEW_TOOLCHAIN system should read the
    536 	BUILDING document for caveats.  Generally, BUILDING supersedes
    537 	UPDATING for these systems, as tool updating is taken care of
    538 	by the new build system.
    539 
    540 20011028:
    541 	src/etc/Makefile now needs install to be able to handle
    542 	symlinks that point to nowhere. A bug in install that
    543 	prevented this was corrected.
    544 
    545 	Solution: update and reinstall usr.bin/xinstall
    546 	Better Solution: Use the new toolchain and it will just work
    547 	for you.
    548 
    549 20011006:
    550 	/etc/mtree/NetBSD.dist has been updated to take advantage of
    551 	absolute path support added to mtree(8). Older mtree(8)s don't
    552 	understand the format.
    553 
    554 	Solution: update and reinstall usr.sbin/mtree
    555 
    556 20011004:
    557 	Crunchgen has been updated to work via reach-over makefiles. Updating
    558 	is suggested before running a snapshot build
    559 
    560 20010915:
    561 	The new "ubcperf" code committed by Chuck Silvers removed
    562 	a header file, uvm/uvm_vnode.h.  There may be stale .depend
    563 	files that still reference this file.
    564 
    565 	Solution: "make cleandir && make dependall" in affected
    566 	directories.
    567 
    568 20010803:
    569 	grep.info is now built from grep.texi using makeinfo.  Since it
    570 	requires makeinfo v4.0, you need to install new texinfo before
    571 	building gnu/usr.bin/grep.  To install new texinfo, please follow
    572 	the instruction described in 20010726 entry.
    573 
    574 20010803: 
    575 	(i386 only): i386 kernel now uses new instructions like
    576 	`fxsave' which old gas doesn't understand.  To build the
    577 	kernel successfully, you need to build and install a new toolchain, 
    578 	(i.e., build.sh -t) or 	(temporarily) comment out "options I686_CPU" 
    579 	from your kernel configuration until you rebuild your userland.
    580 	See 20011029 above and BUILDING file in this directory for more information.
    581 	[updated 20020630 since i386 gas moved when USE_NEW_TOOLCHAIN enabled]
    582 
    583 20010731:
    584 	Bootloader update on ELF platforms.  DDB in kernels from before
    585 	this will be unable to read symbol tables provided by newer
    586 	bootloaders.
    587 
    588 20010726:
    589 	Texinfo was updated to 4.0.  To avoid failures when trying to
    590 	build the included texinfo files, do:
    591 
    592 	cd src/gnu/usr.bin/texinfo
    593 	make MKINFO=no dependall install
    594 
    595 20010718:
    596 	Enabled correct .init/.fini processing in crt0.  The way this
    597 	was done was to change a -I directive to cc(1), which means
    598 	make(1) will have a stale dependency (it will be checking the
    599 	timestamp on the wrong "dot_init.h").
    600 
    601 	The symptom you will see is that new programs die with SIGSEGV
    602 	if you have a stale dependency.
    603 
    604 	Solution: "make cleandir" in both lib/csu and libexec/ld.elf_so
    605 	before starting your build.
    606 
    607 20010628:
    608 	A construct was added to uvm_page.h that uncovered a bug
    609 	in lint(1).  If you get a warning/error about a non-portable
    610 	bitfield, update your lint(1) before proceeding.
    611 
    612 20010226:
    613 	Added named user/group to system. Need to hand add this in or builds
    614 	will break as mtree aborts early.
    615 
    616 	To work around add by hand:
    617 
    618 	named:*:14:
    619 
    620 	to /etc/group and add:
    621 
    622 	named:*:14:14::0:0:Named pseudo-user:/var/named:/sbin/nologin
    623 
    624 	to master.passwd (use vipw for instance if doing by hand).
    625 
    626 	Now a make build should progress.
    627 
    628 20010219:
    629 	get/setprogname() added. Any hostprogs that may use this will need
    630 	to be bootstrapped manually until the host system is current.
    631 
    632 	Known problems: sys/arch/macppc/stand/fixcoff
    633 			usr.sbin/config (adding -DMAKE_BOOTSTRAP to
    634 			  CFLAGS and rebuilding should work)
    635 			usr.sbin/mdsetimage - Build a static copy if
    636 			  building a snapshot before fully bootstrapped.
    637 
    638 20010204:
    639 	prepare the code to compile with stricter gcc flags. in
    640 	particular start eliminating redundant declarations. Yacc
    641 	needs to be installed before make build.
    642 
    643 20010114:
    644 	introduce .if commands(target) in make(1). You need to
    645 	bring everything up-to-date first, then without installing
    646 	anything make and install in usr.bin/make, then proceed
    647 	with make build.
    648 
    649 20010101:
    650 	bsd.subdir.mk committed 20001230 had a bug which caused
    651 	afterinstall targets to run too soon; update again.
    652 
    653 20001230:
    654 	New share/mk files needed to support .WAIT in SUBDIR variables.
    655 	If you get make errors, 
    656 		(cd share/mk; make install)
    657 	Also, PRINTOBJDIR has changed and is now used more heavily.
    658 
    659 20001019:
    660 	The `ca' device driver has been replaced by `ld'; although the
    661 	major and minor numbers haven't changed, you should update your /dev
    662 	directory.
    663 
    664 20000929:
    665 	The following make directives are obsoleted.
    666 	MKCRYPTO_RSA NOCRYPTO_RSA NOCRYPTO_RC5 NOCRYPTO_IDEA 
    667 	By default, RSA is built into libcrypto.  IDEA and RC5 will not be
    668 	built into libcrypto.  By using MKCRYPTO_{RC5,IDEA}, you can build
    669 	additional library libcrypto_{idea,rc5}.
    670 
    671 
    672 Hints for a more successful build:
    673 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    674     Use build.sh, but do not use its "expert mode":
    675 	This will automatically build the tools in the
    676 	   correct order, and it will keep the tools and the
    677 	   new build products from interfering with the running
    678 	   system.  This will allow you to ignore most of the
    679 	   other advice in this file.
    680     Build a new kernel first:
    681 	This makes sure that any new system calls or features
    682 	   expected by the new userland will be present.  This
    683 	   helps to avoid critical errors when upgrading.
    684     Use object directories:
    685 	This helps to keep stale object
    686 	   files from polluting the build if a Makefile "forgets"
    687 	   about one.  It also makes it easier to clean up after
    688 	   a build.  It's also necessary if you want to use the
    689 	   same source tree for multiple machines.
    690 	   To use object directories with build.sh:
    691 	    a) invoke build.sh with the "-M" or "-O" options.
    692 	   To use object directories without using build.sh:
    693 	    a) cd /usr/src ; make cleandir
    694 	    b) Add "OBJMACHINE=yes" to /etc/mk.conf
    695 	    c) Add "MKOBJDIRS=yes" to /etc/mk.conf
    696 	    d) cd /usr/src ; make build
    697 	   Note that running "make obj" in a directory will create
    698 	   in obj.$MACHINE directory.
    699     Build to a DESTDIR:
    700 	This helps to keep old installed files (especially libraries)
    701 	   from interfering with the new build.
    702 	   To build to a DESTDIR with build.sh, use the "-D" option.
    703 	   To build to a DESTDIR without using build.sh, set the DESTDIR
    704 	   environment variable before running make build.  It should be
    705 	   set to the pathname of an initially empty directory.
    706 	   Problems: if you do not use build.sh, you might need to
    707 		update critical utilities without using DESTDIR since
    708 		nothing is executed from what is installed in DESTDIR.
    709 		(See critical utils, below.)
    710     Build often:
    711 	This keeps critical utilities current enough to not choke
    712 	on any other part of the source tree that depends on up to
    713 	date functionality.  If you use build.sh, you should not have
    714 	this problem.
    715  
    716 What to do if things don't work:
    717 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    718 When things don't work there is usually a few things that commonly
    719 should be done.
    720     1)	make includes
    721 	This should be done automatically by make build.
    722     2)  cd share/mk && make install
    723 	Again, automatically done by make build.
    724 
    725 Failsafe rebuild of a small part of the tree:
    726 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    727 To make sure you rebuild something correctly you want to do
    728 something like the following:
    729     1)  Make sure the includes and .mk files are up to date.
    730     2)  Make sure any program used to build the particular
    731 	utility is up to date.  (yacc, lex, etc...)
    732     3)  cd ...path/to/util...
    733 	make cleandir
    734 	rm ...all obj directories...
    735 	make cleandir			# yes, again
    736 	make obj
    737 	make depend && make
    738 
    739 Failsafe rebuild of the entire tree:
    740 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    741 If you really want to make sure the source tree is clean and
    742 ready for a build try the following.  Note that sourcing /etc/mk.conf
    743 (a make(1) Makefile) in this manner is not right, and will not work
    744 for anyone who uses any make(1) features in /etc/mk.conf.
    745 
    746 ---cut here---
    747 #!/bin/sh
    748 . /etc/mk.conf
    749 
    750 if [ -z $NETBSDSRCDIR ] ; then
    751     NETBSDSRCDIR=/usr/src
    752 fi
    753 if [ \! -d $NETBSDSRCDIR ] ; then
    754     echo Unable to find sources
    755     exit 1
    756 fi
    757 find $NETBSDSRCDIR -name \*.o -o -name obj.\* -o -name obj -exec rm \{\} \;
    758 
    759 if [ -z $BSDOBJDIR ] ; then
    760     BSDOBJDIR=/usr/obj
    761 fi
    762 if [ -d $BSDOBJDIR ] ; then
    763     rm -rf $BSDOBJDIR
    764 fi
    765 
    766 cd $NETBSDSRCDIR && make cleandir
    767 
    768 ---cut here---
    769 
    770 Critical utilities:
    771 ^^^^^^^^^^^^^^^^^^^
    772 	gnu/usr.bin/egcs
    773 	usr.bin/compile_et
    774 	usr.bin/make
    775 	usr.bin/yacc
    776 	usr.bin/lex
    777 	usr.bin/xlint
    778 	usr.sbin/config
    779 
    780 Other problems and possible solutions:
    781 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    782 Symptom:Unreasonable compiler errors.
    783 Fix:	Rebuild gnu/usr.bin/egcs
    784 
    785 Symptom:Complaints involving a Makefile.
    786 Fix:	Rebuild usr.bin/make:
    787 	cd usr.bin/make && make && make install
    788 	Or, a failsafe method if that doesn't work:
    789 	cd usr.bin/make && cc *.c */*.c -I . -o make && mv make /usr/bin
    790 
    791 Fix:	Make sure .mk files are up to date.
    792 	cd share/mk && make install
    793 
    794 Symptom:Kernel `config' fails to configure any kernel, including GENERIC.
    795 Fix:	Rebuild usr.sbin/config
    796 
    797 Symptom:
    798 Fix:	Rebuild usr.bin/yacc
    799 
    800 Symptom:
    801 Fix:	Rebuild usr.bin/lex
    802 
    803 Symptom:
    804 Fix:	rm /usr/lib/libbfd.a
    805 
    806 Symptom:Obsolete intermediate files are used during compilation
    807 Fix:	Try the following sequence of commands in the directory in question.
    808 	make cleandir; rm `make print-objdir`; make cleandir; make obj
    809 	(If you built the tree without "make obj" in the past, obsolete files
    810 	may remain.  The command tries to clean everything up)
    811 
    812 Symptom:.../sysinst/run.c:xx: warning: initialization from incompatible pointer type
    813 Fix:	Rebuild and install usr.bin/menuc
    814 
    815 Symptom:mklocale not found during build in share/locale/ctype
    816 Fix:	Build and install usr.bin/mklocale
    817 
    818 Symptom:undefined reference to `__assert13' or `__unsetenv13'
    819 Fix:    Rebuild and install lib/libc
    820 
    821 Symptom:usr.sbin/config fails to build.
    822 Fix:	Try building with -DMAKE_BOOTSTRAP added to CFLAGS in Makefile.
    823 
    824 Symptom:undefined reference to `getprogname' or `setprogname'
    825 Fix:    Rebuild and install lib/libc
    826 
    827 Symptom:lint does not understand the '-X' option
    828 Fix:    May need to build & install libs with NOLINT=1 before rebuilding lint
    829