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