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