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