UPDATING revision 1.249
1$NetBSD: UPDATING,v 1.249 2013/12/04 14:47:41 mrg 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 1920131129: 20 The GMP sources were updated, and builds will likely fail without 21 cleaning their build trees for both tools and in-tree, like below. 22 2320131128: 24 The MPC and MPFR sources were updated, and builds may require their 25 tools and in-tree directories cleaned for successful updates. 26 2720130605: 28 The kernel option FAST_IPSEC no longer exists, it's been renamed 29 to IPSEC (and the older IPSEC version removed). 30 3120130605: 32 Previous freetype installations eroneously installed private 33 header files. If you are building against a non-empty $DESTDIR, 34 please remove ${DESTDIR}//usr/X11R7/include/freetype2/freetype/. 35 3620130531: 37 The xdm update may cause build failure due to xdm.man being 38 in the obj tree. Make sure to ensure any like this: 39 nbmake: nbmake: don't know how to make xdm.man. Stop 40 is fixed by deleting the xdm.man in the obj tree. 41 4220130530: 43 Updates of many xsrc packages will leave old .pc files around. 44 Best to clean out the xsrc objdir entirely before rebuilds. 45 4620130301: 47 The removal of netiso requires manual removal of /usr/include/netiso 48 prior to the build and make cleandir in /usr/src/usr.bin/{ktruss,kdump} 49 5020120726: 51 The update of OpenSSL requires cleaning both the OpenSSL build 52 directory and DESTDIR. *Even non-update builds require cleaning 53 DESTDIR.* Builds done without taking these steps may fail, or in 54 some cases may succeed and install broken OpenSSL libraries that 55 cause third-party software to link incorrectly and/or crash. 56 5720120507: 58 The database schema for makemandb was changed. You will 59 need to update the database using 'makemandb -f' or wait 60 for the next weekly run to fix it. 61 6220120319: 63 sys/conf/Makefile.kern.inc has been modified to adjust the 64 size of db_symtab automatically. You need to update dbsym in 65 your $TOOLDIR to build kernels with options SYMTAB_SPACE. If 66 you don't want this behavior, add AUTO_SYMTAB_SPACE=no to your 67 mk.conf. 68 6920120216: 70 Default for MKCATPAGES changed to NO. Update builds will fail 71 unless DESTDIR is cleaned manually. If you built between 20120207 72 and 20120216, daily and weekly could have created an unreadable 73 /var/db/man.db index for apropos. Running makemandb -f or 74 the next run of weekly will fix it. 75 7620111227: 77 If you built between 20111225 and 20111227 you need to remove 78 /usr/lib/libpam.so.4* and /usr/lib/security/*.so.4, since the 79 bump has been reverted. 80 8120111125: 82 The "rnd" pseudodevice has been added to sys/conf/std, which 83 means it should no longer be explicitly listed in kernel 84 configuration files. The line "pseudo-device rnd" should be 85 removed from any custom kernel config files users may have. 86 8720111119: 88 A problem with the datastructures used by the rndctl(8) 89 utility (pointers in datastructures in an array, making 32->64 90 bit compatibility very painful) has been fixed in a 91 non-backwards-compatible way. If you replace your kernel, 92 replace your rndctl executable too. 93 9420111001: 95 the prop_*_send_syscall() functions from proplib(3) have been 96 changed and their new version is not backward compatible with the old 97 one. So ensure that all consumers of these functions (currently: 98 quota2 code and its tests) are updated together with the new lib. 99 10020110817: 101 sparc has been changed to use GCC 4.5.3, so any objdir or 102 DESTDIR for them should be deleted before updating. 103 10420110806: 105 i386 and amd64 have been changed to use GCC 4.5.3, so any 106 objdir or DESTDIR for them should be deleted before updating. 107 10820110805: 109 The update to GCC 4.5.3 requires a non-trivial portion of 110 the tree to be cleaned. Best to delete both objdir and 111 DESTDIR before running this update. So far, only the 112 sparc64, mips and powerpc platforms have changed. 113 11420110803: 115 The layout of external/public-domain/xz has changed. To do an 116 update build you will have to remove the contents of the OBJDIR 117 for external/public-domain/xz/bin by hand as the xz entry there 118 is now a directory. 119 12020110410: 121 The configuration of src/tools/gcc has changed. To do an 122 update build you have to clean both tools/binutils and 123 tools/gcc by hand. 124 12520110328: 126 Building the Xorg binary was moved into a subdirectory to fix 127 ordering issues with "make all". It may be necessary to remove 128 the OBJDIR for external/mit/xorg/server/xorg-server/hw/xfree86 129 if your update build fails, as the "Xorg" entry there is now a 130 directory. 131 13220110121: 133 Assembler files no longer use -traditional-cpp. This can break 134 the build of individual parts of the tree. This is handled 135 correctly by build.sh. Manual builds have to update /usr/share/mk 136 and re-run config(1) for any kernel configurations as needed. 137 13820101217: 139 The tcpdump(8) program was changed to drop privileges and chroot(2) 140 by default. It may be necessary to manually update passwd(5) and 141 group(5) in order to make the program work with existing setups. 142 14320101125: 144 The latest changes to setenv(3) dissallow setting environment 145 variables with names that contain '='. Revision 1.18 of env.c 146 assumed that this was allowed. Installing a new libc with an 147 old copy of /usr/bin/env causes env x=1 printenv | grep x= to 148 break which affects the autoconf tests for dependency finding, 149 so building gcc will end up printing: 150 checking dependency style of gcc... none 151 configure: error: no usable dependency style found 152 Fix it by rebuilding and re-installing env. 153 15420101119: 155 Recent Xorg updates in xsrc/external/mit/ may cause various build 156 or run-time problems. Delete your entire DESTDIR and OBJDIR if you 157 have any build problems with xsrc, or problems with mismatched 158 versions between xorg-server and drivers. 159 16020100604: 161 The update of ATF to 0.9 causes old tests written in shell to fail 162 unless they are rebuilt. If you are building with MKUPDATE=yes, 163 you need to clean the src/external/bsd/atf/tests/ and the src/tests/ 164 trees by hand. 165 16620100522: 167 Recent Xorg updates in xsrc/external/mit/ will cause various build 168 problems. Delete your entire DESTDIR and OBJDIR if you have any 169 build problems with xsrc. 170 17120100522: 172 private section of <ctype.h> was splitted, and now mklocale(1) 173 include ctype_local.h, so you have to make cleandir in tools/mklocale. 174 17520100520: 176 The location of the xkb compiled descriptions has changed. Please 177 remove usr/X11R7/lib/X11/xkb/compiled from your $DESTDIR. 178 17920100222: 180 The shared objects file extension has been changed from .so to 181 .pico, in order to avoid conflicts with shared libraries names 182 libXX.so. All now stale regular .so files can be removed from 183 your object directories. 184 18520100204: 186 The termcap database has been removed from the sources, 187 but has not been marked obsolete so it is not removed 188 from the system when upgrading. 189 As such, you will need to remove them from your object 190 and destination directories. 191 19220091101: 193 After updating, it may be necessary to make the 'cleandir' 194 target in src/tools/yacc/ and in src/usr.bin/yacc/ before a 195 'build.sh -u tools' or 'build.sh -u distribution'. Ditto 196 src/tools/lex/ and src/usr.bin/lex/. 197 19820091001: 199 On amd64 you must rebuild tools (to get the new binutils) 200 before building a kernel, or the build fails on cpufunc.S. 201 20220091001: 203 An error will create a ./usr/X11R7/lib/X11/xkb/compiled/xkb 204 symlink, failing the build. Delete the link, and the subdir 205 it is in, and retry your build. 206 20720090718: 208 libc build changed so that strchr() provides the extra entry 209 point for index(). Update build of libc.a (and libc_pic.a) 210 may fail because the archive contains the unwanted index.o. 211 (Similarly for strrchr() and rindex().) 212 21320090709: 214 Native Xorg was upgraded again. Builds will probably fail again 215 without a clean objdir, at least for src/external/mit/xorg. 216 21720090616: 218 Native Xorg was upgraded. Builds will need a clean objdir for 219 src/external/mit/xorg. Upgrading a system from sets will not 220 work properly yet as the /usr/X11R7/lib/X11/xkb/symbols/pc 221 subdirectory has been changed into a file, and this needs to 222 be manually "rm -r"'ed before installing xbase.tgz. 223 22420090501: 225 Several new functions were added to string.h/libc, and this 226 can cause autoconf problems during the tool build for people 227 who fail to clean out their tools objects properly. If you 228 note messages about stpcpy, stpncpy or strnlen accompanying a 229 failure during the tool build, clean out all your tools 230 objects and start again. 231 23220090325: 233 The i386 port was switched to i486 default toolchain. This requires 234 cleaning your src/tools directory and $TOOLDIR and rebuilding them. 235 23620090126: 237 The __posix_fadvise50 system call changed assembly stub type. You 238 need to 'rm -f __posix_fadvise50.*' in the libc build directory 239 to avoid using the old assembly stub. 240 24120090202: 242 pkg_install now depends on the pkgdb cache for automatic conflict 243 detection. It is recommented to rebuild the cache with 244 ``pkg_admin rebuild''. 245 24620090110: 247 time_t and dev_t have been bumped to 64 bit quantities. To upgrade: 248 1. Make sure your kernel has COMPAT_50 in it. Build and install. 249 This is needed even in the MODULAR kernel because there is 250 conditionally compiled code in rtsock.c. 251 2. make sure build.sh completes and the binaries in a chroot work 252 before installing. 253 3. If you don't use build.sh and you build directly to root, and 254 your build breaks in the middle, don't despair. Make sure headers 255 are installed properly, and start building libraries first libc 256 and libutil, install them and then continue building all the 257 libraries in src/lib and src/gnu/lib and install them. Once 258 the new libraries are installed, you can restart the build. 259 4. If you compile packages and you notice link time warnings, 260 rebuild the required packages to update their shared libraries. 261 Any package you rebuild will require rebuilding all the packages 262 that depend on it. 263 5. Next time you run pwd_mkdb with the new binary, the file 264 will be upgraded and it will not be backwards compatible. 265 6. The utmpx/wtmpx files (/var/run/utmpx and /var/log/wtmpx, see 266 lastlogx(5)) have been versioned, and there is a heuristic 267 for utmp. You are better off removing the old files after 268 upgrading. The automated clearing of /var/run during 269 boot, and the automated rotating of files in /var/log by 270 newsyslog(8), may mean that you do not have to remove the 271 files manually. 272 7. The optional accounting file (/var/account/acct, see 273 accton(8)) has not been versioned, and will need to be 274 removed. The automatic rotation of the accounting file by 275 /etc/daily limits the bad consequences of failure to remove 276 the file. 277 8. Application software that writes time_t to binary files on 278 disk will break or need attention. Most notably: if you are 279 using PostgreSQL < 8.4, you need to dump your databases, 280 rebuild PostgreSQL with the new time_t, then restore. 281 28220081219: 283 config(1) has been updated, and one of the files it creates - 284 swapnetbsd.o - has changed format. You need to rebuild config 285 (done automatically by build.sh) and then you need to rerun 286 config on all kernel configuration files before rebuilding those 287 kernels. 288 28920081205: 290 If you build with MKX11=no, you should remove /etc/rc.d/xdm and 291 /etc/rc.d/xfs from DESTDIR because those files were moved to the xetc 292 set and will appear as extra files for MKX11=no update builds. 293 29420081122: 295 On i386, various kernel options(4) in GENERIC including 296 file systems have been disabled and moved into kernel modules. 297 Before trying a new GENERIC kernel, you have to prepare the 298 following files as well as a new GENERIC kernel: 299 300 - build and install kernel modules from src/sys/modules 301 302 - install the latest bootloader, which will load a module 303 for the file system from which the kernel is loaded automatically 304 305 If you have to load your kernel from a file system which is not of 306 the same type as the root file system, you have to load the necessary 307 file system module manually on the boot prompt or in the boot.cfg file. 308 30920080827: 310 If you built and installed a libc from sources between 311 2008/08/20 and 2008/08/26 you got a broken strtouq(3) 312 which results in false errors reported by lint(1). 313 Since this breaks the libc build itself, manual help is 314 needed -- lint must be disabled temporarily, e.g.: 315 $ (cd lib/libc && make MKLINT=no dependall install) 316 31720080813: 318 MKDEBUG build was broken because the .depend files did not know 319 about .go files. You need to remove all .depend files and rebuild. 320 32120080802: 322 A regression in binary compatibility for pthread_mutex_t has 323 been fixed. Unfortunately, the price is breaking compatibility 324 for -current. 325 326 Threaded programs (using libpthread) and C++ programs (using 327 libstdc++) compiled after 20070907 and before 20080802 need to 328 be recompiled. 329 330 One way to find affected pkgsrc packages: 331 332 $ grep REQUIRES=/usr/lib/libpthread /var/db/pkg/*/+BUILD_INFO 333 $ grep REQUIRES=/usr/lib/libstdc++ /var/db/pkg/*/+BUILD_INFO 334 33520080731: 336 WAPBL (metadata journaling support) has been added, but at this 337 time isn't backwards compatible with pre-WAPBL aware kernels 338 and userland (fsck_ffs in particular). Please make sure you 339 don't use a journaled filesystem with an older kernel/userland, 340 especially an uncleanly mounted journaled filesystem. WAPBL 341 also requires the super block to be in the UFS2 format. You 342 can use fsck_ffs -c 4 to update the superblock format. 343 34420080721: 345 Assembler warnings are now fatal if $WARNS>0 and $NOGCCERROR 346 isn't defined. 347 34820080531: 349 The ioctl number of DRVSUSPENDDEV command on /dev/drvctl changed 350 from 125 (conflicted with DRVCTLCOMMAND) to 129. The drvctl(8) 351 utility needs to be rebuilt and reinstalled as older binaries 352 won't work correctly. The following sequence of commands: 353 354 $ (cd sys/sys/ && nbmake-$arch includes) 355 $ (cd sbin/drvctl/ && nbmake-$arch clean) 356 $ (cd sbin/drvctl/ && nbmake-$arch all) 357 358 leaves new drvctl utility in sbin/drvctl build directory. 359 36020080503: 361 The <bsd.lib.mk> variable MKPRIVATELIB was renamed to LIBISPRIVATE. 362 36320080521: 364 For a while, unprivileged UPDATE builds would fail to 365 succeed at the checkflist stage, complaining that 366 ${DESTDIR}/stand/<arch>/ did not exist. A fix for this 367 problem was committed to share/mk/bsd.kmodule.mk, revision 1.9. 368 If you already hit this problem, update the .mk file, 369 remove ${DESTDIR}/stand/<arch>, and re-run the build. 370 37120080303: 372 Linker warnings are now fatal if $WARNS>0. 373 37420080126: 375 The posix_fadvise system call has been changed from an assembly 376 stub, to a c file that calls an assembly stub. You need to 377 'rm -f posix_fadvise.* .depend' in the libc build directory to 378 avoid using the old assembly stub. 379 38020071209: 381 The acpiec(4) driver has been split into two attachments. If you 382 get ACPI errors before the attachment, please update your kernel 383 configuration file appropriately or see GENERIC for more details. 384 38520071115: 386 The it(4) driver has been renamed to itesio(4) and the old port 387 argument specified in the kernel configuration file is not valid 388 anymore. The itesio(4) driver now uses the Super I/O address port 389 rather than the EC address port. Please update your kernel 390 configuration file appropriately or see GENERIC for more details. 391 39220071028: 393 The pccons(4) driver has been removed from the NetBSD/shark port. 394 You need to update any custom kernel configuration file you have 395 to remove any references to pccons (which includes removing the 396 now useless XSERVER option) and replace them with the correct 397 entries for the wscons driver. See the GENERIC configuration file 398 for more details. 399 40020070913: 401 A latent bug in dhclient/dhcpd that caused it to be unable to 402 enumerate interfaces was fixed. The bug began to cause 403 problems after 20070911 when the kernel's SIOCGIFCONF 404 implementation was repaired. From 20070529 to 20070911 racoon 405 could not enumerate interfaces. (These are noted because 406 normal kernel/userspace version matching hygiene is not 407 sufficient to avoid this problem.) Ensure that both kernel 408 and userland are from after 20070913. 409 41020070703: 411 nbinstall has been renamed ${MACHINE_GNU_ARCH}-install. It 412 calls the target-specific strip program, and the logic to pass 413 down STRIP from make has been removed. This requires a 414 re-installation of tools. 415 41620070422: 417 The way OS emulations lookup filenames inside the emulation root 418 has been changed. Rather than modify the pathname (and copy back 419 to userspace) namei() and lookup() directly check the emulation 420 root. One side effect is that absolute symlinks inside the emulated 421 root file system will be relative to that file system - unless they 422 start /../ this is useful when the emulated root is a real install 423 that has such links. 424 This might affect symlinks that have been added to reference outside 425 the emulated root. 426 42720070412: 428 The pckbc driver on sgimips IP32 has been removed. Use macekbc 429 instead. See the GENERIC32_IP3x kernel configuration for an 430 example. 431 43220070319: 433 src/lib/libc/Makefile revision 1.129 broke libc and ld.elf_so 434 on many platforms due to incorrect flags settings. If you 435 updated and built after about 20070315, do "nbmake-$arch 436 cleandir" in src/lib/libc and src/libexec/ld.elf_so to force a 437 rebuild of object files that might have been built 438 incorrectly, and ensure that you have at least 439 src/lib/libc/Makefile 1.130. 440 44120070210: 442 src/sys/sys/{sa.h,savar.h} were removed. 443 find ${OBJDIR} \( -name .depend -o -name '*.d' \) -print \ 444 | xargs egrep -l '/sa.h|/savar.h' | xargs rm 445 will allow dependencies on those files to get get rebuilt 446 44720070209: 448 The threading model was changed when the newlock2 branch 449 was merged to NetBSD-current. If you boot with a new 450 kernel (version 4.99.10), then you also need a new pthread 451 library (/usr/lib/libpthread.so.0.7). If you boot with 452 an old kernel, then you need the old pthread library 453 (/usr/lib/libpthread.so.0.6). Provided you keep the kernel and 454 the pthread library in sync, old threaded applications should 455 continue to work with an old or new kernel. Note that named(8) 456 is the only threaded application in the base system. 457 45820061214: 459 Following the move of string_to_flags() and flags_to_string() 460 from the bin/ls/ sources to libutil, users doing UPDATE builds 461 will need to do a "make cleandir" in 462 tools/mtree/, tools/makefs/, tools/binstall/, tools/pax/, 463 bin/pax/, bin/ls/, usr.sbin/mtree/, usr.sbin/makefs/, 464 usr.bin/xinstall/, libexec/ftpd/, rescue/, as well 465 as the installation images in distrib/ 466 in order to excise stale references to the old stat_flags.h header 467 file in the ls sources -- stat_flags.h has been removed. 468 46920061108: 470 The configure script used in the src/tools/gcc compiler has been 471 changed to indicate that our libc has ssp support built-in and 472 does not depend on -lssp and -lssp-nonshared. You'll need to 473 make clean in src/tools/gcc first to rebuild the compiler. 474 47520061009: 476 The sysctl variables net.inet{,6}.tcp{,6}.newreno are no longer 477 available. Use net.inet{,6}.tcp{,6}.congctl.selected instead. 478 47920060814: 480 The vt, vidcconsole, kbd, and rpckbd drivers on acorn32 have been 481 withdrawn. Use vidcvideo and pckbd instead. See the GENERIC 482 kernel configuration for an example. X servers from the last 483 few years should cope. 484 48520060703: 486 MPACPI is no more. We always configure PCI interrupts using ACPI 487 if we have an ACPI kernel. The option MPACPI_SCANPCI has been renamed 488 to ACPI_SCANPCI. Thanks to work from fvdl. 489 49020060627: 491 socket(2) has changed, and its system call has been versioned. 492 For userlands with the old version of socket(2), make sure that 493 your kernel has 'options COMPAT_30' set, or else 'bad system call' 494 errors will result. 495 496Hints for a more successful build: 497^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 498 Use build.sh, but do not use its "expert mode": 499 This will automatically build the tools in the 500 correct order, and it will keep the tools and the 501 new build products from interfering with the running 502 system. This will allow you to ignore most of the 503 other advice in this file. 504 Build a new kernel first: 505 This makes sure that any new system calls or features 506 expected by the new userland will be present. This 507 helps to avoid critical errors when upgrading. 508 Use object directories: 509 This helps to keep stale object 510 files from polluting the build if a Makefile "forgets" 511 about one. It also makes it easier to clean up after 512 a build. It's also necessary if you want to use the 513 same source tree for multiple machines. 514 To use object directories with build.sh: 515 a) invoke build.sh with the "-M" or "-O" options. 516 To use object directories without using build.sh: 517 a) cd /usr/src ; make cleandir 518 b) Add "OBJMACHINE=yes" to /etc/mk.conf 519 c) Add "MKOBJDIRS=yes" to /etc/mk.conf 520 d) cd /usr/src ; make build 521 Note that running "make obj" in a directory will create 522 in obj.$MACHINE directory. 523 Build to a DESTDIR: 524 This helps to keep old installed files (especially libraries) 525 from interfering with the new build. 526 To build to a DESTDIR with build.sh, use the "-D" option. 527 To build to a DESTDIR without using build.sh, set the DESTDIR 528 environment variable before running make build. It should be 529 set to the pathname of an initially empty directory. 530 Problems: if you do not use build.sh, you might need to 531 update critical utilities without using DESTDIR since 532 nothing is executed from what is installed in DESTDIR. 533 (See critical utils, below.) 534 Build often: 535 This keeps critical utilities current enough to not choke 536 on any other part of the source tree that depends on up to 537 date functionality. If you use build.sh, you should not have 538 this problem. 539 540What to do if things don't work: 541^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 542When things don't work there are usually a few things that commonly 543should be done. 544 1) make includes 545 This should be done automatically by make build. 546 2) cd share/mk && make install 547 Again, automatically done by make build. 548 549Failsafe rebuild of a small part of the tree: 550^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 551To make sure you rebuild something correctly you want to do 552something like the following: 553 1) Make sure the includes and .mk files are up to date. 554 2) Make sure any program used to build the particular 555 utility is up to date. (yacc, lex, etc...) 556 3) cd ...path/to/util... 557 make cleandir 558 rm ...all obj directories... 559 make cleandir # yes, again 560 make obj 561 make depend && make 562 563Failsafe rebuild of the entire tree: 564^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 565If you really want to make sure the source tree is clean and 566ready for a build try the following. Note that sourcing /etc/mk.conf 567(a make(1) Makefile) in this manner is not right, and will not work 568for anyone who uses any make(1) features in /etc/mk.conf. 569 570---cut here--- 571#!/bin/sh 572. /etc/mk.conf 573 574if [ -z $NETBSDSRCDIR ] ; then 575 NETBSDSRCDIR=/usr/src 576fi 577if [ \! -d $NETBSDSRCDIR ] ; then 578 echo Unable to find sources 579 exit 1 580fi 581find $NETBSDSRCDIR -name \*.o -o -name obj.\* -o -name obj -exec rm \{\} \; 582 583if [ -z $BSDOBJDIR ] ; then 584 BSDOBJDIR=/usr/obj 585fi 586if [ -d $BSDOBJDIR ] ; then 587 rm -rf $BSDOBJDIR 588fi 589 590cd $NETBSDSRCDIR && make cleandir 591 592---cut here--- 593 594Critical utilities: 595^^^^^^^^^^^^^^^^^^^ 596 usr.bin/compile_et 597 usr.bin/make 598 usr.bin/yacc 599 usr.bin/lex 600 usr.bin/xlint 601 usr.bin/config 602 603Other problems and possible solutions: 604^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 605Symptom:Complaints involving a Makefile. 606Fix: Rebuild usr.bin/make: 607 cd usr.bin/make && make && make install 608 Or, a failsafe method if that doesn't work: 609 cd usr.bin/make && cc *.c */*.c -I . -o make && mv make /usr/bin 610 611Fix: Make sure .mk files are up to date. 612 cd share/mk && make install 613 614Symptom:Kernel `config' fails to configure any kernel, including GENERIC. 615Fix: Rebuild usr.bin/config 616 617Symptom: 618Fix: Rebuild usr.bin/yacc 619 620Symptom: 621Fix: Rebuild usr.bin/lex 622 623Symptom: 624Fix: rm /usr/lib/libbfd.a 625 626Symptom:Obsolete intermediate files are used during compilation 627Fix: Try the following sequence of commands in the directory in question. 628 make cleandir; rm `make print-objdir`; make cleandir; make obj 629 (If you built the tree without "make obj" in the past, obsolete files 630 may remain. The command tries to clean everything up) 631 632Symptom:.../sysinst/run.c:xx: warning: initialization from incompatible 633 pointer type 634Fix: Rebuild and install usr.bin/menuc 635 636Symptom:mklocale not found during build in share/locale/ctype 637Fix: Build and install usr.bin/mklocale 638 639Symptom:undefined reference to `__assert13' or `__unsetenv13' 640Fix: Rebuild and install lib/libc 641 642Symptom:usr.bin/config fails to build. 643Fix: Try building with -DMAKE_BOOTSTRAP added to CFLAGS in Makefile. 644 645Symptom:undefined reference to `getprogname' or `setprogname' 646Fix: Rebuild and install lib/libc 647 648Symptom:lint does not understand the '-X' option 649Fix: May need to build & install libs with NOLINT=1 before rebuilding lint 650 651Symptom:Update build fails in src/tools/gcc complaining that a variable 652 (e.g. CPPFLAGS) has changed since the previous run. 653Fix: Run "nbmake-${ARCH} clean" in src/tools/gcc or do a clean build. 654