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