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