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