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