UPDATING revision 1.159 1 $NetBSD: UPDATING,v 1.159 2007/03/25 16:23:04 gdt Exp $
2
3 This file (UPDATING) is intended to be a brief reference to recent
4 changes that might cause problems in the build process, and a guide for
5 what to do if something doesn't work.
6
7 For a more detailed description of the recommended way to build NetBSD
8 using build.sh, see the BUILDING file.
9
10 Note that much of the advice in this UPDATING file was written before
11 build.sh existed. Nevertheless, the advice here may be useful for
12 working around specific problems with build.sh.
13
14 See also: BUILDING, build.sh, Makefile.
15
16 Recent changes:
17 ^^^^^^^^^^^^^^^
18
19 20070319:
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
28 20070210:
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
34 20070209:
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
45 20061214:
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
56 20061108:
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
62 20061009:
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
66 20060814:
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
72 20060703:
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
77 20060627:
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
83 20060526:
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
98 20060131:
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
105 20050917:
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
112 20050830:
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
118 20050825:
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
125 20050531:
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
130 20050520:
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
134 20050417:
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
139 20050325:
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
148 20050211:
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
155 20050109:
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
161 20041229:
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
167 20041201:
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
172 20041006:
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
184 20041001:
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
191 20040715:
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
206 20040715:
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
211 20040621:
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
220 20040516:
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
231 20040426:
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
257 20040425:
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
269 20040418:
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
278 20040326:
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
287 20040318:
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
295 20040313:
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
301 20040125:
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
306 20040109:
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
318 20031203:
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
323 20031111:
324 A newer mkdep is needed. Error noting that is
325 cc: Ambiguous abbreviation --
326
327 20031008:
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
332 20031007:
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
341 20030906:
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
346 20030801:
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
351 20030703:
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
358 20030630:
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
365 20030516:
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
375 20030402:
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
383 20030324:
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
396 20030117:
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
403 20021223:
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
410 20021219:
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
416 20021219:
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
426 20021130:
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
435 20021126:
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
441 20021121:
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
455 20021121:
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 (a] NetBSD.org.
484
485 20021011:
486 Systrace has been improved to support privilege elevation.
487 Updating the kernel requires the userland part of systrace
488 to be rebuilt.
489
490 20021010:
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
496 20021009:
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
502 20021003:
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
507 20021001:
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
515 20020922:
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
525 20020917:
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
535 20020906:
536 gehenna-devsw has been merged into the trunk. Need to update and
537 reinstall usr.sbin/config before building the kernel.
538
539 20020822:
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
547 20020820:
548 crunchgen(1) changed to ensure that the generated program
549 is statically linked.
550
551 Solution: update and reinstall usr.bin/crunch
552
553 20020605:
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
564 20020515:
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
579 20020426:
580 NBUILDJOBS obsoleted in favor of just using -j.
581
582 20020426:
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
589 20020320:
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
593 20020319:
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
598 20020311:
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
603 20020223:
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
608 20020118:
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
620 20011207:
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
635 20011201:
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
647 20011128:
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
654 20011030:
655 libc/locale/wcstod.c now needs new lint(1). Update lint(1)
656 before building libc.
657
658 20011029:
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
670 20011028:
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
679 20011006:
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
686 20011004:
687 Crunchgen has been updated to work via reach-over makefiles. Updating
688 is suggested before running a snapshot build
689
690 20010915:
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
698 20010803:
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
704 20010803:
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
713 20010731:
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
718 20010726:
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
725 20010718:
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
737 20010628:
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
742 20010226:
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
758 20010219:
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
768 20010204:
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
773 20010114:
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
779 20010101:
780 bsd.subdir.mk committed 20001230 had a bug which caused
781 afterinstall targets to run too soon; update again.
782
783 20001230:
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
789 20001019:
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
794 20000929:
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
802 Hints 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
846 What to do if things don't work:
847 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
848 When things don't work there is usually a few things that commonly
849 should 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
855 Failsafe rebuild of a small part of the tree:
856 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
857 To make sure you rebuild something correctly you want to do
858 something 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
869 Failsafe rebuild of the entire tree:
870 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
871 If you really want to make sure the source tree is clean and
872 ready 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
874 for anyone who uses any make(1) features in /etc/mk.conf.
875
876 ---cut here---
877 #!/bin/sh
878 . /etc/mk.conf
879
880 if [ -z $NETBSDSRCDIR ] ; then
881 NETBSDSRCDIR=/usr/src
882 fi
883 if [ \! -d $NETBSDSRCDIR ] ; then
884 echo Unable to find sources
885 exit 1
886 fi
887 find $NETBSDSRCDIR -name \*.o -o -name obj.\* -o -name obj -exec rm \{\} \;
888
889 if [ -z $BSDOBJDIR ] ; then
890 BSDOBJDIR=/usr/obj
891 fi
892 if [ -d $BSDOBJDIR ] ; then
893 rm -rf $BSDOBJDIR
894 fi
895
896 cd $NETBSDSRCDIR && make cleandir
897
898 ---cut here---
899
900 Critical 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
909 Other problems and possible solutions:
910 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
911 Symptom:Complaints involving a Makefile.
912 Fix: 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
917 Fix: Make sure .mk files are up to date.
918 cd share/mk && make install
919
920 Symptom:Kernel `config' fails to configure any kernel, including GENERIC.
921 Fix: Rebuild usr.bin/config
922
923 Symptom:
924 Fix: Rebuild usr.bin/yacc
925
926 Symptom:
927 Fix: Rebuild usr.bin/lex
928
929 Symptom:
930 Fix: rm /usr/lib/libbfd.a
931
932 Symptom:Obsolete intermediate files are used during compilation
933 Fix: 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
938 Symptom:.../sysinst/run.c:xx: warning: initialization from incompatible pointer type
939 Fix: Rebuild and install usr.bin/menuc
940
941 Symptom:mklocale not found during build in share/locale/ctype
942 Fix: Build and install usr.bin/mklocale
943
944 Symptom:undefined reference to `__assert13' or `__unsetenv13'
945 Fix: Rebuild and install lib/libc
946
947 Symptom:usr.bin/config fails to build.
948 Fix: Try building with -DMAKE_BOOTSTRAP added to CFLAGS in Makefile.
949
950 Symptom:undefined reference to `getprogname' or `setprogname'
951 Fix: Rebuild and install lib/libc
952
953 Symptom:lint does not understand the '-X' option
954 Fix: May need to build & install libs with NOLINT=1 before rebuilding lint
955