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