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