UPDATING revision 1.124
1$NetBSD: UPDATING,v 1.124 2004/06/22 01:29:51 jmc 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 1920040621: 20 21 Due to the recent rototill of tools/compat it's crucial one starts 22 from a clean objdir under tools/*. 23 24 This is mostly due to generated files (yacc and lex sources) needing 25 to be generated w. new rules from bsd.hostprog.mk. 26 27 The safest course is to rm -rf all objects under tools before building. 28 2920040516: 30 The end-user modifiable X11 configuration has been moved 31 from /usr/X11R6/lib/X11/<dir> to /etc/X11/<dir>. 32 Ensure that src and xsrc is up to date, and run 33 "make cleandir" in src/x11 before your next build. 34 3520040426: 36 Support for the original dynamic sysctl node structure has 37 been removed in favor of the newer layout. This affects 38 consumers of the create and delete interface, as well as 39 the dynamic discovery mechanism. This is believed only to 40 be the sysctl(8) binary itself, at this point in time, so 41 the only effect of this should be that a sysctl binary 42 built from sources dated between 2003/12/04 and 2004/03/24 43 will not work on a kernel built from sources dated after 44 2004/04/25. If you need a new sysctl binary but build.sh 45 does not work, make sure that your revision of 46 src/sys/sys/sysctl.h is 1.112 (or later), and then the 47 do the following: 48 49 cd /usr/src (or wherever your source tree is) 50 make USETOOLS=no includes 51 cd lib/libc 52 make USETOOLS=no dependall install 53 cd ../../sbin/sysctl 54 make USETOOLS=no dependall install 55 56 If you are using older sysctl binary, GNU autoconf would fail to 57 identify your machine architecture, and tries to build binary for 58 "unknown-unknown-netbsd20F" or something like that. if that happens, 59 make sure to follow the above steps. 60 6120040425: 62 The ffs superblock issues listed below under 20040109 and 20030402 63 are now automatically addressed by the /etc/rc.d/fixsb script or by 64 sysinst when it checks a a filesystem. The manual fsck_ffs -b16 -c4 65 invocation mentioned below will continue to work and is now 66 automated by those scripts. Note that under certain circumstances, 67 affected filesystems upgraded to a -current kernel first before 68 upgrading their userland with the fixsb and fsck_ffs fixes may 69 encounter a 'freeing free inode' panic when writing to the affected 70 filesystem, so it is a good idea to repair the filesystem as soon as 71 possible. For more details on the fixsb script, see pr install/25138. 72 7320040418: 74 statfs(2) and friends have been replaced with statvfs(2). Before 75 installing a newly build userland make sure that you are running 76 a newly built kernel with COMPAT_20 set. In addition your libc 77 build might not work (undefined SYS_statfs symbol) because make 78 clean does not know how to remove files it does not know about 79 anymore. Manually remove all generated .S sources and objects 80 from the libc build directory. 81 8220040326: 83 The method by which athhal-elf.o gets pulled into i386 kernel builds 84 has been changed. The file is now stored as a uuencoded file in CVS 85 and the generated Makefile will use the new .uue rules from bsd.file.mk 86 to build it. 87 88 This means you must have the latest bsd.files.mk installed when 89 building a kernel without USETOOLS=yes. 90 9120040318: 92 A bug in the cgd(4) blowfish code was corrected, without 93 provision of backwards compatibility, after several public 94 notices over several months. Users of cgd with blowfish cipher 95 ONLY must dump their data before updating their kernels, and 96 recreate cgd's and restore data using the new kernel. See 97 (recent message to current-users, URL when mail-index has updated) 98 9920040313: 100 On acorn32, the opms and qms drivers have been withdrawn, and 101 the old wsqms driver is now called qms. Kernel config files 102 will need updating. See the ones in sys/arch/acorn32/conf 103 for examples. 104 10520040125: 106 On acorn32, the beep and sysbeep devices are no longer 107 needed, and will need to be deleted from kernel configuration 108 files. 109 11020040109: 111 Compatibility for old ffs superblock layouts has been 112 added, and the restrictive fsck checks have been reenabled 113 when using those layouts. If you have been using -current 114 since 20030402, you may find that fsck again signals fatal 115 superblock mismatches. To repair, make sure you have 116 an updated fsck_ffs and then you can use fsck_ffs -b 16 -c 4 117 to complete the filesystem upgrade. A message has 118 been added to the kernel which should detect this problem. 119 See the following discussion for more information: 120 http://mail-index.NetBSD.org/current-users/2004/01/11/0022.html 121 12220031203: 123 New binutils builds may fail due to old dependencies. 124 It's necessary to "make cleandir" to ensure that 125 the dependencies will be rebuilt correctly. 126 12720031111: 128 A newer mkdep is needed. Error noting that is 129 cc: Ambiguous abbreviation -- 130 13120031008: 132 /usr/include/sys/disklabel_mbr.h was removed. 133 It's necessary to "make cleandir" to ensure that 134 the dependencies will be rebuilt correctly. 135 13620031007: 137 A sign exension bug was fixed which set all the high bits 138 of our newly expanded ffs fs_flags. This should only 139 affect users who installed or upgraded in September of 2003. 140 A small utility program was posted to tech-kern which 141 should fix this problem, and a warning message was added 142 to the kernel which should discover and warn about it. See 143 http://mail-index.NetBSD.org/tech-kern/2003/10/07/0005.html 144 14520030906: 146 With the addition of siginfo support the old signal trampoline 147 code has been deprecated to COMPAT_16. Make sure that your running 148 kernel has COMPAT_16 enabled before building userland. 149 15020030801: 151 With the new openssl, there is some header and library shuffling. 152 rm -f /usr/include/des.h /usr/include/kerberosIV/* /lib/libdes* \ 153 /usr/lib/libdes* before building. 154 15520030703: 156 Texinfo was updated to 4.6. To avoid failures when trying to 157 build the included texinfo files, do: 158 159 cd src/gnu/usr.bin/texinfo 160 make MKINFO=no dependall install 161 16220030630: 163 Groff was updated to 1.19; it's probably necessary to do 164 cd share/mk && make install 165 cd src/gnu/usr.bin/groff 166 make MKMAN=no dependall install 167 (untested). 168 16920030516: 170 Due to bugs in the export handling code, invalid export lines 171 were accepted before and caused the kernel to panic when 172 mountd got restarted because it freed memory that had already 173 been freed. This has been fixed and the kernel checks 174 export addresses very strictly. If you upgrade your kernel, 175 make sure you also upgrade mountd, because if your export 176 file contains lines with an old inet4 address syntax (i.e. 177 a.b.c or a.b or a), they will get rejected by the new kernel. 178 17920030402: 180 The superblock layout for FFS was changed. If you have 1.6 181 fsck binaries, they will signal a fatal superblock mismatch 182 with the first alternate, because they compare too many 183 fields (even ones that aren't useful). If possible, upgrade 184 your fsck_ffs binary before using a new kernel. 185 None of this signals actual filesystem damage. 186 18720030324: 188 sendmail version 8.12.8 was imported. Since sendmail is 189 now setgid to the smmsp group, and runs in "collection" 190 mode for most common activities, there is a new config 191 file called submit.cf that needs to live in /etc/mail. 192 The generic submit.cf sample in /usr/share/sendmail/cf 193 is named netbsd-msp.cf. Upgrading your regular sendmail 194 configuration file is also strongly advised. 195 196 See the section named "MESSAGE SUBMISSION PROGRAM" in 197 the updated /usr/share/sendmail/README file for more 198 information. 199 20020030117: 201 Texinfo was updated to 4.3. To avoid failures when trying to 202 build the included texinfo files, do: 203 204 cd src/gnu/usr.bin/texinfo 205 make MKINFO=no dependall install 206 20720021223: 208 The METALOG format changed slightly, to remove the leading 209 "${DESTDIR}" from path names. 210 This only affects people building with UNPRIVED. 211 For complete safety, remove the DESTDIR entirely and 212 update tools/mtree, before running make build. 213 21420021219: 215 CVS repository layout was changed. See the following for details 216 if you are using (anonymous) cvs to update your tree. 217 218 http://mail-index.NetBSD.org/netbsd-announce/2002/12/19/0000.html 219 22020021219: 221 install(1) had a '-N dbdir' option added, to specify an 222 alternate location to look up users & groups (instead 223 of the host system passwd(5) and group(5) databases). 224 225 The build system was modified to take advantage of 226 this option (using ${NETBSDSRCDIR}/etc), so if you 227 use USETOOLS==no, you may have to rebuild and 228 reinstall usr.bin/xinstall first. 229 23020021130: 231 fparseln(3) moved from libutil to libc. 232 If building to DESTDIR=/, reinstall the includes 233 and rebuild libc: 234 make includes 235 make do-lib-libc 236 If using build.sh, "cd tools/compat && make clean" 237 before rebuilding the tools. 238 23920021126: 240 The mk.conf(5) variable SYS_INCLUDE has been deprecated, 241 including the optional "SYS_INCLUDE=symlinks" support. 242 All header files, including <sys/*.h> are copied into 243 /usr/include. 244 24520021121: 246 The C run-time support files crtbegin.o and crtend.o 247 (and their companions crtbeginS.o and crtendS.o) were 248 split up, with new crti.o and crtn.o files resulting. 249 This means that libtool needs to be rebuilt once the 250 new libraries are installed. The process of rebuilding 251 libtool will cause it to automatically notice the new 252 required files, but it *must* be rebuilt in order to 253 do this. 254 255 An out-of-date libtool will result in shared libraries 256 which lack _init() and _fini() routines, which means that 257 their global contructors/destructors will not be invoked. 258 25920021121: 260 A bug related to how ARM ELF objects were tagged has been 261 corrected. 262 263 NetBSD ARM ELF uses the soft-VFP floating point model by 264 default. However, the assembler lacked support for marking 265 objects as using the VFP floating point format, and the 266 compiler was not properly passing the flag indicating "soft-VFP" 267 to the assembler. 268 269 Unfortunately, this means that the linker will now consider 270 old (i.e. not marked "softvfp") NetBSD ARM ELF objects to be 271 incompatible with new (properly marked) objects. 272 273 The problem will only manifest itself if you attempt to compile 274 a new program using the fixed toolchain, and link that program 275 against old libraries which do not have the proper "softvfp" 276 markings. ALL OF YOUR EXISTING BINARIES AND SHARED LIBRARIES 277 WILL CONTINUE TO WORK PROPERLY. 278 279 The only work-around for the problem is to recompile all of 280 the libraries on the system. The easiest way to do this for 281 system libraries is to install a binary snapshot; they are 282 generally available on releng.NetBSD.org. Any packages you 283 have installed which supply libraries will have to be recompiled 284 if you wish to link new programs against those libraries. 285 286 If you have questions about this matter, please contact 287 port-arm@NetBSD.org. 288 28920021011: 290 Systrace has been improved to support privilege elevation. 291 Updating the kernel requires the userland part of systrace 292 to be rebuilt. 293 29420021010: 295 The config(8) grammar was changed to allow options to register 296 dependencies on attributes, as well as other options. Users 297 must update and reinstall usr.sbin/config before building a new 298 kernel. 299 30020021009: 301 A new attribute dependency syntax was introduced to config(8), 302 which is now used by the SCSI configuration description. Users 303 must update and reinstall usr.sbin/config before building a new 304 kernel. 305 30620021003: 307 Several changes have been made to the autoconfiguration 308 framework. Users must update and reinstall usr.sbin/config 309 before building a new kernel. 310 31120021001: 312 The i386mp branch has been merged. To compile a kernel, users 313 will need to add the option 'cpu* at mainbus?' to their configuration 314 file. Multiprocessor kernels will need 315 ioapic* at mainbus? apid ? 316 options MULTIPROCESSOR 317 options COM_MPLOCK 318 31920020922: 320 MKDYNAMICROOT=yes enabled by default, which means that 321 certain shared libraries are installed into /lib, the shared 322 linker is installed into /libexec, and all programs in /bin 323 and /sbin are dynamically linked. 324 If you do not use "make build", you should ensure that 325 you have the libraries and shared linker in the new locations, 326 with: 327 make do-lib-csu do-lib-libc do-lib do-gnu-lib do-ld.elf_so 328 32920020917: 330 USE_NEW_TOOLCHAIN has been replaced with: 331 - TOOLCHAIN_MISSING -- set to "yes" on platforms for which 332 there is no working in-tree toolchain (hppa, ns32k, sh5, 333 x86_64). 334 - EXTERNAL_TOOLCHAIN -- if defined by the user, points to the 335 root of an external toolchain (e.g. /usr/local/gnu). This 336 enables the cross-build framework even for TOOLCHAIN_MISSING 337 platforms. 338 33920020906: 340 gehenna-devsw has been merged into the trunk. Need to update and 341 reinstall usr.sbin/config before building the kernel. 342 34320020822: 344 Crunched rescue tools (contents of /bin and /sbin, plus others) 345 are now provided in /rescue. 346 347 To ensure that these are built statically linked (no matter 348 what the setting of LDSTATIC is), use a crunchgen(1) built 349 from sources newer than 20020820 (see the next entry). 350 35120020820: 352 crunchgen(1) changed to ensure that the generated program 353 is statically linked. 354 355 Solution: update and reinstall usr.bin/crunch 356 35720020605: 358 smmsp user/group has been added for sendmail. 359 360 Add the following into /etc/group: 361 362 smmsp:*:17: 363 364 and the following to /etc/master.passwd (via vipw): 365 366 smmsp:*:17:17::0:0:Sendmail Message Submission Program:/nonexistent:/sbin/nologin 367 36820020515: 369 sshd user/group has been added. Need to hand add this in, or sshd 370 will not let you log in (with default, or UsePrivlegeSeparation=yes) 371 372 Add the following into /etc/group: 373 374 sshd:*:16: 375 376 and the following to /etc/master.passwd (via vipw): 377 378 sshd:*:16:16::0:0:& pseudo-user:/var/chroot/sshd:/sbin/nologin 379 380 Also /var/chroot/sshd directory needs to be present (digged as part of 381 the build process). 382 38320020426: 384 NBUILDJOBS obsoleted in favor of just using -j. 385 38620020426: 387 etc/postinstall added, which performs various checks for 388 configuration file updates and changes, and can fix most of 389 the problems identified. 390 This should make it much easier to upgrade a system's 391 configuration from earlier systems (as far back as NetBSD 1.5). 392 39320020320: 394 <bsd.lib.mk> needs a new install(1) for its "-a cmd" support. 395 Build and install at usr.bin/xinstall before the build. 396 39720020319: 398 Raw IPv6 socket now makes strict checking for sa_family and sa_len 399 on send(2) operation. Be sure to have sbin/rtsol and usr.sbin/rtsold 400 newer than November 2001 when you upgrade the kernel. 401 40220020311: 403 ssh configuration files were moved from /etc to /etc/ssh. Beware 404 if you restart your machine from remote. Note that sshd.conf needs 405 to be changed (due to the use of "/etc" inside). 406 40720020223: 408 Users of the VAX port will need to rebuild and install gas 409 so it deal with the now present register prefix used in all 410 the VAX assembly files. 411 41220020118: 413 ntpd user/group has been added. Need to hand add this in or builds 414 will break as mtree aborts early. 415 416 Add the following into /etc/group: 417 418 ntpd:*:15: 419 420 and the following to /etc/master.passwd (via vipw): 421 422 ntpd:*:15:15::0:0:Ntpd pseudo-user:/var/chroot/ntpd:/sbin/nologin 423 42420011207: 425 If you're attempting to build a snapshot on sparc64 and are getting 426 reloc errors from the toolchain groff binary this means your native 427 toolchain has some broken C++ bits. 428 429 To fix: 430 431 Build a new toolchain (i.e. build.sh -t) 432 Use the new toolchain to build and install natively (i.e. /usr/lib) 433 434 gnu/lib/libgcc 435 gnu/lib/libstdc++ 436 437 After this a snapshot will be able to be built. 438 43920011201: 440 In order for a sparc64 build to work you must have a working awk. If 441 you've built and installed a system with the new toolchain up to this 442 point you do not have a working awk as its ability to do floating 443 point is broken. 444 445 To build: 446 447 remake and install gnu/lib/libgcc 448 remake and install gnu/usr.bin/gawk into /usr/bin (make sure it links 449 against the new libgcc.a) 450 45120011128: 452 Kernel config information was changed to use defflag in 453 the various "files" files. Bug fixes to config(8) are 454 required in order for this to work properly. Make sure 455 to build and install in usr.sbin/config before attempting 456 to build a new kernel. 457 45820011030: 459 libc/locale/wcstod.c now needs new lint(1). Update lint(1) 460 before building libc. 461 46220011029: 463 The new document BUILDING.mdoc (view with nroff | more, or 464 see pre-generated .txt and .html versions) describes the build 465 procedure in great detail. BUILDING, and the USE_NEW_TOOLCHAIN 466 build process, are intended in the long run to replace this 467 manual update log. 468 469 Users building a USE_NEW_TOOLCHAIN system should read the 470 BUILDING document for caveats. Generally, BUILDING supersedes 471 UPDATING for these systems, as tool updating is taken care of 472 by the new build system. 473 47420011028: 475 src/etc/Makefile now needs install to be able to handle 476 symlinks that point to nowhere. A bug in install that 477 prevented this was corrected. 478 479 Solution: update and reinstall usr.bin/xinstall 480 Better Solution: Use the new toolchain and it will just work 481 for you. 482 48320011006: 484 /etc/mtree/NetBSD.dist has been updated to take advantage of 485 absolute path support added to mtree(8). Older mtree(8)s don't 486 understand the format. 487 488 Solution: update and reinstall usr.sbin/mtree 489 49020011004: 491 Crunchgen has been updated to work via reach-over makefiles. Updating 492 is suggested before running a snapshot build 493 49420010915: 495 The new "ubcperf" code committed by Chuck Silvers removed 496 a header file, uvm/uvm_vnode.h. There may be stale .depend 497 files that still reference this file. 498 499 Solution: "make cleandir && make dependall" in affected 500 directories. 501 50220010803: 503 grep.info is now built from grep.texi using makeinfo. Since it 504 requires makeinfo v4.0, you need to install new texinfo before 505 building gnu/usr.bin/grep. To install new texinfo, please follow 506 the instruction described in 20010726 entry. 507 50820010803: 509 (i386 only): i386 kernel now uses new instructions like 510 `fxsave' which old gas doesn't understand. To build the 511 kernel successfully, you need to build and install a new toolchain, 512 (i.e., build.sh -t) or (temporarily) comment out "options I686_CPU" 513 from your kernel configuration until you rebuild your userland. 514 See 20011029 above and BUILDING file in this directory for more information. 515 [updated 20020630 since i386 gas moved when USE_NEW_TOOLCHAIN enabled] 516 51720010731: 518 Bootloader update on ELF platforms. DDB in kernels from before 519 this will be unable to read symbol tables provided by newer 520 bootloaders. 521 52220010726: 523 Texinfo was updated to 4.0. To avoid failures when trying to 524 build the included texinfo files, do: 525 526 cd src/gnu/usr.bin/texinfo 527 make MKINFO=no dependall install 528 52920010718: 530 Enabled correct .init/.fini processing in crt0. The way this 531 was done was to change a -I directive to cc(1), which means 532 make(1) will have a stale dependency (it will be checking the 533 timestamp on the wrong "dot_init.h"). 534 535 The symptom you will see is that new programs die with SIGSEGV 536 if you have a stale dependency. 537 538 Solution: "make cleandir" in both lib/csu and libexec/ld.elf_so 539 before starting your build. 540 54120010628: 542 A construct was added to uvm_page.h that uncovered a bug 543 in lint(1). If you get a warning/error about a non-portable 544 bitfield, update your lint(1) before proceeding. 545 54620010226: 547 Added named user/group to system. Need to hand add this in or builds 548 will break as mtree aborts early. 549 550 To work around add by hand: 551 552 named:*:14: 553 554 to /etc/group and add: 555 556 named:*:14:14::0:0:Named pseudo-user:/var/named:/sbin/nologin 557 558 to master.passwd (use vipw for instance if doing by hand). 559 560 Now a make build should progress. 561 56220010219: 563 get/setprogname() added. Any hostprogs that may use this will need 564 to be bootstrapped manually until the host system is current. 565 566 Known problems: sys/arch/macppc/stand/fixcoff 567 usr.sbin/config (adding -DMAKE_BOOTSTRAP to 568 CFLAGS and rebuilding should work) 569 usr.sbin/mdsetimage - Build a static copy if 570 building a snapshot before fully bootstrapped. 571 57220010204: 573 prepare the code to compile with stricter gcc flags. in 574 particular start eliminating redundant declarations. Yacc 575 needs to be installed before make build. 576 57720010114: 578 introduce .if commands(target) in make(1). You need to 579 bring everything up-to-date first, then without installing 580 anything make and install in usr.bin/make, then proceed 581 with make build. 582 58320010101: 584 bsd.subdir.mk committed 20001230 had a bug which caused 585 afterinstall targets to run too soon; update again. 586 58720001230: 588 New share/mk files needed to support .WAIT in SUBDIR variables. 589 If you get make errors, 590 (cd share/mk; make install) 591 Also, PRINTOBJDIR has changed and is now used more heavily. 592 59320001019: 594 The `ca' device driver has been replaced by `ld'; although the 595 major and minor numbers haven't changed, you should update your /dev 596 directory. 597 59820000929: 599 The following make directives are obsoleted. 600 MKCRYPTO_RSA NOCRYPTO_RSA NOCRYPTO_RC5 NOCRYPTO_IDEA 601 By default, RSA is built into libcrypto. IDEA and RC5 will not be 602 built into libcrypto. By using MKCRYPTO_{RC5,IDEA}, you can build 603 additional library libcrypto_{idea,rc5}. 604 605 606Hints for a more successful build: 607^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 608 Use build.sh, but do not use its "expert mode": 609 This will will automatically build the tools in the 610 correct order, and it will keep the tools and the 611 new build products from interfering with the running 612 system. This will allow you to ignore most of the 613 other advice in this file. 614 Build a new kernel first: 615 This makes sure that any new system calls or features 616 expected by the new userland will be present. This 617 helps to avoid critical errors when upgrading. 618 Use object directories: 619 This helps to keep stale object 620 files from polluting the build if a Makefile "forgets" 621 about one. It also makes it easier to clean up after 622 a build. It's also necessary if you want to use the 623 same source tree for multiple machines. 624 To use object directories with build.sh: 625 a) invoke build.sh with the "-M" or "-O" options. 626 To use object directories without using build.sh: 627 a) cd /usr/src ; make cleandir 628 b) Add "OBJMACHINE=yes" to /etc/mk.conf 629 c) Add "MKOBJDIRS=yes" to /etc/mk.conf 630 d) cd /usr/src ; make build 631 Note that running "make obj" in a directory will create 632 in obj.$MACHINE directory. 633 Build to a DESTDIR: 634 This helps to keep old installed files (especially libraries) 635 from interfering with the new build. 636 To build to a DESTDIR with build.sh, use the "-D" option. 637 To build to a DESTDIR without using build.sh, set the DESTDIR 638 environment variable before running make build. It should be 639 set to the pathname of an initially empty directory. 640 Problems: if you do not use build.sh, you might need to 641 update critical utilities without using DESTDIR since 642 nothing is executed from what is installed in DESTDIR. 643 (See critical utils, below.) 644 Build often: 645 This keeps critical utilities current enough to not choke 646 on any other part of the source tree that depends on up to 647 date functionality. If you use build.sh, you should not have 648 this problem. 649 650What to do if things don't work: 651^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 652When things don't work there is usually a few things that commonly 653should be done. 654 1) make includes 655 This should be done automatically by make build. 656 2) cd share/mk && make install 657 Again, automatically done by make build. 658 659Failsafe rebuild of a small part of the tree: 660^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 661To make sure you rebuild something correctly you want to do 662something like the following: 663 1) Make sure the includes and .mk files are up to date. 664 2) Make sure any program used to build the particular 665 utility is up to date. (yacc, lex, etc...) 666 3) cd ...path/to/util... 667 make cleandir 668 rm ...all obj directories... 669 make cleandir # yes, again 670 make obj 671 make depend && make 672 673Failsafe rebuild of the entire tree: 674^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 675If you really want to make sure the source tree is clean and 676ready for a build try the following. Note that sourcing /etc/mk.conf 677(a make(1) Makefile) in this manner is not right, and will not work 678for anyone who uses any make(1) features in /etc/mk.conf. 679 680---cut here--- 681#!/bin/sh 682. /etc/mk.conf 683 684if [ -z $NETBSDSRCDIR ] ; then 685 NETBSDSRCDIR=/usr/src 686fi 687if [ \! -d $NETBSDSRCDIR ] ; then 688 echo Unable to find sources 689 exit 1 690fi 691find $NETBSDSRCDIR -name \*.o -o -name obj.\* -o -name obj -exec rm \{\} \; 692 693if [ -z $BSDOBJDIR ] ; then 694 BSDOBJDIR=/usr/obj 695fi 696if [ -d $BSDOBJDIR ] ; then 697 rm -rf $BSDOBJDIR 698fi 699 700cd $NETBSDSRCDIR && make cleandir 701 702---cut here--- 703 704Critical utilities: 705^^^^^^^^^^^^^^^^^^^ 706 gnu/usr.bin/egcs 707 usr.bin/compile_et 708 usr.bin/make 709 usr.bin/yacc 710 usr.bin/lex 711 usr.bin/xlint 712 usr.sbin/config 713 714Other problems and possible solutions: 715^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 716Symptom:Unreasonable compiler errors. 717Fix: Rebuild gnu/usr.bin/egcs 718 719Symptom:Complaints involving a Makefile. 720Fix: Rebuild usr.bin/make: 721 cd usr.bin/make && make && make install 722 Or, a failsafe method if that doesn't work: 723 cd usr.bin/make && cc *.c */*.c -I . -o make && mv make /usr/bin 724 725Fix: Make sure .mk files are up to date. 726 cd share/mk && make install 727 728Symptom:Kernel `config' fails to configure any kernel, including GENERIC. 729Fix: Rebuild usr.sbin/config 730 731Symptom: 732Fix: Rebuild usr.bin/yacc 733 734Symptom: 735Fix: Rebuild usr.bin/lex 736 737Symptom: 738Fix: rm /usr/lib/libbfd.a 739 740Symptom:Obsolete intermediate files are used during compilation 741Fix: Try the following sequence of commands in the directory in question. 742 make cleandir; rm `make print-objdir`; make cleandir; make obj 743 (If you built the tree without "make obj" in the past, obsolete files 744 may remain. The command tries to clean everything up) 745 746Symptom:.../sysinst/run.c:xx: warning: initialization from incompatible pointer type 747Fix: Rebuild and install usr.bin/menuc 748 749Symptom:mklocale not found during build in share/locale/ctype 750Fix: Build and install usr.bin/mklocale 751 752Symptom:undefined reference to `__assert13' or `__unsetenv13' 753Fix: Rebuild and install lib/libc 754 755Symptom:usr.sbin/config fails to build. 756Fix: Try building with -DMAKE_BOOTSTRAP added to CFLAGS in Makefile. 757 758Symptom:undefined reference to `getprogname' or `setprogname' 759Fix: Rebuild and install lib/libc 760 761Symptom:lint does not understand the '-X' option 762Fix: May need to build & install libs with NOLINT=1 before rebuilding lint 763