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