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