UPDATING revision 1.159
1$NetBSD: UPDATING,v 1.159 2007/03/25 16:23:04 gdt Exp $
2
3This file (UPDATING) is intended to be a brief reference to recent
4changes that might cause problems in the build process, and a guide for
5what to do if something doesn't work.
6
7For a more detailed description of the recommended way to build NetBSD
8using build.sh, see the BUILDING file.
9
10Note that much of the advice in this UPDATING file was written before
11build.sh existed.  Nevertheless, the advice here may be useful for
12working around specific problems with build.sh.
13
14See also: BUILDING, build.sh, Makefile.
15
16Recent changes:
17^^^^^^^^^^^^^^^
18
1920070319:
20        src/lib/libc/Makefile revision 1.129 broke libc and ld.elf_so
21        on many platforms due to incorrect flags settings.  If you
22        updated and built after about 20070315, do "nbmake-$arch
23	cleandir" in src/lib/libc and src/libexec/ld.elf_so to force a
24	rebuild of object files that might have been built
25	incorrectly, and ensure that you have at least
26	src/lib/libc/Makefile 1.130.
27
2820070210: 
29        src/sys/sys/{sa.h,savar.h} were removed.
30          find ${OBJDIR} \( -name .depend -o -name '*.d' \) -print \
31              | xargs egrep -l '/sa.h|/savar.h' | xargs rm
32        will allow dependencies on those files to get get rebuilt
33
3420070209:
35        The threading model was changed when the newlock2 branch
36        was merged to NetBSD-current.  If you boot with a new
37        kernel (version 4.99.10), then you also need a new pthread
38        library (/usr/lib/libpthread.so.0.7).  If you boot with
39        an old kernel, then you need the old pthread library
40        (/usr/lib/libpthread.so.0.6).  Provided you keep the kernel and
41        the pthread library in sync, old threaded applications should
42        continue to work with an old or new kernel.  Note that named(8)
43	is the only threaded application in the base system.
44
4520061214:
46	Following the move of string_to_flags() and flags_to_string()
47	from the bin/ls/ sources to libutil, users doing UPDATE builds
48	will need to do a "make cleandir" in
49		tools/mtree/, tools/makefs/, tools/binstall/, tools/pax/,
50		bin/pax/, bin/ls/, usr.sbin/mtree/, usr.sbin/makefs/,
51		usr.bin/xinstall/, libexec/ftpd/, rescue/, as well
52		as the installation images in distrib/
53	in order to excise stale references to the old stat_flags.h header
54	file in the ls sources -- stat_flags.h has been removed.
55
5620061108:
57	The configure script used in the src/tools/gcc compiler has been
58	changed to indicate that our libc has ssp support built-in and
59	does not depend on -lssp and -lssp-nonshared. You'll need to
60	make clean in src/tools/gcc first to rebuild the compiler.
61
6220061009:
63	The sysctl variables net.inet{,6}.tcp{,6}.newreno are no longer
64	available. Use net.inet{,6}.tcp{,6}.congctl.selected instead.
65
6620060814:
67	The vt, vidcconsole, kbd, and rpckbd drivers on acorn32 have been
68	withdrawn.  Use vidcvideo and pckbd instead.  See the GENERIC
69	kernel configuration for an example.  X servers from the last
70	few years should cope.
71
7220060703:
73	MPACPI is no more. We always configure PCI interrupts using ACPI
74	if we have an ACPI kernel. The option MPACPI_SCANPCI has been renamed
75	to ACPI_SCANPCI. Thanks to work from fvdl.
76
7720060627:
78	socket(2) has changed, and its system call has been versioned.
79	For userlands with the old version of socket(2), make sure that
80	your kernel has 'options COMPAT_30' set, or else 'bad system call'
81	errors will result.
82
8320060526:
84	The kernel linker scripts for i386 and xen 
85	(sys/arch/i386/conf/kern.ldscript*) were changed to set the
86	load address correctly, for the benefit of MULTIBOOT boot loaders
87	(like Grub). If you use a linker (ld) older than from 2006/04/17, it
88	will be unable to link the kernel because of a bug and ld will fail
89	with an error like:
90	    ../../../../arch/i386/conf/kern.ldscript:45 \
91		non constant expression for load base
92	You need to update at least src/gnu/dist/binutils/ld and recompile
93	and install the linker. If using the build.sh script, the easiest
94	way is with a "build.sh tools" command, with any other options
95	that you use normally. When using build.sh, the linker binary is
96	installed as ${TOOLDIR}/bin/i386--netbsdelf-ld.
97
9820060131:
99	the protocol between the sparc64 bootloader (ofwboot) and
100	the kernel was changed. Before installing a new kernel,
101	you need to update ofwboot. After a full build, just copy
102	/usr/mdec/ofwboot to /, or do a rebuild of
103	src/sys/arch/sparc/stand/ofwboot and install the result to /.
104
10520050917:
106	arch/*/conf/std.* was changed to include conf/std, which
107	contains MI options previously enabled by default.
108	If you have kernel config files which doesn't include
109	arch/*/conf/std.*, you need to edit them to include conf/std
110	to get the previous configuration.
111
11220050830:
113	named.conf was moved from /etc/namedb to /etc.
114	postinstall(8) migrates this during interactive use.
115	Users of MKUPDATE=yes will need to manually rectify
116	this in their DESTDIR.
117
11820050825:
119	Some data structures in sys/device.h, related to interface
120	attributes and locator names, were changed. config(1) was
121	modified to emit the new data structures.
122	Thus usr.bin/config must be updated (and run on the kernel
123	configuration file) before a new kernel can be built.
124
12520050531:
126	genassym.sh(8) was moved to genassym(1). You need to either build
127	tools first or install the version of genassym from /usr/bin before
128	you can build a kernel again.
129
13020050520:
131	Because a kernfs bug which xentools relies on was fixed,
132	xentools up to xentools20-2.0.3nb4 won't work with new kernel.
133
13420050417:
135	postinstall(8) was moved from /etc to /usr/sbin and made part
136	of the "base" set, to make it easier to invoke after an
137	upgrade.
138
13920050325:
140	pcppi(4) was separated in two devices, adding attimer(4).  Be sure
141	to add a config line for an attimer(4) device in your kernel
142	configuration, or you won't be able to set the pitch of the beep
143	with wsconsctl.  Depending on the default value for the pitch, you
144	might even not hear any more beep.  Also, it is advised to attach both
145	devices the same way (i.e., both on isa or both on acpi) or the
146	pcppi(4) device may fail to find the attimer(4) one.
147
14820050211:
149	Fixes to tools/Makefile.gnuhost may cause UPDATE=1 builds in
150	some of the cross tools to fail if they use configure. Some configure's
151	cache the environment passed in and notice the new environment is
152	different and abort. Doing a clean in tools/ should be enough to
153	make a build continue.
154
15520050109:
156	Since su is using pam by default now, make sure that you have
157	/etc/pam.d populated (postinstall will do that automatically
158	for you). Otherwise su will fail open (i.e. will not require
159	a password).
160
16120041229:
162	Make had a path resolution bug that manifested itself as not
163	being able to install openpam.3. This bug has been fixed, but
164	you might need to rebuild make manually first to get through
165	the build.
166
16720041201:
168	Userland programs have been changed to use /dev/bpf instead of
169	/dev/bpfX. You need to create that device by installing a new
170	MAKEDEV and running it, or mv /dev/bpf0 /dev/bpf && rm /dev/bpf[0-9]*
171
17220041006:
173
174	A bug was introduced into /bin/sh (var.c rev 1.35) which causes
175	variables to not export correctly to subshells in all cases. This
176	will cause builds to break if that version of /bin/sh is installed
177	on the system. The proper version of /bin/sh can be verified with:
178
179        ident /bin/sh | grep var
180
181	Any /bin/sh w. version 1.35 will not work and needs to be updated
182	before attempting a build.
183	
18420041001:
185	The ipfilter kernel sources moved from sys/netinet to
186	dist/sys/ipf/netinet. Due to the move some Makefile
187	dependencies are now dangling requiring a make cleandir
188	before they work again (kdump, ktruss, rescue, ipf, and
189	ftp-proxy are the victims).
190
19120040715:
192	The rc.d/sendmail script now uses a heuristic to determine
193	if sendmail should be started at boot time.  It checks the
194	contents of /etc/mailer.conf, /etc/mail/submit.cf, and the
195	owner and mode of the sendmail binary to see if any changes
196	to the mail infrastructure have been made.  If no changes
197	are detected, it will start an SMTP listener.
198
199	Setting sendmail=NO in /etc/rc.conf will override this.
200
201	If you are only using sendmail by default and only for
202	local delivery, it is important that you also update your
203	sendmail.cf so that the SMTP listener only listens on the
204	loopback interface.
205
20620040715:
207	The method by which athhal-elf.o gets pulled into i386
208	kernel builds has been changed again.  The latest version
209	of bsd.files.mk is no longer required.
210
21120040621:
212	Due to the recent rototill of tools/compat it's crucial one starts
213	from a clean objdir under tools/*.
214
215	This is mostly due to generated files (yacc and lex sources) needing
216	to be generated with new rules from bsd.hostprog.mk.
217
218	The safest course is to rm -rf all objects under tools before building.
219
22020040516:
221	The end-user modifiable X11 configuration has been moved
222	from /usr/X11R6/lib/X11/<dir> to /etc/X11/<dir>.
223	Ensure that src and xsrc is up to date, and run
224	"make cleandir" in src/x11 before your next build.
225
226	postinstall currently doesn't migrate the files from
227	/usr/X11R6/lib/X11/* to /etc/X11/* although it does
228	detect that this needs to occur, so you'll have to
229	manually move these files yourself.
230
23120040426:
232	Support for the original dynamic sysctl node structure has
233	been removed in favor of the newer layout.  This affects
234	consumers of the create and delete interface, as well as
235	the dynamic discovery mechanism.  This is believed only to
236	be the sysctl(8) binary itself, at this point in time, so
237	the only effect of this should be that a sysctl binary
238	built from sources dated between 2003/12/04 and 2004/03/24
239	will not work on a kernel built from sources dated after
240	2004/04/25.  If you need a new sysctl binary but build.sh
241	does not work, make sure that your revision of
242	src/sys/sys/sysctl.h is 1.112 (or later), and then the
243	do the following:
244
245	cd /usr/src (or wherever your source tree is)
246	make USETOOLS=no includes
247	cd lib/libc
248	make USETOOLS=no dependall install
249	cd ../../sbin/sysctl
250	make USETOOLS=no dependall install
251
252	If you are using older sysctl binary, GNU autoconf would fail to
253	identify your machine architecture, and tries to build binary for
254	"unknown-unknown-netbsd20F" or something like that.  if that happens,
255	make sure to follow the above steps.
256
25720040425:
258	The ffs superblock issues listed below under 20040109 and 20030402
259	are now automatically addressed by the /etc/rc.d/fixsb script or by
260	sysinst when it checks a a filesystem. The manual fsck_ffs -b16 -c4
261	invocation mentioned below will continue to work and is now
262	automated by those scripts.  Note that under certain circumstances,
263	affected filesystems upgraded to a -current kernel first before
264	upgrading their userland with the fixsb and fsck_ffs fixes may
265	encounter a 'freeing free inode' panic when writing to the affected
266	filesystem, so it is a good idea to repair the filesystem as soon as
267	possible.  For more details on the fixsb script, see pr install/25138.
268
26920040418:
270	statfs(2) and friends have been replaced with statvfs(2). Before
271	installing a newly build userland make sure that you are running
272	a newly built kernel with COMPAT_20 set. In addition your libc
273	build might not work (undefined SYS_statfs symbol) because make
274	clean does not know how to remove files it does not know about
275	anymore. Manually remove all generated .S sources and objects
276	from the libc build directory.
277
27820040326:
279	The method by which athhal-elf.o gets pulled into i386 kernel builds
280	has been changed. The file is now stored as a uuencoded file in CVS
281	and the generated Makefile will use the new .uue rules from bsd.file.mk
282	to build it.
283
284	This means you must have the latest bsd.files.mk installed when
285	building a kernel without USETOOLS=yes.
286
28720040318:
288	A bug in the cgd(4) blowfish code was corrected, without
289	provision of backwards compatibility, after several public
290	notices over several months. Users of cgd with blowfish cipher
291	ONLY must dump their data before updating their kernels, and
292	recreate cgd's and restore data using the new kernel. See
293	(recent message to current-users, URL when mail-index has updated)
294
29520040313:
296	On acorn32, the opms and qms drivers have been withdrawn, and
297	the old wsqms driver is now called qms.  Kernel config files
298	will need updating.  See the ones in sys/arch/acorn32/conf
299	for examples.
300
30120040125:
302	On acorn32, the beep and sysbeep devices are no longer
303	needed, and will need to be deleted from kernel configuration
304	files.
305
30620040109:
307	Compatibility for old ffs superblock layouts has been
308	added, and the restrictive fsck checks have been reenabled
309	when using those layouts.  If you have been using -current
310	since 20030402, you may find that fsck again signals fatal
311	superblock mismatches.  To repair, make sure you have
312	an updated fsck_ffs and then you can use fsck_ffs -b 16 -c 4
313	to complete the filesystem upgrade.  A message has
314	been added to the kernel which should detect this problem.
315	See the following discussion for more information:
316	http://mail-index.NetBSD.org/current-users/2004/01/11/0022.html
317
31820031203:
319	New binutils builds may fail due to old dependencies.
320	It's necessary to "make cleandir" to ensure that
321	the dependencies will be rebuilt correctly.
322
32320031111:
324	A newer mkdep is needed.  Error noting that is
325		cc: Ambiguous abbreviation --
326
32720031008:
328	/usr/include/sys/disklabel_mbr.h was removed.
329	It's necessary to "make cleandir" to ensure that
330	the dependencies will be rebuilt correctly.
331
33220031007:
333	A sign extension bug was fixed which set all the high bits
334	of our newly expanded ffs fs_flags.  This should only
335	affect users who installed or upgraded in September of 2003.
336	A small utility program was posted to tech-kern which
337	should fix this problem, and a warning message was added
338	to the kernel which should discover and warn about it.  See
339	http://mail-index.NetBSD.org/tech-kern/2003/10/07/0005.html
340
34120030906:
342	With the addition of siginfo support the old signal trampoline
343	code has been deprecated to COMPAT_16. Make sure that your running
344	kernel has COMPAT_16 enabled before building userland.
345
34620030801:
347	With the new openssl, there is some header and library shuffling.
348	rm -f /usr/include/des.h /usr/include/kerberosIV/* /lib/libdes* \
349	/usr/lib/libdes* before building.
350
35120030703:
352	Texinfo was updated to 4.6.  To avoid failures when trying to
353	build the included texinfo files, do:
354
355	cd src/gnu/usr.bin/texinfo
356	make MKINFO=no dependall install
357
35820030630:
359	Groff was updated to 1.19; it's probably necessary to do
360		cd share/mk && make install
361		cd src/gnu/usr.bin/groff
362		make MKMAN=no dependall install
363	(untested).
364
36520030516:
366	Due to bugs in the export handling code, invalid export lines
367	were accepted before and caused the kernel to panic when
368	mountd got restarted because it freed memory that had already
369	been freed. This has been fixed and the kernel checks
370	export addresses very strictly. If you upgrade your kernel,
371	make sure you also upgrade mountd, because if your export
372	file contains lines with an old inet4 address syntax (i.e.
373	a.b.c or a.b or a), they will get rejected by the new kernel.
374
37520030402:
376	The superblock layout for FFS was changed.  If you have 1.6
377	fsck binaries, they will signal a fatal superblock mismatch
378	with the first alternate, because they compare too many
379	fields (even ones that aren't useful).  If possible, upgrade
380	your fsck_ffs binary before using a new kernel.
381	None of this signals actual filesystem damage.
382
38320030324:
384	sendmail version 8.12.8 was imported.  Since sendmail is
385	now setgid to the smmsp group, and runs in "collection"
386	mode for most common activities, there is a new config
387	file called submit.cf that needs to live in /etc/mail.
388	The generic submit.cf sample in /usr/share/sendmail/cf
389	is named netbsd-msp.cf.  Upgrading your regular sendmail
390	configuration file is also strongly advised.
391
392	See the section named "MESSAGE SUBMISSION PROGRAM" in
393	the updated /usr/share/sendmail/README file for more
394	information.
395
39620030117:
397	Texinfo was updated to 4.3.  To avoid failures when trying to
398	build the included texinfo files, do:
399
400	cd src/gnu/usr.bin/texinfo
401	make MKINFO=no dependall install
402
40320021223:
404	The METALOG format changed slightly, to remove the leading
405	"${DESTDIR}" from path names.
406	This only affects people building with UNPRIVED.
407	For complete safety, remove the DESTDIR entirely and
408	update tools/mtree, before running make build.
409
41020021219:
411	CVS repository layout was changed.  See the following for details
412	if you are using (anonymous) cvs to update your tree.
413
414	http://mail-index.NetBSD.org/netbsd-announce/2002/12/19/0000.html
415
41620021219:
417	install(1) had a '-N dbdir' option added, to specify an
418	alternate location to look up users & groups (instead
419	of the host system passwd(5) and group(5) databases).
420
421	The build system was modified to take advantage of
422	this option (using ${NETBSDSRCDIR}/etc), so if you
423	use USETOOLS==no, you may have to rebuild and
424	reinstall usr.bin/xinstall first.
425
42620021130:
427	fparseln(3) moved from libutil to libc.
428	If building to DESTDIR=/, reinstall the includes
429	and rebuild libc:
430		make includes
431		make do-lib-libc
432	If using build.sh, "cd tools/compat && make clean"
433	before rebuilding the tools.
434
43520021126:
436	The mk.conf(5) variable SYS_INCLUDE has been deprecated,
437	including the optional "SYS_INCLUDE=symlinks" support.
438	All header files, including <sys/*.h> are copied into
439	/usr/include.
440
44120021121:
442	The C run-time support files crtbegin.o and crtend.o
443	(and their companions crtbeginS.o and crtendS.o) were
444	split up, with new crti.o and crtn.o files resulting.
445	This means that libtool needs to be rebuilt once the
446	new libraries are installed.  The process of rebuilding
447	libtool will cause it to automatically notice the new
448	required files, but it *must* be rebuilt in order to
449	do this.
450
451	An out-of-date libtool will result in shared libraries
452	which lack _init() and _fini() routines, which means that
453	their global constructors/destructors will not be invoked.
454
45520021121:
456	A bug related to how ARM ELF objects were tagged has been
457	corrected.
458
459	NetBSD ARM ELF uses the soft-VFP floating point model by
460	default.  However, the assembler lacked support for marking
461	objects as using the VFP floating point format, and the
462	compiler was not properly passing the flag indicating "soft-VFP"
463	to the assembler.
464
465	Unfortunately, this means that the linker will now consider
466	old (i.e. not marked "softvfp") NetBSD ARM ELF objects to be
467	incompatible with new (properly marked) objects.
468
469	The problem will only manifest itself if you attempt to compile
470	a new program using the fixed toolchain, and link that program
471	against old libraries which do not have the proper "softvfp"
472	markings.  ALL OF YOUR EXISTING BINARIES AND SHARED LIBRARIES
473	WILL CONTINUE TO WORK PROPERLY.
474
475	The only work-around for the problem is to recompile all of
476	the libraries on the system.  The easiest way to do this for
477	system libraries is to install a binary snapshot; they are
478	generally available on releng.NetBSD.org.  Any packages you
479	have installed which supply libraries will have to be recompiled
480	if you wish to link new programs against those libraries.
481
482	If you have questions about this matter, please contact
483	port-arm@NetBSD.org.
484
48520021011:
486	Systrace has been improved to support privilege elevation.
487	Updating the kernel requires the userland part of systrace
488	to be rebuilt.
489
49020021010:
491	The config(8) grammar was changed to allow options to register
492	dependencies on attributes, as well as other options.  Users
493	must update and reinstall usr.sbin/config before building a new
494	kernel.
495
49620021009:
497	A new attribute dependency syntax was introduced to config(8),
498	which is now used by the SCSI configuration description.  Users
499	must update and reinstall usr.sbin/config before building a new
500	kernel.
501
50220021003:
503	Several changes have been made to the autoconfiguration
504	framework.  Users must update and reinstall usr.sbin/config
505	before building a new kernel.
506
50720021001:
508	The i386mp branch has been merged.  To compile a kernel, users
509	will need to add the option 'cpu* at mainbus?' to their configuration
510	file.  Multiprocessor kernels will need
511	ioapic*		at mainbus? apid ?
512	options		MULTIPROCESSOR
513	options		COM_MPLOCK
514
51520020922:
516	MKDYNAMICROOT=yes enabled by default, which means that
517	certain shared libraries are installed into /lib, the shared
518	linker is installed into /libexec, and all programs in /bin
519	and /sbin are dynamically linked.
520	If you do not use "make build", you should ensure that
521	you have the libraries and shared linker in the new locations,
522	with:
523		make do-lib-csu do-lib-libc do-lib do-gnu-lib do-ld.elf_so
524
52520020917:
526	USE_NEW_TOOLCHAIN has been replaced with:
527	    -	TOOLCHAIN_MISSING -- set to "yes" on platforms for which
528		there is no working in-tree toolchain (hppa, ns32k, sh5,
529		x86_64).
530	    -	EXTERNAL_TOOLCHAIN -- if defined by the user, points to the
531		root of an external toolchain (e.g. /usr/local/gnu).  This
532		enables the cross-build framework even for TOOLCHAIN_MISSING
533		platforms.
534
53520020906:
536	gehenna-devsw has been merged into the trunk. Need to update and
537	reinstall usr.sbin/config before building the kernel.
538
53920020822:
540	Crunched rescue tools (contents of /bin and /sbin, plus others)
541	are now provided in /rescue.
542
543	To ensure that these are built statically linked (no matter
544	what the setting of LDSTATIC is), use a crunchgen(1) built
545	from sources newer than 20020820 (see the next entry).
546
54720020820:
548	crunchgen(1) changed to ensure that the generated program
549	is statically linked.
550
551	Solution: update and reinstall usr.bin/crunch
552
55320020605:
554	smmsp user/group has been added for sendmail.
555
556	Add the following into /etc/group:
557
558	smmsp:*:17:
559
560	and the following to /etc/master.passwd (via vipw):
561
562	smmsp:*:17:17::0:0:Sendmail Message Submission Program:/nonexistent:/sbin/nologin
563
56420020515:
565	sshd user/group has been added.  Need to hand add this in, or sshd
566	will not let you log in (with default, or UsePrivilegeSeparation=yes)
567
568	Add the following into /etc/group:
569
570	sshd:*:16:
571
572	and the following to /etc/master.passwd (via vipw):
573
574	sshd:*:16:16::0:0:& pseudo-user:/var/chroot/sshd:/sbin/nologin
575	
576	Also /var/chroot/sshd directory needs to be present (digged as part of
577	the build process).
578
57920020426:
580	NBUILDJOBS obsoleted in favor of just using -j.
581
58220020426:
583	etc/postinstall added, which performs various checks for 
584	configuration file updates and changes, and can fix most of
585	the problems identified.
586	This should make it much easier to upgrade a system's
587	configuration from earlier systems (as far back as NetBSD 1.5).
588
58920020320:
590	<bsd.lib.mk> needs a new install(1) for its "-a cmd" support.
591	Build and install at usr.bin/xinstall before the build.
592
59320020319:
594	Raw IPv6 socket now makes strict checking for sa_family and sa_len
595	on send(2) operation.  Be sure to have sbin/rtsol and usr.sbin/rtsold
596	newer than November 2001 when you upgrade the kernel.
597
59820020311:
599	ssh configuration files were moved from /etc to /etc/ssh.  Beware
600	if you restart your machine from remote.  Note that sshd.conf needs
601	to be changed (due to the use of "/etc" inside).
602
60320020223:
604	Users of the VAX port will need to rebuild and install gas
605	so it deal with the now present register prefix used in all
606	the VAX assembly files.
607
60820020118:
609	ntpd user/group has been added.  Need to hand add this in or builds
610	will break as mtree aborts early.
611
612	Add the following into /etc/group:
613
614	ntpd:*:15:
615
616	and the following to /etc/master.passwd (via vipw):
617
618	ntpd:*:15:15::0:0:Ntpd pseudo-user:/var/chroot/ntpd:/sbin/nologin
619
62020011207:
621	If you're attempting to build a snapshot on sparc64 and are getting
622	reloc errors from the toolchain groff binary this means your native
623	toolchain has some broken C++ bits.
624
625	To fix:
626
627	Build a new toolchain (i.e. build.sh -t)
628	Use the new toolchain to build and install natively (i.e. /usr/lib)
629
630	gnu/lib/libgcc
631	gnu/lib/libstdc++
632
633	After this a snapshot will be able to be built.
634
63520011201:
636	In order for a sparc64 build to work you must have a working awk. If
637	you've built and installed a system with the new toolchain up to this
638	point you do not have a working awk as its ability to do floating
639	point is broken. 
640
641	To build:
642
643	remake and install gnu/lib/libgcc
644	remake and install gnu/usr.bin/gawk into /usr/bin (make sure it links
645	against the new libgcc.a)
646
64720011128:
648	Kernel config information was changed to use defflag in
649	the various "files" files.  Bug fixes to config(8) are
650	required in order for this to work properly.  Make sure
651	to build and install in usr.sbin/config before attempting
652	to build a new kernel.
653
65420011030:
655	libc/locale/wcstod.c now needs new lint(1). Update lint(1)
656	before building libc.
657
65820011029:
659	The new document BUILDING.mdoc (view with nroff | more, or
660	see pre-generated .txt and .html versions) describes the build
661	procedure in great detail.  BUILDING, and the USE_NEW_TOOLCHAIN
662	build process, are intended in the long run to replace this
663	manual update log.
664
665	Users building a USE_NEW_TOOLCHAIN system should read the
666	BUILDING document for caveats.  Generally, BUILDING supersedes
667	UPDATING for these systems, as tool updating is taken care of
668	by the new build system.
669
67020011028:
671	src/etc/Makefile now needs install to be able to handle
672	symlinks that point to nowhere. A bug in install that
673	prevented this was corrected.
674
675	Solution: update and reinstall usr.bin/xinstall
676	Better Solution: Use the new toolchain and it will just work
677	for you.
678
67920011006:
680	/etc/mtree/NetBSD.dist has been updated to take advantage of
681	absolute path support added to mtree(8). Older mtree(8)s don't
682	understand the format.
683
684	Solution: update and reinstall usr.sbin/mtree
685
68620011004:
687	Crunchgen has been updated to work via reach-over makefiles. Updating
688	is suggested before running a snapshot build
689
69020010915:
691	The new "ubcperf" code committed by Chuck Silvers removed
692	a header file, uvm/uvm_vnode.h.  There may be stale .depend
693	files that still reference this file.
694
695	Solution: "make cleandir && make dependall" in affected
696	directories.
697
69820010803:
699	grep.info is now built from grep.texi using makeinfo.  Since it
700	requires makeinfo v4.0, you need to install new texinfo before
701	building gnu/usr.bin/grep.  To install new texinfo, please follow
702	the instruction described in 20010726 entry.
703
70420010803: 
705	(i386 only): i386 kernel now uses new instructions like
706	`fxsave' which old gas doesn't understand.  To build the
707	kernel successfully, you need to build and install a new toolchain, 
708	(i.e., build.sh -t) or 	(temporarily) comment out "options I686_CPU" 
709	from your kernel configuration until you rebuild your userland.
710	See 20011029 above and BUILDING file in this directory for more information.
711	[updated 20020630 since i386 gas moved when USE_NEW_TOOLCHAIN enabled]
712
71320010731:
714	Bootloader update on ELF platforms.  DDB in kernels from before
715	this will be unable to read symbol tables provided by newer
716	bootloaders.
717
71820010726:
719	Texinfo was updated to 4.0.  To avoid failures when trying to
720	build the included texinfo files, do:
721
722	cd src/gnu/usr.bin/texinfo
723	make MKINFO=no dependall install
724
72520010718:
726	Enabled correct .init/.fini processing in crt0.  The way this
727	was done was to change a -I directive to cc(1), which means
728	make(1) will have a stale dependency (it will be checking the
729	timestamp on the wrong "dot_init.h").
730
731	The symptom you will see is that new programs die with SIGSEGV
732	if you have a stale dependency.
733
734	Solution: "make cleandir" in both lib/csu and libexec/ld.elf_so
735	before starting your build.
736
73720010628:
738	A construct was added to uvm_page.h that uncovered a bug
739	in lint(1).  If you get a warning/error about a non-portable
740	bitfield, update your lint(1) before proceeding.
741
74220010226:
743	Added named user/group to system. Need to hand add this in or builds
744	will break as mtree aborts early.
745
746	To work around add by hand:
747
748	named:*:14:
749
750	to /etc/group and add:
751
752	named:*:14:14::0:0:Named pseudo-user:/var/named:/sbin/nologin
753
754	to master.passwd (use vipw for instance if doing by hand).
755
756	Now a make build should progress.
757
75820010219:
759	get/setprogname() added. Any hostprogs that may use this will need
760	to be bootstrapped manually until the host system is current.
761
762	Known problems: sys/arch/macppc/stand/fixcoff
763			usr.sbin/config (adding -DMAKE_BOOTSTRAP to
764			  CFLAGS and rebuilding should work)
765			usr.sbin/mdsetimage - Build a static copy if
766			  building a snapshot before fully bootstrapped.
767
76820010204:
769	prepare the code to compile with stricter gcc flags. in
770	particular start eliminating redundant declarations. Yacc
771	needs to be installed before make build.
772
77320010114:
774	introduce .if commands(target) in make(1). You need to
775	bring everything up-to-date first, then without installing
776	anything make and install in usr.bin/make, then proceed
777	with make build.
778
77920010101:
780	bsd.subdir.mk committed 20001230 had a bug which caused
781	afterinstall targets to run too soon; update again.
782
78320001230:
784	New share/mk files needed to support .WAIT in SUBDIR variables.
785	If you get make errors, 
786		(cd share/mk; make install)
787	Also, PRINTOBJDIR has changed and is now used more heavily.
788
78920001019:
790	The `ca' device driver has been replaced by `ld'; although the
791	major and minor numbers haven't changed, you should update your /dev
792	directory.
793
79420000929:
795	The following make directives are obsoleted.
796	MKCRYPTO_RSA NOCRYPTO_RSA NOCRYPTO_RC5 NOCRYPTO_IDEA 
797	By default, RSA is built into libcrypto.  IDEA and RC5 will not be
798	built into libcrypto.  By using MKCRYPTO_{RC5,IDEA}, you can build
799	additional library libcrypto_{idea,rc5}.
800
801
802Hints for a more successful build:
803^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
804    Use build.sh, but do not use its "expert mode":
805	This will automatically build the tools in the
806	   correct order, and it will keep the tools and the
807	   new build products from interfering with the running
808	   system.  This will allow you to ignore most of the
809	   other advice in this file.
810    Build a new kernel first:
811	This makes sure that any new system calls or features
812	   expected by the new userland will be present.  This
813	   helps to avoid critical errors when upgrading.
814    Use object directories:
815	This helps to keep stale object
816	   files from polluting the build if a Makefile "forgets"
817	   about one.  It also makes it easier to clean up after
818	   a build.  It's also necessary if you want to use the
819	   same source tree for multiple machines.
820	   To use object directories with build.sh:
821	    a) invoke build.sh with the "-M" or "-O" options.
822	   To use object directories without using build.sh:
823	    a) cd /usr/src ; make cleandir
824	    b) Add "OBJMACHINE=yes" to /etc/mk.conf
825	    c) Add "MKOBJDIRS=yes" to /etc/mk.conf
826	    d) cd /usr/src ; make build
827	   Note that running "make obj" in a directory will create
828	   in obj.$MACHINE directory.
829    Build to a DESTDIR:
830	This helps to keep old installed files (especially libraries)
831	   from interfering with the new build.
832	   To build to a DESTDIR with build.sh, use the "-D" option.
833	   To build to a DESTDIR without using build.sh, set the DESTDIR
834	   environment variable before running make build.  It should be
835	   set to the pathname of an initially empty directory.
836	   Problems: if you do not use build.sh, you might need to
837		update critical utilities without using DESTDIR since
838		nothing is executed from what is installed in DESTDIR.
839		(See critical utils, below.)
840    Build often:
841	This keeps critical utilities current enough to not choke
842	on any other part of the source tree that depends on up to
843	date functionality.  If you use build.sh, you should not have
844	this problem.
845 
846What to do if things don't work:
847^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
848When things don't work there is usually a few things that commonly
849should be done.
850    1)	make includes
851	This should be done automatically by make build.
852    2)  cd share/mk && make install
853	Again, automatically done by make build.
854
855Failsafe rebuild of a small part of the tree:
856^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
857To make sure you rebuild something correctly you want to do
858something like the following:
859    1)  Make sure the includes and .mk files are up to date.
860    2)  Make sure any program used to build the particular
861	utility is up to date.  (yacc, lex, etc...)
862    3)  cd ...path/to/util...
863	make cleandir
864	rm ...all obj directories...
865	make cleandir			# yes, again
866	make obj
867	make depend && make
868
869Failsafe rebuild of the entire tree:
870^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
871If you really want to make sure the source tree is clean and
872ready for a build try the following.  Note that sourcing /etc/mk.conf
873(a make(1) Makefile) in this manner is not right, and will not work
874for anyone who uses any make(1) features in /etc/mk.conf.
875
876---cut here---
877#!/bin/sh
878. /etc/mk.conf
879
880if [ -z $NETBSDSRCDIR ] ; then
881    NETBSDSRCDIR=/usr/src
882fi
883if [ \! -d $NETBSDSRCDIR ] ; then
884    echo Unable to find sources
885    exit 1
886fi
887find $NETBSDSRCDIR -name \*.o -o -name obj.\* -o -name obj -exec rm \{\} \;
888
889if [ -z $BSDOBJDIR ] ; then
890    BSDOBJDIR=/usr/obj
891fi
892if [ -d $BSDOBJDIR ] ; then
893    rm -rf $BSDOBJDIR
894fi
895
896cd $NETBSDSRCDIR && make cleandir
897
898---cut here---
899
900Critical utilities:
901^^^^^^^^^^^^^^^^^^^
902	usr.bin/compile_et
903	usr.bin/make
904	usr.bin/yacc
905	usr.bin/lex
906	usr.bin/xlint
907	usr.bin/config
908
909Other problems and possible solutions:
910^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
911Symptom:Complaints involving a Makefile.
912Fix:	Rebuild usr.bin/make:
913	cd usr.bin/make && make && make install
914	Or, a failsafe method if that doesn't work:
915	cd usr.bin/make && cc *.c */*.c -I . -o make && mv make /usr/bin
916
917Fix:	Make sure .mk files are up to date.
918	cd share/mk && make install
919
920Symptom:Kernel `config' fails to configure any kernel, including GENERIC.
921Fix:	Rebuild usr.bin/config
922
923Symptom:
924Fix:	Rebuild usr.bin/yacc
925
926Symptom:
927Fix:	Rebuild usr.bin/lex
928
929Symptom:
930Fix:	rm /usr/lib/libbfd.a
931
932Symptom:Obsolete intermediate files are used during compilation
933Fix:	Try the following sequence of commands in the directory in question.
934	make cleandir; rm `make print-objdir`; make cleandir; make obj
935	(If you built the tree without "make obj" in the past, obsolete files
936	may remain.  The command tries to clean everything up)
937
938Symptom:.../sysinst/run.c:xx: warning: initialization from incompatible pointer type
939Fix:	Rebuild and install usr.bin/menuc
940
941Symptom:mklocale not found during build in share/locale/ctype
942Fix:	Build and install usr.bin/mklocale
943
944Symptom:undefined reference to `__assert13' or `__unsetenv13'
945Fix:    Rebuild and install lib/libc
946
947Symptom:usr.bin/config fails to build.
948Fix:	Try building with -DMAKE_BOOTSTRAP added to CFLAGS in Makefile.
949
950Symptom:undefined reference to `getprogname' or `setprogname'
951Fix:    Rebuild and install lib/libc
952
953Symptom:lint does not understand the '-X' option
954Fix:    May need to build & install libs with NOLINT=1 before rebuilding lint
955