UPDATING revision 1.107 1 $NetBSD: UPDATING,v 1.107 2004/02/23 22:51:51 reinoud Exp $
2
3 This file is intended to be a brief introduction to the build
4 process and a reference on what to do if something doesn't work.
5
6 For a more detailed description see Makefile.
7
8 Recent changes:
9 ^^^^^^^^^^^^^^^
10
11 20040223:
12 As stated in
13 http://mail-index.netbsd.org/current-users/2004/01/11/0022.html
14 relating to the ffs superblock layout change, it needs updating
15 fsck_ffs too or it will keep on complaining. Usings fsck without
16 flags will solve the problem when it replaces the superblocks.
17 Please do read the associated message for sure.
18
19 20040125:
20 On acorn32, the beep and sysbeep devices are no longer
21 needed, and will need to be deleted from kernel configuration
22 files.
23
24 20040109:
25 Compatibility for old ffs superblock layouts has been
26 added, and the restrictive fsck checks have been reenabled
27 when using those layouts. If you have been using -current
28 since 20030402, you may find that fsck again signals fatal
29 superblock mismatches. To work around, you can use
30 fsck_ffs -b 32 -c 4 to restore an alternate superblock
31 and complete the filesystem upgrade.
32
33 20031203:
34 New binutils builds may fail due to old dependencies.
35 It's necessary to "make cleandir" to ensure that
36 the dependencies will be rebuilt correctly.
37
38 20031111:
39 A newer mkdep is needed. Error noting that is
40 cc: Ambiguous abbreviation --
41
42 20031008:
43 /usr/include/sys/disklabel_mbr.h was removed.
44 It's necessary to "make cleandir" to ensure that
45 the dependencies will be rebuilt correctly.
46
47 20030906:
48 With the addition of siginfo support the old signal trampoline
49 code has been deprecated to COMPAT_16. Make sure that your running
50 kernel has COMPAT_16 enabled before building userland.
51
52 20030801:
53 With the new openssl, there is some header and library shuffling.
54 rm -f /usr/include/des.h /usr/include/kerberosIV/* /lib/libdes* \
55 /usr/lib/libdes* before building.
56
57 20030703:
58 Texinfo was updated to 4.6. To avoid failures when trying to
59 build the included texinfo files, do:
60
61 cd src/gnu/usr.bin/texinfo
62 make MKINFO=no dependall install
63
64 20030630:
65 Groff was updated to 1.19; it's probably necessary to do
66 cd share/mk && make install
67 cd src/gnu/usr.bin/groff
68 make MKMAN=no dependall install
69 (untested).
70
71 20030516:
72 Due to bugs in the export handling code, invalid export lines
73 were accepted before and caused the kernel to panic when
74 mountd got restarted because it freed memory that had already
75 been freed. This has been fixed and the kernel checks
76 export addresses very strictly. If you upgrade your kernel,
77 make sure you also upgrade mountd, because if your export
78 file contains lines with an old inet4 address syntax (i.e.
79 a.b.c or a.b or a), they will get rejected by the new kernel.
80
81 20030402:
82 The superblock layout for FFS was changed. If you have 1.6
83 fsck binaries, they will signal a fatal superblock mismatch
84 with the first alternate, because they compare too many
85 fields (even ones that aren't useful). If possible, upgrade
86 your fsck_ffs binary before using a new kernel.
87 None of this signals actual filesystem damage.
88
89 20030324:
90 sendmail version 8.12.8 was imported. Since sendmail is
91 now setgid to the smmsp group, and runs in "collection"
92 mode for most common activities, there is a new config
93 file called submit.cf that needs to live in /etc/mail.
94 The generic submit.cf sample in /usr/share/sendmail/cf
95 is named netbsd-msp.cf. Upgrading your regular sendmail
96 configuration file is also strongly advised.
97
98 See the section named "MESSAGE SUBMISSION PROGRAM" in
99 the updated /usr/share/sendmail/README file for more
100 information.
101
102 20030117:
103 Texinfo was updated to 4.3. To avoid failures when trying to
104 build the included texinfo files, do:
105
106 cd src/gnu/usr.bin/texinfo
107 make MKINFO=no dependall install
108
109 20021223:
110 The METALOG format changed slightly, to remove the leading
111 "${DESTDIR}" from path names.
112 This only affects people building with UNPRIVED.
113 For complete safety, remove the DESTDIR entirely and
114 update tools/mtree, before running make build.
115
116 20021219:
117 CVS repository layout was changed. See the following for details
118 if you are using (anonymous) cvs to update your tree.
119
120 http://mail-index.NetBSD.org/netbsd-announce/2002/12/19/0000.html
121
122 20021219:
123 install(1) had a '-N dbdir' option added, to specify an
124 alternate location to look up users & groups (instead
125 of the host system passwd(5) and group(5) databases).
126
127 The build system was modified to take advantage of
128 this option (using ${NETBSDSRCDIR}/etc), so if you
129 use USETOOLS==no, you may have to rebuild and
130 reinstall usr.bin/xinstall first.
131
132 20021130:
133 fparseln(3) moved from libutil to libc.
134 If building to DESTDIR=/, reinstall the includes
135 and rebuild libc:
136 make includes
137 make do-lib-libc
138 If using build.sh, "cd tools/compat && make clean"
139 before rebuilding the tools.
140
141 20021126:
142 The mk.conf(5) variable SYS_INCLUDE has been deprecated,
143 including the optional "SYS_INCLUDE=symlinks" support.
144 All header files, including <sys/*.h> are copied into
145 /usr/include.
146
147 20021121:
148 The C run-time support files crtbegin.o and crtend.o
149 (and their companions crtbeginS.o and crtendS.o) were
150 split up, with new crti.o and crtn.o files resulting.
151 This means that libtool needs to be rebuilt once the
152 new libraries are installed. The process of rebuilding
153 libtool will cause it to automatically notice the new
154 required files, but it *must* be rebuilt in order to
155 do this.
156
157 An out-of-date libtool will result in shared libraries
158 which lack _init() and _fini() routines, which means that
159 their global contructors/destructors will not be invoked.
160
161 20021121:
162 A bug related to how ARM ELF objects were tagged has been
163 corrected.
164
165 NetBSD ARM ELF uses the soft-VFP floating point model by
166 default. However, the assembler lacked support for marking
167 objects as using the VFP floating point format, and the
168 compiler was not properly passing the flag indicating "soft-VFP"
169 to the assembler.
170
171 Unfortunately, this means that the linker will now consider
172 old (i.e. not marked "softvfp") NetBSD ARM ELF objects to be
173 incompatible with new (properly marked) objects.
174
175 The problem will only manifest itself if you attempt to compile
176 a new program using the fixed toolchain, and link that program
177 against old libraries which do not have the proper "softvfp"
178 markings. ALL OF YOUR EXISTING BINARIES AND SHARED LIBRARIES
179 WILL CONTINUE TO WORK PROPERLY.
180
181 The only work-around for the problem is to recompile all of
182 the libraries on the system. The easiest way to do this for
183 system libraries is to install a binary snapshot; they are
184 generally available on releng.NetBSD.org. Any packages you
185 have installed which supply libraries will have to be recompiled
186 if you wish to link new programs against those libraries.
187
188 If you have questions about this matter, please contact
189 port-arm (a] NetBSD.org.
190
191 20021011:
192 Systrace has been improved to support privilege elevation.
193 Updating the kernel requires the userland part of systrace
194 to be rebuilt.
195
196 20021010:
197 The config(8) grammar was changed to allow options to register
198 dependencies on attributes, as well as other options. Users
199 must update and reinstall usr.sbin/config before building a new
200 kernel.
201
202 20021009:
203 A new attribute dependency syntax was introduced to config(8),
204 which is now used by the SCSI configuration description. Users
205 must update and reinstall usr.sbin/config before building a new
206 kernel.
207
208 20021003:
209 Several changes have been made to the autoconfiguration
210 framework. Users must update and reinstall usr.sbin/config
211 before building a new kernel.
212
213 20021001:
214 The i386mp branch has been merged. To compile a kernel, users
215 will need to add the option 'cpu* at mainbus?' to their configuration
216 file. Multiprocessor kernels will need
217 ioapic* at mainbus? apid ?
218 options MULTIPROCESSOR
219 options COM_MPLOCK
220
221 20020922:
222 MKDYNAMICROOT=yes enabled by default, which means that
223 certain shared libraries are installed into /lib, the shared
224 linker is installed into /libexec, and all programs in /bin
225 and /sbin are dynamically linked.
226 If you do not use "make build", you should ensure that
227 you have the libraries and shared linker in the new locations,
228 with:
229 make do-lib-csu do-lib-libc do-lib do-gnu-lib do-ld.elf_so
230
231 20020917:
232 USE_NEW_TOOLCHAIN has been replaced with:
233 - TOOLCHAIN_MISSING -- set to "yes" on platforms for which
234 there is no working in-tree toolchain (hppa, ns32k, sh5,
235 x86_64).
236 - EXTERNAL_TOOLCHAIN -- if defined by the user, points to the
237 root of an external toolchain (e.g. /usr/local/gnu). This
238 enables the cross-build framework even for TOOLCHAIN_MISSING
239 platforms.
240
241 20020906:
242 gehenna-devsw has been merged into the trunk. Need to update and
243 reinstall usr.sbin/config before building the kernel.
244
245 20020822:
246 Crunched rescue tools (contents of /bin and /sbin, plus others)
247 are now provided in /rescue.
248
249 To ensure that these are built statically linked (no matter
250 what the setting of LDSTATIC is), use a crunchgen(1) built
251 from sources newer than 20020820 (see the next entry).
252
253 20020820:
254 crunchgen(1) changed to ensure that the generated program
255 is statically linked.
256
257 Solution: update and reinstall usr.bin/crunch
258
259 20020605:
260 smmsp user/group has been added for sendmail.
261
262 Add the following into /etc/group:
263
264 smmsp:*:17:
265
266 and the following to /etc/master.passwd (via vipw):
267
268 smmsp:*:17:17::0:0:Sendmail Message Submission Program:/nonexistent:/sbin/nologin
269
270 20020515:
271 sshd user/group has been added. Need to hand add this in, or sshd
272 will not let you log in (with default, or UsePrivlegeSeparation=yes)
273
274 Add the following into /etc/group:
275
276 sshd:*:16:
277
278 and the following to /etc/master.passwd (via vipw):
279
280 sshd:*:16:16::0:0:& pseudo-user:/var/chroot/sshd:/sbin/nologin
281
282 Also /var/chroot/sshd directory needs to be present (digged as part of
283 the build process).
284
285 20020426:
286 NBUILDJOBS obsoleted in favor of just using -j.
287
288 20020426:
289 etc/postinstall added, which performs various checks for
290 configuration file updates and changes, and can fix most of
291 the problems identified.
292 This should make it much easier to upgrade a system's
293 configuration from earlier systems (as far back as NetBSD 1.5).
294
295 20020320:
296 <bsd.lib.mk> needs a new install(1) for its "-a cmd" support.
297 Build and install at usr.bin/xinstall before the build.
298
299 20020319:
300 Raw IPv6 socket now makes strict checking for sa_family and sa_len
301 on send(2) operation. Be sure to have sbin/rtsol and usr.sbin/rtsold
302 newer than November 2001 when you upgrade the kernel.
303
304 20020311:
305 ssh configuration files were moved from /etc to /etc/ssh. Beware
306 if you restart your machine from remote. Note that sshd.conf needs
307 to be changed (due to the use of "/etc" inside).
308
309 20020223:
310 Users of the VAX port will need to rebuild and install gas
311 so it deal with the now present register prefix used in all
312 the VAX assembly files.
313
314 20020118:
315 ntpd user/group has been added. Need to hand add this in or builds
316 will break as mtree aborts early.
317
318 Add the following into /etc/group:
319
320 ntpd:*:15:
321
322 and the following to /etc/master.passwd (via vipw):
323
324 ntpd:*:15:15::0:0:Ntpd pseudo-user:/var/chroot/ntpd:/sbin/nologin
325
326 20011207:
327 If you're attempting to build a snapshot on sparc64 and are getting
328 reloc errors from the toolchain groff binary this means your native
329 toolchain has some broken C++ bits.
330
331 To fix:
332
333 Build a new toolchain (i.e. build.sh -t)
334 Use the new toolchain to build and install natively (i.e. /usr/lib)
335
336 gnu/lib/libgcc
337 gnu/lib/libstdc++
338
339 After this a snapshot will be able to be built.
340
341 20011201:
342 In order for a sparc64 build to work you must have a working awk. If
343 you've built and installed a system with the new toolchain up to this
344 point you do not have a working awk as its ability to do floating
345 point is broken.
346
347 To build:
348
349 remake and install gnu/lib/libgcc
350 remake and install gnu/usr.bin/gawk into /usr/bin (make sure it links
351 against the new libgcc.a)
352
353 20011128:
354 Kernel config information was changed to use defflag in
355 the various "files" files. Bug fixes to config(8) are
356 required in order for this to work properly. Make sure
357 to build and install in usr.sbin/config before attempting
358 to build a new kernel.
359
360 20011030:
361 libc/locale/wcstod.c now needs new lint(1). Update lint(1)
362 before building libc.
363
364 20011029:
365 The new document BUILDING.mdoc (view with nroff | more, or
366 see pre-generated .txt and .html versions) describes the build
367 procedure in great detail. BUILDING, and the USE_NEW_TOOLCHAIN
368 build process, are intended in the long run to replace this
369 manual update log.
370
371 Users building a USE_NEW_TOOLCHAIN system should read the
372 BUILDING document for caveats. Generally, BUILDING supersedes
373 UPDATING for these systems, as tool updating is taken care of
374 by the new build system.
375
376 20011028:
377 src/etc/Makefile now needs install to be able to handle
378 symlinks that point to nowhere. A bug in install that
379 prevented this was corrected.
380
381 Solution: update and reinstall usr.bin/xinstall
382 Better Solution: Use the new toolchain and it will just work
383 for you.
384
385 20011006:
386 /etc/mtree/NetBSD.dist has been updated to take advantage of
387 absolute path support added to mtree(8). Older mtree(8)s don't
388 understand the format.
389
390 Solution: update and reinstall usr.sbin/mtree
391
392 20011004:
393 Crunchgen has been updated to work via reach-over makefiles. Updating
394 is suggested before running a snapshot build
395
396 20010915:
397 The new "ubcperf" code committed by Chuck Silvers removed
398 a header file, uvm/uvm_vnode.h. There may be stale .depend
399 files that still reference this file.
400
401 Solution: "make cleandir && make dependall" in affected
402 directories.
403
404 20010803:
405 grep.info is now built from grep.texi using makeinfo. Since it
406 requires makeinfo v4.0, you need to install new texinfo before
407 building gnu/usr.bin/grep. To install new texinfo, please follow
408 the instruction described in 20010726 entry.
409
410 20010803:
411 (i386 only): i386 kernel now uses new instructions like
412 `fxsave' which old gas doesn't understand. To build the
413 kernel successfully, you need to build and install a new toolchain,
414 (i.e., build.sh -t) or (temporarily) comment out "options I686_CPU"
415 from your kernel configuration until you rebuild your userland.
416 See 20011029 above and BUILDING file in this directory for more information.
417 [updated 20020630 since i386 gas moved when USE_NEW_TOOLCHAIN enabled]
418
419 20010731:
420 Bootloader update on ELF platforms. DDB in kernels from before
421 this will be unable to read symbol tables provided by newer
422 bootloaders.
423
424 20010726:
425 Texinfo was updated to 4.0. To avoid failures when trying to
426 build the included texinfo files, do:
427
428 cd src/gnu/usr.bin/texinfo
429 make MKINFO=no dependall install
430
431 20010718:
432 Enabled correct .init/.fini processing in crt0. The way this
433 was done was to change a -I directive to cc(1), which means
434 make(1) will have a stale dependency (it will be checking the
435 timestamp on the wrong "dot_init.h").
436
437 The symptom you will see is that new programs die with SIGSEGV
438 if you have a stale dependency.
439
440 Solution: "make cleandir" in both lib/csu and libexec/ld.elf_so
441 before starting your build.
442
443 20010628:
444 A construct was added to uvm_page.h that uncovered a bug
445 in lint(1). If you get a warning/error about a non-portable
446 bitfield, update your lint(1) before proceeding.
447
448 20010226:
449 Added named user/group to system. Need to hand add this in or builds
450 will break as mtree aborts early.
451
452 To work around add by hand:
453
454 named:*:14:
455
456 to /etc/group and add:
457
458 named:*:14:14::0:0:Named pseudo-user:/var/named:/sbin/nologin
459
460 to master.passwd (use vipw for instance if doing by hand).
461
462 Now a make build should progress.
463
464 20010219:
465 get/setprogname() added. Any hostprogs that may use this will need
466 to be bootstrapped manually until the host system is current.
467
468 Known problems: sys/arch/macppc/stand/fixcoff
469 usr.sbin/config (adding -DMAKE_BOOTSTRAP to
470 CFLAGS and rebuilding should work)
471 usr.sbin/mdsetimage - Build a static copy if
472 building a snapshot before fully bootstrapped.
473
474 20010204:
475 prepare the code to compile with stricter gcc flags. in
476 particular start eliminating redundant declarations. Yacc
477 needs to be installed before make build.
478
479 20010114:
480 introduce .if commands(target) in make(1). You need to
481 bring everything up-to-date first, then without installing
482 anything make and install in usr.bin/make, then proceed
483 with make build.
484
485 20010101:
486 bsd.subdir.mk committed 20001230 had a bug which caused
487 afterinstall targets to run too soon; update again.
488
489 20001230:
490 New share/mk files needed to support .WAIT in SUBDIR variables.
491 If you get make errors,
492 (cd share/mk; make install)
493 Also, PRINTOBJDIR has changed and is now used more heavily.
494
495 20001019:
496 The `ca' device driver has been replaced by `ld'; although the
497 major and minor numbers haven't changed, you should update your /dev
498 directory.
499
500 20000929:
501 The following make directives are obsoleted.
502 MKCRYPTO_RSA NOCRYPTO_RSA NOCRYPTO_RC5 NOCRYPTO_IDEA
503 By default, RSA is built into libcrypto. IDEA and RC5 will not be
504 built into libcrypto. By using MKCRYPTO_{RC5,IDEA}, you can build
505 additional library libcrypto_{idea,rc5}.
506
507
508 Hints for a more successful build:
509 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
510 Build a new kernel first:
511 This makes sure that any new system calls or features
512 expected by the new userland will be present. This
513 helps to avoid critical errors when upgrading.
514 Use object directories:
515 This helps to keep stale object
516 files from polluting the build if a Makefile "forgets"
517 about one. It also makes it easier to clean up after
518 a build. It's also necessary if you want to use the
519 same source tree for multiple machines.
520 To use object directories:
521 a) cd /usr/src ; make cleandir
522 b) Add "OBJMACHINE=yes" to /etc/mk.conf
523 c) Add "MKOBJDIRS=yes" to /etc/mk.conf
524 d) cd /usr/src ; make build
525 Note that running "make obj" in a directory will create
526 in obj.$MACHINE directory.
527 Build to a DESTDIR:
528 This helps to keep old
529 installed files (especially libraries) from interfering
530 with the new build.
531 To build to a DESTDIR, set the DESTDIR environment
532 variable before running make build. It should be set to
533 the pathname of an initially empty directory.
534 Problems: you might need to update critical utilities
535 without using DESTDIR since nothing is executed
536 from what is installed in DESTDIR.
537 (See critical utils, below)
538 Build often:
539 This keeps critical utilities current enough to not choke
540 on any other part of the source tree that depends on up to
541 date functionality.
542
543 What to do if things don't work:
544 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
545 When things don't work there is usually a few things that commonly
546 should be done.
547 1) make includes
548 This should be done automatically by make build.
549 2) cd share/mk && make install
550 Again, automatically done by make build.
551
552 Failsafe rebuild of a small part of the tree:
553 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
554 To make sure you rebuild something correctly you want to do
555 something like the following:
556 1) Make sure the includes and .mk files are up to date.
557 2) Make sure any program used to build the particular
558 utility is up to date. (yacc, lex, etc...)
559 3) cd ...path/to/util...
560 make cleandir
561 rm ...all obj directories...
562 make cleandir # yes, again
563 make obj
564 make depend && make
565
566 Failsafe rebuild of the entire tree:
567 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
568 If you really want to make sure the source tree is clean and
569 ready for a build try the following. Note that sourcing /etc/mk.conf
570 (a make(1) Makefile) in this manner is not right, and will not work
571 for anyone who uses any make(1) features in /etc/mk.conf.
572
573 ---cut here---
574 #!/bin/sh
575 . /etc/mk.conf
576
577 if [ -z $NETBSDSRCDIR ] ; then
578 NETBSDSRCDIR=/usr/src
579 fi
580 if [ \! -d $NETBSDSRCDIR ] ; then
581 echo Unable to find sources
582 exit 1
583 fi
584 find $NETBSDSRCDIR -name \*.o -o -name obj.\* -o -name obj -exec rm \{\} \;
585
586 if [ -z $BSDOBJDIR ] ; then
587 BSDOBJDIR=/usr/obj
588 fi
589 if [ -d $BSDOBJDIR ] ; then
590 rm -rf $BSDOBJDIR
591 fi
592
593 cd $NETBSDSRCDIR && make cleandir
594
595 ---cut here---
596
597 Critical utilities:
598 ^^^^^^^^^^^^^^^^^^^
599 gnu/usr.bin/egcs
600 usr.bin/compile_et
601 usr.bin/make
602 usr.bin/yacc
603 usr.bin/lex
604 usr.bin/xlint
605 usr.sbin/config
606
607 Other problems and possible solutions:
608 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
609 Symptom:Unreasonable compiler errors.
610 Fix: Rebuild gnu/usr.bin/egcs
611
612 Symptom:Complaints involving a Makefile.
613 Fix: Rebuild usr.bin/make:
614 cd usr.bin/make && make && make install
615 Or, a failsafe method if that doesn't work:
616 cd usr.bin/make && cc *.c */*.c -I . -o make && mv make /usr/bin
617
618 Fix: Make sure .mk files are up to date.
619 cd share/mk && make install
620
621 Symptom:Kernel `config' fails to configure any kernel, including GENERIC.
622 Fix: Rebuild usr.sbin/config
623
624 Symptom:
625 Fix: Rebuild usr.bin/yacc
626
627 Symptom:
628 Fix: Rebuild usr.bin/lex
629
630 Symptom:
631 Fix: rm /usr/lib/libbfd.a
632
633 Symptom:Obsolete intermediate files are used during compilation
634 Fix: Try the following sequence of commands in the directory in question.
635 make cleandir; rm `make print-objdir`; make cleandir; make obj
636 (If you built the tree without "make obj" in the past, obsolete files
637 may remain. The command tries to clean everything up)
638
639 Symptom:.../sysinst/run.c:xx: warning: initialization from incompatible pointer type
640 Fix: Rebuild and install usr.bin/menuc
641
642 Symptom:mklocale not found during build in share/locale/ctype
643 Fix: Build and install usr.bin/mklocale
644
645 Symptom:undefined reference to `__assert13' or `__unsetenv13'
646 Fix: Rebuild and install lib/libc
647
648 Symptom:usr.sbin/config fails to build.
649 Fix: Try building with -DMAKE_BOOTSTRAP added to CFLAGS in Makefile.
650
651 Symptom:undefined reference to `getprogname' or `setprogname'
652 Fix: Rebuild and install lib/libc
653
654 Symptom:lint does not understand the '-X' option
655 Fix: May need to build & install libs with NOLINT=1 before rebuilding lint
656