UPDATING revision 1.150 1 $NetBSD: UPDATING,v 1.150 2006/08/15 20:48:01 bjh21 Exp $
2
3 This file (UPDATING) is intended to be a brief reference to recent
4 changes that might cause problems in the build process, and a guide for
5 what to do if something doesn't work.
6
7 For a more detailed description of the recommended way to build NetBSD
8 using build.sh, see the BUILDING file.
9
10 Note that much of the advice in this UPDATING file was written before
11 build.sh existed. Nevertheless, the advice here may be useful for
12 working around specific problems with build.sh.
13
14 See also: BUILDING, build.sh, Makefile.
15
16 Recent changes:
17 ^^^^^^^^^^^^^^^
18
19 20060814:
20 The vt, vidcconsole, kbd, and rpckbd drivers on acorn32 have been
21 withdrawn. Use vidcvideo and pckbd instead. See the GENERIC
22 kernel configuration for an example. X servers from the last
23 few years should cope.
24
25 20060703:
26 MPACPI is no more. We always configure PCI interrupts using ACPI
27 if we have an ACPI kernel. The option MPACPI_SCANPCI has been renamed
28 to ACPI_SCANPCI. Thanks to work from fvdl.
29
30 20060627:
31 socket(2) has changed, and its system call has been versioned.
32 For userlands with the old version of socket(2), make sure that
33 your kernel has 'options COMPAT_30' set, or else 'bad system call'
34 errors will result.
35
36 20060526:
37 The kernel linker scripts for i386 and xen
38 (sys/arch/i386/conf/kern.ldscript*) were changed to set the
39 load address correctly, for the benefit of MULTIBOOT boot loaders
40 (like Grub). If you use a linker (ld) older than from 2006/04/17, it
41 will be unable to link the kernel because of a bug and ld will fail
42 with an error like:
43 ../../../../arch/i386/conf/kern.ldscript:45 \
44 non constant expression for load base
45 You need to update at least src/gnu/dist/binutils/ld and recompile
46 and install the linker. If using the build.sh script, the easiest
47 way is with a "build.sh tools" command, with any other options
48 that you use normally. When using build.sh, the linker binary is
49 installed as ${TOOLDIR}/bin/i386--netbsdelf-ld.
50
51 20060131:
52 the protocol between the sparc64 bootloader (ofwboot) and
53 the kernel was changed. Before installing a new kernel,
54 you need to update ofwboot. After a full build, just copy
55 /usr/mdec/ofwboot to /, or do a rebuild of
56 src/sys/arch/sparc/stand/ofwboot and install the result to /.
57
58 20050917:
59 arch/*/conf/std.* was changed to include conf/std, which
60 contains MI options previously enabled by default.
61 If you have kernel config files which doesn't include
62 arch/*/conf/std.*, you need to edit them to include conf/std
63 to get the previous configuration.
64
65 20050830:
66 named.conf was moved from /etc/namedb to /etc.
67 postinstall(8) migrates this during interactive use.
68 Users of MKUPDATE=yes will need to manually rectify
69 this in their DESTDIR.
70
71 20050825:
72 Some data structures in sys/device.h, related to interface
73 attributes and locator names, were changed. config(1) was
74 modified to emit the new data structures.
75 Thus usr.bin/config must be updated (and run on the kernel
76 configuration file) before a new kernel can be built.
77
78 20050531:
79 genassym.sh(8) was moved to genassym(1). You need to either build
80 tools first or install the version of genassym from /usr/bin before
81 you can build a kernel again.
82
83 20050520:
84 Because a kernfs bug which xentools relies on was fixed,
85 xentools up to xentools20-2.0.3nb4 won't work with new kernel.
86
87 20050417:
88 postinstall(8) was moved from /etc to /usr/sbin and made part
89 of the "base" set, to make it easier to invoke after an
90 upgrade.
91
92 20050325:
93 pcppi(4) was separated in two devices, adding attimer(4). Be sure
94 to add a config line for an attimer(4) device in your kernel
95 configuration, or you won't be able to set the pitch of the beep
96 with wsconsctl. Depending on the default value for the pitch, you
97 might even not hear any more beep. Also, it is advised to attach both
98 devices the same way (i.e., both on isa or both on acpi) or the
99 pcppi(4) device may fail to find the attimer(4) one.
100
101 20050211:
102 Fixes to tools/Makefile.gnuhost may cause UPDATE=1 builds in
103 some of the cross tools to fail if they use configure. Some configure's
104 cache the environment passed in and notice the new environment is
105 different and abort. Doing a clean in tools/ should be enough to
106 make a build continue.
107
108 20050109:
109 Since su is using pam by default now, make sure that you have
110 /etc/pam.d populated (postinstall will do that automatically
111 for you). Otherwise su will fail open (i.e. will not require
112 a password).
113
114 20041229:
115 Make had a path resolution bug that manifested itself as not
116 being able to install openpam.3. This bug has been fixed, but
117 you might need to rebuild make manually first to get through
118 the build.
119
120 20041201:
121 Userland programs have been changed to use /dev/bpf instead of
122 /dev/bpfX. You need to create that device by installing a new
123 MAKEDEV and running it, or mv /dev/bpf0 /dev/bpf && rm /dev/bpf[0-9]*
124
125 20041006:
126
127 A bug was introduced into /bin/sh (var.c rev 1.35) which causes
128 variables to not export correctly to subshells in all cases. This
129 will cause builds to break if that version of /bin/sh is installed
130 on the system. The proper version of /bin/sh can be verified with:
131
132 ident /bin/sh | grep var
133
134 Any /bin/sh w. version 1.35 will not work and needs to be updated
135 before attempting a build.
136
137 20041001:
138 The ipfilter kernel sources moved from sys/netinet to
139 dist/sys/ipf/netinet. Due to the move some Makefile
140 dependencies are now dangling requiring a make cleandir
141 before they work again (kdump, ktruss, rescue, ipf, and
142 ftp-proxy are the victims).
143
144 20040715:
145 The rc.d/sendmail script now uses a heuristic to determine
146 if sendmail should be started at boot time. It checks the
147 contents of /etc/mailer.conf, /etc/mail/submit.cf, and the
148 owner and mode of the sendmail binary to see if any changes
149 to the mail infrastructure have been made. If no changes
150 are detected, it will start an SMTP listener.
151
152 Setting sendmail=NO in /etc/rc.conf will override this.
153
154 If you are only using sendmail by default and only for
155 local delivery, it is important that you also update your
156 sendmail.cf so that the SMTP listener only listens on the
157 loopback interface.
158
159 20040715:
160 The method by which athhal-elf.o gets pulled into i386
161 kernel builds has been changed again. The latest version
162 of bsd.files.mk is no longer required.
163
164 20040621:
165 Due to the recent rototill of tools/compat it's crucial one starts
166 from a clean objdir under tools/*.
167
168 This is mostly due to generated files (yacc and lex sources) needing
169 to be generated with new rules from bsd.hostprog.mk.
170
171 The safest course is to rm -rf all objects under tools before building.
172
173 20040516:
174 The end-user modifiable X11 configuration has been moved
175 from /usr/X11R6/lib/X11/<dir> to /etc/X11/<dir>.
176 Ensure that src and xsrc is up to date, and run
177 "make cleandir" in src/x11 before your next build.
178
179 postinstall currently doesn't migrate the files from
180 /usr/X11R6/lib/X11/* to /etc/X11/* although it does
181 detect that this needs to occur, so you'll have to
182 manually move these files yourself.
183
184 20040426:
185 Support for the original dynamic sysctl node structure has
186 been removed in favor of the newer layout. This affects
187 consumers of the create and delete interface, as well as
188 the dynamic discovery mechanism. This is believed only to
189 be the sysctl(8) binary itself, at this point in time, so
190 the only effect of this should be that a sysctl binary
191 built from sources dated between 2003/12/04 and 2004/03/24
192 will not work on a kernel built from sources dated after
193 2004/04/25. If you need a new sysctl binary but build.sh
194 does not work, make sure that your revision of
195 src/sys/sys/sysctl.h is 1.112 (or later), and then the
196 do the following:
197
198 cd /usr/src (or wherever your source tree is)
199 make USETOOLS=no includes
200 cd lib/libc
201 make USETOOLS=no dependall install
202 cd ../../sbin/sysctl
203 make USETOOLS=no dependall install
204
205 If you are using older sysctl binary, GNU autoconf would fail to
206 identify your machine architecture, and tries to build binary for
207 "unknown-unknown-netbsd20F" or something like that. if that happens,
208 make sure to follow the above steps.
209
210 20040425:
211 The ffs superblock issues listed below under 20040109 and 20030402
212 are now automatically addressed by the /etc/rc.d/fixsb script or by
213 sysinst when it checks a a filesystem. The manual fsck_ffs -b16 -c4
214 invocation mentioned below will continue to work and is now
215 automated by those scripts. Note that under certain circumstances,
216 affected filesystems upgraded to a -current kernel first before
217 upgrading their userland with the fixsb and fsck_ffs fixes may
218 encounter a 'freeing free inode' panic when writing to the affected
219 filesystem, so it is a good idea to repair the filesystem as soon as
220 possible. For more details on the fixsb script, see pr install/25138.
221
222 20040418:
223 statfs(2) and friends have been replaced with statvfs(2). Before
224 installing a newly build userland make sure that you are running
225 a newly built kernel with COMPAT_20 set. In addition your libc
226 build might not work (undefined SYS_statfs symbol) because make
227 clean does not know how to remove files it does not know about
228 anymore. Manually remove all generated .S sources and objects
229 from the libc build directory.
230
231 20040326:
232 The method by which athhal-elf.o gets pulled into i386 kernel builds
233 has been changed. The file is now stored as a uuencoded file in CVS
234 and the generated Makefile will use the new .uue rules from bsd.file.mk
235 to build it.
236
237 This means you must have the latest bsd.files.mk installed when
238 building a kernel without USETOOLS=yes.
239
240 20040318:
241 A bug in the cgd(4) blowfish code was corrected, without
242 provision of backwards compatibility, after several public
243 notices over several months. Users of cgd with blowfish cipher
244 ONLY must dump their data before updating their kernels, and
245 recreate cgd's and restore data using the new kernel. See
246 (recent message to current-users, URL when mail-index has updated)
247
248 20040313:
249 On acorn32, the opms and qms drivers have been withdrawn, and
250 the old wsqms driver is now called qms. Kernel config files
251 will need updating. See the ones in sys/arch/acorn32/conf
252 for examples.
253
254 20040125:
255 On acorn32, the beep and sysbeep devices are no longer
256 needed, and will need to be deleted from kernel configuration
257 files.
258
259 20040109:
260 Compatibility for old ffs superblock layouts has been
261 added, and the restrictive fsck checks have been reenabled
262 when using those layouts. If you have been using -current
263 since 20030402, you may find that fsck again signals fatal
264 superblock mismatches. To repair, make sure you have
265 an updated fsck_ffs and then you can use fsck_ffs -b 16 -c 4
266 to complete the filesystem upgrade. A message has
267 been added to the kernel which should detect this problem.
268 See the following discussion for more information:
269 http://mail-index.NetBSD.org/current-users/2004/01/11/0022.html
270
271 20031203:
272 New binutils builds may fail due to old dependencies.
273 It's necessary to "make cleandir" to ensure that
274 the dependencies will be rebuilt correctly.
275
276 20031111:
277 A newer mkdep is needed. Error noting that is
278 cc: Ambiguous abbreviation --
279
280 20031008:
281 /usr/include/sys/disklabel_mbr.h was removed.
282 It's necessary to "make cleandir" to ensure that
283 the dependencies will be rebuilt correctly.
284
285 20031007:
286 A sign exension bug was fixed which set all the high bits
287 of our newly expanded ffs fs_flags. This should only
288 affect users who installed or upgraded in September of 2003.
289 A small utility program was posted to tech-kern which
290 should fix this problem, and a warning message was added
291 to the kernel which should discover and warn about it. See
292 http://mail-index.NetBSD.org/tech-kern/2003/10/07/0005.html
293
294 20030906:
295 With the addition of siginfo support the old signal trampoline
296 code has been deprecated to COMPAT_16. Make sure that your running
297 kernel has COMPAT_16 enabled before building userland.
298
299 20030801:
300 With the new openssl, there is some header and library shuffling.
301 rm -f /usr/include/des.h /usr/include/kerberosIV/* /lib/libdes* \
302 /usr/lib/libdes* before building.
303
304 20030703:
305 Texinfo was updated to 4.6. To avoid failures when trying to
306 build the included texinfo files, do:
307
308 cd src/gnu/usr.bin/texinfo
309 make MKINFO=no dependall install
310
311 20030630:
312 Groff was updated to 1.19; it's probably necessary to do
313 cd share/mk && make install
314 cd src/gnu/usr.bin/groff
315 make MKMAN=no dependall install
316 (untested).
317
318 20030516:
319 Due to bugs in the export handling code, invalid export lines
320 were accepted before and caused the kernel to panic when
321 mountd got restarted because it freed memory that had already
322 been freed. This has been fixed and the kernel checks
323 export addresses very strictly. If you upgrade your kernel,
324 make sure you also upgrade mountd, because if your export
325 file contains lines with an old inet4 address syntax (i.e.
326 a.b.c or a.b or a), they will get rejected by the new kernel.
327
328 20030402:
329 The superblock layout for FFS was changed. If you have 1.6
330 fsck binaries, they will signal a fatal superblock mismatch
331 with the first alternate, because they compare too many
332 fields (even ones that aren't useful). If possible, upgrade
333 your fsck_ffs binary before using a new kernel.
334 None of this signals actual filesystem damage.
335
336 20030324:
337 sendmail version 8.12.8 was imported. Since sendmail is
338 now setgid to the smmsp group, and runs in "collection"
339 mode for most common activities, there is a new config
340 file called submit.cf that needs to live in /etc/mail.
341 The generic submit.cf sample in /usr/share/sendmail/cf
342 is named netbsd-msp.cf. Upgrading your regular sendmail
343 configuration file is also strongly advised.
344
345 See the section named "MESSAGE SUBMISSION PROGRAM" in
346 the updated /usr/share/sendmail/README file for more
347 information.
348
349 20030117:
350 Texinfo was updated to 4.3. To avoid failures when trying to
351 build the included texinfo files, do:
352
353 cd src/gnu/usr.bin/texinfo
354 make MKINFO=no dependall install
355
356 20021223:
357 The METALOG format changed slightly, to remove the leading
358 "${DESTDIR}" from path names.
359 This only affects people building with UNPRIVED.
360 For complete safety, remove the DESTDIR entirely and
361 update tools/mtree, before running make build.
362
363 20021219:
364 CVS repository layout was changed. See the following for details
365 if you are using (anonymous) cvs to update your tree.
366
367 http://mail-index.NetBSD.org/netbsd-announce/2002/12/19/0000.html
368
369 20021219:
370 install(1) had a '-N dbdir' option added, to specify an
371 alternate location to look up users & groups (instead
372 of the host system passwd(5) and group(5) databases).
373
374 The build system was modified to take advantage of
375 this option (using ${NETBSDSRCDIR}/etc), so if you
376 use USETOOLS==no, you may have to rebuild and
377 reinstall usr.bin/xinstall first.
378
379 20021130:
380 fparseln(3) moved from libutil to libc.
381 If building to DESTDIR=/, reinstall the includes
382 and rebuild libc:
383 make includes
384 make do-lib-libc
385 If using build.sh, "cd tools/compat && make clean"
386 before rebuilding the tools.
387
388 20021126:
389 The mk.conf(5) variable SYS_INCLUDE has been deprecated,
390 including the optional "SYS_INCLUDE=symlinks" support.
391 All header files, including <sys/*.h> are copied into
392 /usr/include.
393
394 20021121:
395 The C run-time support files crtbegin.o and crtend.o
396 (and their companions crtbeginS.o and crtendS.o) were
397 split up, with new crti.o and crtn.o files resulting.
398 This means that libtool needs to be rebuilt once the
399 new libraries are installed. The process of rebuilding
400 libtool will cause it to automatically notice the new
401 required files, but it *must* be rebuilt in order to
402 do this.
403
404 An out-of-date libtool will result in shared libraries
405 which lack _init() and _fini() routines, which means that
406 their global contructors/destructors will not be invoked.
407
408 20021121:
409 A bug related to how ARM ELF objects were tagged has been
410 corrected.
411
412 NetBSD ARM ELF uses the soft-VFP floating point model by
413 default. However, the assembler lacked support for marking
414 objects as using the VFP floating point format, and the
415 compiler was not properly passing the flag indicating "soft-VFP"
416 to the assembler.
417
418 Unfortunately, this means that the linker will now consider
419 old (i.e. not marked "softvfp") NetBSD ARM ELF objects to be
420 incompatible with new (properly marked) objects.
421
422 The problem will only manifest itself if you attempt to compile
423 a new program using the fixed toolchain, and link that program
424 against old libraries which do not have the proper "softvfp"
425 markings. ALL OF YOUR EXISTING BINARIES AND SHARED LIBRARIES
426 WILL CONTINUE TO WORK PROPERLY.
427
428 The only work-around for the problem is to recompile all of
429 the libraries on the system. The easiest way to do this for
430 system libraries is to install a binary snapshot; they are
431 generally available on releng.NetBSD.org. Any packages you
432 have installed which supply libraries will have to be recompiled
433 if you wish to link new programs against those libraries.
434
435 If you have questions about this matter, please contact
436 port-arm (a] NetBSD.org.
437
438 20021011:
439 Systrace has been improved to support privilege elevation.
440 Updating the kernel requires the userland part of systrace
441 to be rebuilt.
442
443 20021010:
444 The config(8) grammar was changed to allow options to register
445 dependencies on attributes, as well as other options. Users
446 must update and reinstall usr.sbin/config before building a new
447 kernel.
448
449 20021009:
450 A new attribute dependency syntax was introduced to config(8),
451 which is now used by the SCSI configuration description. Users
452 must update and reinstall usr.sbin/config before building a new
453 kernel.
454
455 20021003:
456 Several changes have been made to the autoconfiguration
457 framework. Users must update and reinstall usr.sbin/config
458 before building a new kernel.
459
460 20021001:
461 The i386mp branch has been merged. To compile a kernel, users
462 will need to add the option 'cpu* at mainbus?' to their configuration
463 file. Multiprocessor kernels will need
464 ioapic* at mainbus? apid ?
465 options MULTIPROCESSOR
466 options COM_MPLOCK
467
468 20020922:
469 MKDYNAMICROOT=yes enabled by default, which means that
470 certain shared libraries are installed into /lib, the shared
471 linker is installed into /libexec, and all programs in /bin
472 and /sbin are dynamically linked.
473 If you do not use "make build", you should ensure that
474 you have the libraries and shared linker in the new locations,
475 with:
476 make do-lib-csu do-lib-libc do-lib do-gnu-lib do-ld.elf_so
477
478 20020917:
479 USE_NEW_TOOLCHAIN has been replaced with:
480 - TOOLCHAIN_MISSING -- set to "yes" on platforms for which
481 there is no working in-tree toolchain (hppa, ns32k, sh5,
482 x86_64).
483 - EXTERNAL_TOOLCHAIN -- if defined by the user, points to the
484 root of an external toolchain (e.g. /usr/local/gnu). This
485 enables the cross-build framework even for TOOLCHAIN_MISSING
486 platforms.
487
488 20020906:
489 gehenna-devsw has been merged into the trunk. Need to update and
490 reinstall usr.sbin/config before building the kernel.
491
492 20020822:
493 Crunched rescue tools (contents of /bin and /sbin, plus others)
494 are now provided in /rescue.
495
496 To ensure that these are built statically linked (no matter
497 what the setting of LDSTATIC is), use a crunchgen(1) built
498 from sources newer than 20020820 (see the next entry).
499
500 20020820:
501 crunchgen(1) changed to ensure that the generated program
502 is statically linked.
503
504 Solution: update and reinstall usr.bin/crunch
505
506 20020605:
507 smmsp user/group has been added for sendmail.
508
509 Add the following into /etc/group:
510
511 smmsp:*:17:
512
513 and the following to /etc/master.passwd (via vipw):
514
515 smmsp:*:17:17::0:0:Sendmail Message Submission Program:/nonexistent:/sbin/nologin
516
517 20020515:
518 sshd user/group has been added. Need to hand add this in, or sshd
519 will not let you log in (with default, or UsePrivlegeSeparation=yes)
520
521 Add the following into /etc/group:
522
523 sshd:*:16:
524
525 and the following to /etc/master.passwd (via vipw):
526
527 sshd:*:16:16::0:0:& pseudo-user:/var/chroot/sshd:/sbin/nologin
528
529 Also /var/chroot/sshd directory needs to be present (digged as part of
530 the build process).
531
532 20020426:
533 NBUILDJOBS obsoleted in favor of just using -j.
534
535 20020426:
536 etc/postinstall added, which performs various checks for
537 configuration file updates and changes, and can fix most of
538 the problems identified.
539 This should make it much easier to upgrade a system's
540 configuration from earlier systems (as far back as NetBSD 1.5).
541
542 20020320:
543 <bsd.lib.mk> needs a new install(1) for its "-a cmd" support.
544 Build and install at usr.bin/xinstall before the build.
545
546 20020319:
547 Raw IPv6 socket now makes strict checking for sa_family and sa_len
548 on send(2) operation. Be sure to have sbin/rtsol and usr.sbin/rtsold
549 newer than November 2001 when you upgrade the kernel.
550
551 20020311:
552 ssh configuration files were moved from /etc to /etc/ssh. Beware
553 if you restart your machine from remote. Note that sshd.conf needs
554 to be changed (due to the use of "/etc" inside).
555
556 20020223:
557 Users of the VAX port will need to rebuild and install gas
558 so it deal with the now present register prefix used in all
559 the VAX assembly files.
560
561 20020118:
562 ntpd user/group has been added. Need to hand add this in or builds
563 will break as mtree aborts early.
564
565 Add the following into /etc/group:
566
567 ntpd:*:15:
568
569 and the following to /etc/master.passwd (via vipw):
570
571 ntpd:*:15:15::0:0:Ntpd pseudo-user:/var/chroot/ntpd:/sbin/nologin
572
573 20011207:
574 If you're attempting to build a snapshot on sparc64 and are getting
575 reloc errors from the toolchain groff binary this means your native
576 toolchain has some broken C++ bits.
577
578 To fix:
579
580 Build a new toolchain (i.e. build.sh -t)
581 Use the new toolchain to build and install natively (i.e. /usr/lib)
582
583 gnu/lib/libgcc
584 gnu/lib/libstdc++
585
586 After this a snapshot will be able to be built.
587
588 20011201:
589 In order for a sparc64 build to work you must have a working awk. If
590 you've built and installed a system with the new toolchain up to this
591 point you do not have a working awk as its ability to do floating
592 point is broken.
593
594 To build:
595
596 remake and install gnu/lib/libgcc
597 remake and install gnu/usr.bin/gawk into /usr/bin (make sure it links
598 against the new libgcc.a)
599
600 20011128:
601 Kernel config information was changed to use defflag in
602 the various "files" files. Bug fixes to config(8) are
603 required in order for this to work properly. Make sure
604 to build and install in usr.sbin/config before attempting
605 to build a new kernel.
606
607 20011030:
608 libc/locale/wcstod.c now needs new lint(1). Update lint(1)
609 before building libc.
610
611 20011029:
612 The new document BUILDING.mdoc (view with nroff | more, or
613 see pre-generated .txt and .html versions) describes the build
614 procedure in great detail. BUILDING, and the USE_NEW_TOOLCHAIN
615 build process, are intended in the long run to replace this
616 manual update log.
617
618 Users building a USE_NEW_TOOLCHAIN system should read the
619 BUILDING document for caveats. Generally, BUILDING supersedes
620 UPDATING for these systems, as tool updating is taken care of
621 by the new build system.
622
623 20011028:
624 src/etc/Makefile now needs install to be able to handle
625 symlinks that point to nowhere. A bug in install that
626 prevented this was corrected.
627
628 Solution: update and reinstall usr.bin/xinstall
629 Better Solution: Use the new toolchain and it will just work
630 for you.
631
632 20011006:
633 /etc/mtree/NetBSD.dist has been updated to take advantage of
634 absolute path support added to mtree(8). Older mtree(8)s don't
635 understand the format.
636
637 Solution: update and reinstall usr.sbin/mtree
638
639 20011004:
640 Crunchgen has been updated to work via reach-over makefiles. Updating
641 is suggested before running a snapshot build
642
643 20010915:
644 The new "ubcperf" code committed by Chuck Silvers removed
645 a header file, uvm/uvm_vnode.h. There may be stale .depend
646 files that still reference this file.
647
648 Solution: "make cleandir && make dependall" in affected
649 directories.
650
651 20010803:
652 grep.info is now built from grep.texi using makeinfo. Since it
653 requires makeinfo v4.0, you need to install new texinfo before
654 building gnu/usr.bin/grep. To install new texinfo, please follow
655 the instruction described in 20010726 entry.
656
657 20010803:
658 (i386 only): i386 kernel now uses new instructions like
659 `fxsave' which old gas doesn't understand. To build the
660 kernel successfully, you need to build and install a new toolchain,
661 (i.e., build.sh -t) or (temporarily) comment out "options I686_CPU"
662 from your kernel configuration until you rebuild your userland.
663 See 20011029 above and BUILDING file in this directory for more information.
664 [updated 20020630 since i386 gas moved when USE_NEW_TOOLCHAIN enabled]
665
666 20010731:
667 Bootloader update on ELF platforms. DDB in kernels from before
668 this will be unable to read symbol tables provided by newer
669 bootloaders.
670
671 20010726:
672 Texinfo was updated to 4.0. To avoid failures when trying to
673 build the included texinfo files, do:
674
675 cd src/gnu/usr.bin/texinfo
676 make MKINFO=no dependall install
677
678 20010718:
679 Enabled correct .init/.fini processing in crt0. The way this
680 was done was to change a -I directive to cc(1), which means
681 make(1) will have a stale dependency (it will be checking the
682 timestamp on the wrong "dot_init.h").
683
684 The symptom you will see is that new programs die with SIGSEGV
685 if you have a stale dependency.
686
687 Solution: "make cleandir" in both lib/csu and libexec/ld.elf_so
688 before starting your build.
689
690 20010628:
691 A construct was added to uvm_page.h that uncovered a bug
692 in lint(1). If you get a warning/error about a non-portable
693 bitfield, update your lint(1) before proceeding.
694
695 20010226:
696 Added named user/group to system. Need to hand add this in or builds
697 will break as mtree aborts early.
698
699 To work around add by hand:
700
701 named:*:14:
702
703 to /etc/group and add:
704
705 named:*:14:14::0:0:Named pseudo-user:/var/named:/sbin/nologin
706
707 to master.passwd (use vipw for instance if doing by hand).
708
709 Now a make build should progress.
710
711 20010219:
712 get/setprogname() added. Any hostprogs that may use this will need
713 to be bootstrapped manually until the host system is current.
714
715 Known problems: sys/arch/macppc/stand/fixcoff
716 usr.sbin/config (adding -DMAKE_BOOTSTRAP to
717 CFLAGS and rebuilding should work)
718 usr.sbin/mdsetimage - Build a static copy if
719 building a snapshot before fully bootstrapped.
720
721 20010204:
722 prepare the code to compile with stricter gcc flags. in
723 particular start eliminating redundant declarations. Yacc
724 needs to be installed before make build.
725
726 20010114:
727 introduce .if commands(target) in make(1). You need to
728 bring everything up-to-date first, then without installing
729 anything make and install in usr.bin/make, then proceed
730 with make build.
731
732 20010101:
733 bsd.subdir.mk committed 20001230 had a bug which caused
734 afterinstall targets to run too soon; update again.
735
736 20001230:
737 New share/mk files needed to support .WAIT in SUBDIR variables.
738 If you get make errors,
739 (cd share/mk; make install)
740 Also, PRINTOBJDIR has changed and is now used more heavily.
741
742 20001019:
743 The `ca' device driver has been replaced by `ld'; although the
744 major and minor numbers haven't changed, you should update your /dev
745 directory.
746
747 20000929:
748 The following make directives are obsoleted.
749 MKCRYPTO_RSA NOCRYPTO_RSA NOCRYPTO_RC5 NOCRYPTO_IDEA
750 By default, RSA is built into libcrypto. IDEA and RC5 will not be
751 built into libcrypto. By using MKCRYPTO_{RC5,IDEA}, you can build
752 additional library libcrypto_{idea,rc5}.
753
754
755 Hints for a more successful build:
756 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
757 Use build.sh, but do not use its "expert mode":
758 This will automatically build the tools in the
759 correct order, and it will keep the tools and the
760 new build products from interfering with the running
761 system. This will allow you to ignore most of the
762 other advice in this file.
763 Build a new kernel first:
764 This makes sure that any new system calls or features
765 expected by the new userland will be present. This
766 helps to avoid critical errors when upgrading.
767 Use object directories:
768 This helps to keep stale object
769 files from polluting the build if a Makefile "forgets"
770 about one. It also makes it easier to clean up after
771 a build. It's also necessary if you want to use the
772 same source tree for multiple machines.
773 To use object directories with build.sh:
774 a) invoke build.sh with the "-M" or "-O" options.
775 To use object directories without using build.sh:
776 a) cd /usr/src ; make cleandir
777 b) Add "OBJMACHINE=yes" to /etc/mk.conf
778 c) Add "MKOBJDIRS=yes" to /etc/mk.conf
779 d) cd /usr/src ; make build
780 Note that running "make obj" in a directory will create
781 in obj.$MACHINE directory.
782 Build to a DESTDIR:
783 This helps to keep old installed files (especially libraries)
784 from interfering with the new build.
785 To build to a DESTDIR with build.sh, use the "-D" option.
786 To build to a DESTDIR without using build.sh, set the DESTDIR
787 environment variable before running make build. It should be
788 set to the pathname of an initially empty directory.
789 Problems: if you do not use build.sh, you might need to
790 update critical utilities without using DESTDIR since
791 nothing is executed from what is installed in DESTDIR.
792 (See critical utils, below.)
793 Build often:
794 This keeps critical utilities current enough to not choke
795 on any other part of the source tree that depends on up to
796 date functionality. If you use build.sh, you should not have
797 this problem.
798
799 What to do if things don't work:
800 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
801 When things don't work there is usually a few things that commonly
802 should be done.
803 1) make includes
804 This should be done automatically by make build.
805 2) cd share/mk && make install
806 Again, automatically done by make build.
807
808 Failsafe rebuild of a small part of the tree:
809 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
810 To make sure you rebuild something correctly you want to do
811 something like the following:
812 1) Make sure the includes and .mk files are up to date.
813 2) Make sure any program used to build the particular
814 utility is up to date. (yacc, lex, etc...)
815 3) cd ...path/to/util...
816 make cleandir
817 rm ...all obj directories...
818 make cleandir # yes, again
819 make obj
820 make depend && make
821
822 Failsafe rebuild of the entire tree:
823 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
824 If you really want to make sure the source tree is clean and
825 ready for a build try the following. Note that sourcing /etc/mk.conf
826 (a make(1) Makefile) in this manner is not right, and will not work
827 for anyone who uses any make(1) features in /etc/mk.conf.
828
829 ---cut here---
830 #!/bin/sh
831 . /etc/mk.conf
832
833 if [ -z $NETBSDSRCDIR ] ; then
834 NETBSDSRCDIR=/usr/src
835 fi
836 if [ \! -d $NETBSDSRCDIR ] ; then
837 echo Unable to find sources
838 exit 1
839 fi
840 find $NETBSDSRCDIR -name \*.o -o -name obj.\* -o -name obj -exec rm \{\} \;
841
842 if [ -z $BSDOBJDIR ] ; then
843 BSDOBJDIR=/usr/obj
844 fi
845 if [ -d $BSDOBJDIR ] ; then
846 rm -rf $BSDOBJDIR
847 fi
848
849 cd $NETBSDSRCDIR && make cleandir
850
851 ---cut here---
852
853 Critical utilities:
854 ^^^^^^^^^^^^^^^^^^^
855 usr.bin/compile_et
856 usr.bin/make
857 usr.bin/yacc
858 usr.bin/lex
859 usr.bin/xlint
860 usr.bin/config
861
862 Other problems and possible solutions:
863 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
864 Symptom:Complaints involving a Makefile.
865 Fix: Rebuild usr.bin/make:
866 cd usr.bin/make && make && make install
867 Or, a failsafe method if that doesn't work:
868 cd usr.bin/make && cc *.c */*.c -I . -o make && mv make /usr/bin
869
870 Fix: Make sure .mk files are up to date.
871 cd share/mk && make install
872
873 Symptom:Kernel `config' fails to configure any kernel, including GENERIC.
874 Fix: Rebuild usr.bin/config
875
876 Symptom:
877 Fix: Rebuild usr.bin/yacc
878
879 Symptom:
880 Fix: Rebuild usr.bin/lex
881
882 Symptom:
883 Fix: rm /usr/lib/libbfd.a
884
885 Symptom:Obsolete intermediate files are used during compilation
886 Fix: Try the following sequence of commands in the directory in question.
887 make cleandir; rm `make print-objdir`; make cleandir; make obj
888 (If you built the tree without "make obj" in the past, obsolete files
889 may remain. The command tries to clean everything up)
890
891 Symptom:.../sysinst/run.c:xx: warning: initialization from incompatible pointer type
892 Fix: Rebuild and install usr.bin/menuc
893
894 Symptom:mklocale not found during build in share/locale/ctype
895 Fix: Build and install usr.bin/mklocale
896
897 Symptom:undefined reference to `__assert13' or `__unsetenv13'
898 Fix: Rebuild and install lib/libc
899
900 Symptom:usr.bin/config fails to build.
901 Fix: Try building with -DMAKE_BOOTSTRAP added to CFLAGS in Makefile.
902
903 Symptom:undefined reference to `getprogname' or `setprogname'
904 Fix: Rebuild and install lib/libc
905
906 Symptom:lint does not understand the '-X' option
907 Fix: May need to build & install libs with NOLINT=1 before rebuilding lint
908