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