UPDATING revision 1.304
1$NetBSD: UPDATING,v 1.304 2019/10/23 16:26:42 martin 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 14Sections are marked with "^^^^^". After the section on "Recent changes" 15are several sections containing more general information. 16 17See also: BUILDING, build.sh, Makefile. 18 19Recent changes: 20^^^^^^^^^^^^^^^ 21 2220191022: 23 Ports amd64 and aarch64 switched to GCC 8.3 by default. 24 In-place ("expert mode", build.sh -E) builds are not supported 25 when going from a GCC 7 userland to GCC 8. Do a regular 26 build to a different DESTDIR (or preferably: build.sh -U) at least 27 once and install sets, or download compt.{tar.xz,tgz} from the 28 daily builds and install that before doing the next in-place build. 29 3020191001: 31 32 GCC 8.3 was imported. Builds of src/tools/gcc may fail if 33 old builds with GCC 7 output now uses GCC 8. Clean this 34 directory, and also clean src/external/gpl3/gcc. 35 3620190903: 37 38 File with names that coincide with existing files' names on 39 case-insensitive file systems were inadvertently committed, for 40 radeon GPU firmware. We cannot mark these as obsolete for 41 postinstall to fix, so if you updated src since 2019-08-26, and 42 ran build.sh distribution or ran build.sh release, you must 43 manually delete the following files in your DESTDIR (which is 44 usually $OBJDIR/destir.$ARCH), or from / if you have installed 45 them: 46 47 /libdata/firmware/radeon/bonaire_ce.bin 48 /libdata/firmware/radeon/bonaire_mc.bin 49 /libdata/firmware/radeon/bonaire_me.bin 50 /libdata/firmware/radeon/bonaire_mec.bin 51 /libdata/firmware/radeon/bonaire_pfp.bin 52 /libdata/firmware/radeon/bonaire_rlc.bin 53 /libdata/firmware/radeon/bonaire_sdma.bin 54 /libdata/firmware/radeon/bonaire_smc.bin 55 /libdata/firmware/radeon/bonaire_uvd.bin 56 /libdata/firmware/radeon/hainan_ce.bin 57 /libdata/firmware/radeon/hainan_mc.bin 58 /libdata/firmware/radeon/hainan_me.bin 59 /libdata/firmware/radeon/hainan_pfp.bin 60 /libdata/firmware/radeon/hainan_rlc.bin 61 /libdata/firmware/radeon/hainan_smc.bin 62 /libdata/firmware/radeon/hawaii_ce.bin 63 /libdata/firmware/radeon/hawaii_mc.bin 64 /libdata/firmware/radeon/hawaii_me.bin 65 /libdata/firmware/radeon/hawaii_mec.bin 66 /libdata/firmware/radeon/hawaii_pfp.bin 67 /libdata/firmware/radeon/hawaii_rlc.bin 68 /libdata/firmware/radeon/hawaii_sdma.bin 69 /libdata/firmware/radeon/hawaii_smc.bin 70 /libdata/firmware/radeon/kabini_ce.bin 71 /libdata/firmware/radeon/kabini_me.bin 72 /libdata/firmware/radeon/kabini_mec.bin 73 /libdata/firmware/radeon/kabini_pfp.bin 74 /libdata/firmware/radeon/kabini_rlc.bin 75 /libdata/firmware/radeon/kabini_sdma.bin 76 /libdata/firmware/radeon/kaveri_ce.bin 77 /libdata/firmware/radeon/kaveri_me.bin 78 /libdata/firmware/radeon/kaveri_mec.bin 79 /libdata/firmware/radeon/kaveri_mec2.bin 80 /libdata/firmware/radeon/kaveri_pfp.bin 81 /libdata/firmware/radeon/kaveri_rlc.bin 82 /libdata/firmware/radeon/kaveri_sdma.bin 83 /libdata/firmware/radeon/mullins_ce.bin 84 /libdata/firmware/radeon/mullins_me.bin 85 /libdata/firmware/radeon/mullins_mec.bin 86 /libdata/firmware/radeon/mullins_pfp.bin 87 /libdata/firmware/radeon/mullins_rlc.bin 88 /libdata/firmware/radeon/mullins_sdma.bin 89 /libdata/firmware/radeon/oland_ce.bin 90 /libdata/firmware/radeon/oland_mc.bin 91 /libdata/firmware/radeon/oland_me.bin 92 /libdata/firmware/radeon/oland_pfp.bin 93 /libdata/firmware/radeon/oland_rlc.bin 94 /libdata/firmware/radeon/oland_smc.bin 95 /libdata/firmware/radeon/pitcairn_ce.bin 96 /libdata/firmware/radeon/pitcairn_mc.bin 97 /libdata/firmware/radeon/pitcairn_me.bin 98 /libdata/firmware/radeon/pitcairn_pfp.bin 99 /libdata/firmware/radeon/pitcairn_rlc.bin 100 /libdata/firmware/radeon/pitcairn_smc.bin 101 /libdata/firmware/radeon/tahiti_ce.bin 102 /libdata/firmware/radeon/tahiti_mc.bin 103 /libdata/firmware/radeon/tahiti_me.bin 104 /libdata/firmware/radeon/tahiti_pfp.bin 105 /libdata/firmware/radeon/tahiti_rlc.bin 106 /libdata/firmware/radeon/tahiti_smc.bin 107 /libdata/firmware/radeon/verde_ce.bin 108 /libdata/firmware/radeon/verde_mc.bin 109 /libdata/firmware/radeon/verde_me.bin 110 /libdata/firmware/radeon/verde_pfp.bin 111 /libdata/firmware/radeon/verde_rlc.bin 112 /libdata/firmware/radeon/verde_smc.bin 113 114 We will re-import these radeon firmware images another way 115 later. 116 11720190727: 118 The uefi bootloader has gained tftp support and needs a clean 119 build. If you do update builds, manually clean its object 120 directory by something like: 121 cd sys/arch/i386/stand/efiboot && make clean 122 12320190723: 124 The jemalloc allocator in libc is now build without extended 125 debugging (for performance reasons). In update builds make sure 126 to rebuild it completly, by removing all affected object files, 127 including compat builds, something like: 128 cd /usr/obj && find . -type d -name jemalloc|xargs rm -rf 129 13020190207: 131 GCC 7 switched for many ports. Update builds are likely to fail. 132 13320180924: 134 A newer OpenSSL version has been imported. If you are doing 135 update builds, make sure to remove all old obj dirs, like: 136 cd /usr/obj && find . -type d -name openssl | xargs rm -rf 137 13820180717: 139 On aarch64 int64_t and related types have changed from long long 140 to long. This requires recompiling all C++ binaries. 141 14220180713: 143 On amd64 and i386 static binaries are now build position 144 independend. This requires recompilation of all object 145 files used to create the crunched /rescue binary. 146 Clean the rescue directory in your obj directory before 147 doing an update build, otherwise linking will fail. 148 14920180414: 150 Existing binutils was migrated to binutils.old. Manual 151 removal of tools/binutils objects directory may be required 152 to fix tools build failure. 153 15420180311: 155 bdftopcf was updated and may need cleaning in the 156 src/external/mit/xorg/tools/bdftopcf subdirectory if there are 157 link errors. 158 15920180212: 160 between OpenSSL and GCC updates, many things may fail to build. 161 any failure that looks like GCC or openssl is best handled by 162 a clean destdir and objdir. Full cleandir and destdir deletion 163 is recommended if build failures occur. 164 16520171225: 166 removal of the vadvise syscall requires manual removal of all 167 associated files from the libc build object directory (including 168 the .depend files) - a command like: 169 cd $OBJ && find . -type d -name libc | xargs rm -rf 170 For architectures that support multiple "compat" binary targets, 171 you'll need to cleanup both the regular libc directory and the 172 compat ones (the above command will do that). 173 17420171010: 175 a change to the build structure of external/bsd/acpica/bin/iasl 176 means that its objdir (or *.d and .depend at least) might need 177 to be manually removed - or a build done once without -u. 178 17920170822: 180 a new version of GMP has been imported and probably 181 will break parts of builds related to themselves or GCC, both 182 in the tools and the native section. Remove all GCC, GMP, MPFR 183 and MPC objdirs or build once without -u. 184 18520170816: 186 a new version of MPFR and MPC have been imported and probably 187 will break parts of builds related to themselves or GCC, both 188 in the tools and the native section. Remove all GCC, GMP, MPFR 189 and MPC objdirs or build once without -u. 190 19120170402: 192 a new version of dhcpcd has been imported, which does not support 193 update builds from the previous version. Remove your 194 external/bsd/dhcpcd object dir or build once without -u. 195 19620170211: 197 a new terminfo database has been imported. 198 The structure of it has changed slightly from prior versions and 199 an updated tic tool is required. 200 If you build.sh, don't use -u 201 20220170207: 203 various arch dependent libc/exect.S files were removed 204 Either remove the obj directories (lib/libc and compat/amd64/i386/lib 205 if it exists) or do a clean build. 206 (This is a bug in the make system, it should be corrected without 207 human intervention, but isn't.) 208 20920170104: 210 xinput build options have changed. 211 Remove the obj directory (external/mit/xorg/bin/xinput) 212 if you build.sh -u 213 21420170103: 215 a new version of flex has been imported. 216 Remove the file from obj (external/bsd/flex) 217 if you build.sh -u 218 21920161014: 220 a new version of OpenSSL has been imported. 221 Remove the files from obj (crypto/external/bsd/openssl) 222 if you build.sh -u 223 22420161009: 225 a new version of dhcpcd has been imported with slightly changed 226 build infrastructure. When doing a build.sh -u this requires 227 pruning the external/bsd/dhcpcd objdir. 228 22920160914: 230 i386, amd64, shark, ofppc and macppc have joined shark and x68k 231 ports in using xorg-server 1.18. This requires a clean destdir 232 and a clean objdir. 233 23420160527: 235 i386 needs a full cleandir or objdir deletion because PIE has 236 been enabled. (see the amd64 entry two down for further info) 237 23820160418: 239 libedit needs manual removal of all autogenerated files since 240 some of them are not autogenerated anymore. Remember that there 241 might be two copies of libedit if your platform builds "compat". 242 24320160410: 244 amd64 needs full "make cleandir" or deletion of objdir now that 245 PIE has been enabled for amd64. PIE, or position-independent 246 executables, means all code, including executables and not just 247 shared libraries, is position-independent and hence able to be 248 relocated by ASLR, address space layout randomization. 249 250 The change was made in Makefile variables for compiler and 251 linker flags, for which make(1) does not record dependencies, 252 hence it is unable to detect that all .o files need rebuilding. 253 254 Partial rebuilds with some modified source files will likely 255 fail when linking executables, since the linker refuses to mix 256 position-independent code with position-dependent code in 257 position-independent executables: 258 259 .../x86_64--netbsd/bin/ld: foo.o: relocation R_X86_64_32 against `...' cannot be used when making a shared object; recompile with -fPIC 260 26120160401: 262 Ports switching to GCC 5.3 will need a full "make cleandir". 263 Some people have found that cleandir is not sufficient, so if 264 in doubt delete the entire object directory tree for gcc. 265 26620160306: 267 NetBSD's regexp implementation is now part of libnbcompat. 268 Nblex, nbm4, nbpax, nbsed use it and they may crash on 269 non-NetBSD hosts if linked with stale object files produced 270 while they included a non-NetBSD regex.h. 271 In any case, you should "make cleandir" at least these tools 272 before updating your toolchain. 273 27420160125: 275 Dtrace has been enabled by default on some architectures. 276 When doing an update build, make sure to clean the etc/mtree 277 object directory before starting the build - otherwise the 278 needed directories in destdir will not be created. 279 An easy way to do this is: 280 cd src/etc/mtree && $TOOLDIR/bin/nbmake-$arch cleandir 281 28220150818: 283 New acpica requires "make cleandir" in src/external/bsd/acpica 284 again. 285 28620150413: 287 New acpica requires "make cleandir" and reinstalling yacc 288 in /usr/src/external/bsd/byacc and /usr/src/tools/yacc and 289 also "make cleandir" in /usr/src/external/bsd/acpica. 290 29120150404: 292 Lint changes require a full rebuild of the tool, so make 293 sure to build without -u option to build.sh, or manually 294 do a make cleandir in src/tools/lint1 and 295 src/usr.bin/xlint. 296 29720150310: 298 Improvements to openssl for arm mean that update builds of 299 the openssl libraries will fail. A make cleandir in 300 external/bsd/openssl/lib is needed 301 30220141026: 303 A mishap during the import of pppd may cause your corruption 304 in your cvs directory if you happened to do a cvs update 305 during a short period of time. To fix, just remove the 306 directory src/external/bsd/ppp/dist/pppd completely 307 and let cvs restore it on next update. 308 30920140721: 310 The src/external/mit/lua/src directory was accidentally created 311 and then deleted in the CVS repository. If you get errors like 312 313 cvs [update aborted]: cannot open directory 314 /cvsroot/src/external/mit/lua/src: No such file or directory 315 316 then delete your local copy of that directory tree and try again. 317 31820140530: 319 ARM eABI switched to DWARF based exception handling. This requires 320 rebuilding all C++ code. It is strongly advised to do a clean build. 321 32220140131: 323 The new compiler_rt/libc integration moved a few things. It is strongly 324 advised to do a clean build. At least lib/libc, the compat version(s) 325 of libc, libkern, rump and the kernels need to be cleaned. 326 32720131227: 328 1. The new ntpd runs in a restricted mode to prevent amplification 329 attacks. If you need ntpdc to work you need to explicitly enable 330 mode7 in your config file. Make sure you put the necessary restrict 331 statements to avoid being exposed. 332 2. strncat has moved from lib/libc to common/lib/libc; you might need 333 to make clean in libc 334 33520131129: 336 The GMP sources were updated, and builds will likely fail without 337 cleaning their build trees for both tools and in-tree, like below. 338 33920131128: 340 The MPC and MPFR sources were updated, and builds may require their 341 tools and in-tree directories cleaned for successful updates. 342 34320130605: 344 The kernel option FAST_IPSEC no longer exists, it's been renamed 345 to IPSEC (and the older IPSEC version removed). 346 34720130605: 348 Previous freetype installations eroneously installed private 349 header files. If you are building against a non-empty $DESTDIR, 350 please remove ${DESTDIR}//usr/X11R7/include/freetype2/freetype/. 351 35220130531: 353 The xdm update may cause build failure due to xdm.man being 354 in the obj tree. Make sure to ensure any like this: 355 nbmake: nbmake: don't know how to make xdm.man. Stop 356 is fixed by deleting the xdm.man in the obj tree. 357 35820130530: 359 Updates of many xsrc packages will leave old .pc files around. 360 Best to clean out the xsrc objdir entirely before rebuilds. 361 36220130301: 363 The removal of netiso requires manual removal of /usr/include/netiso 364 prior to the build and make cleandir in /usr/src/usr.bin/{ktruss,kdump} 365 36620120726: 367 The update of OpenSSL requires cleaning both the OpenSSL build 368 directory and DESTDIR. *Even non-update builds require cleaning 369 DESTDIR.* Builds done without taking these steps may fail, or in 370 some cases may succeed and install broken OpenSSL libraries that 371 cause third-party software to link incorrectly and/or crash. 372 37320120507: 374 The database schema for makemandb was changed. You will 375 need to update the database using 'makemandb -f' or wait 376 for the next weekly run to fix it. 377 37820120319: 379 sys/conf/Makefile.kern.inc has been modified to adjust the 380 size of db_symtab automatically. You need to update dbsym in 381 your $TOOLDIR to build kernels with options SYMTAB_SPACE. If 382 you don't want this behavior, add AUTO_SYMTAB_SPACE=no to your 383 mk.conf. 384 38520120216: 386 Default for MKCATPAGES changed to NO. Update builds will fail 387 unless DESTDIR is cleaned manually. If you built between 20120207 388 and 20120216, daily and weekly could have created an unreadable 389 /var/db/man.db index for apropos. Running makemandb -f or 390 the next run of weekly will fix it. 391 39220111227: 393 If you built between 20111225 and 20111227 you need to remove 394 /usr/lib/libpam.so.4* and /usr/lib/security/*.so.4, since the 395 bump has been reverted. 396 39720111125: 398 The "rnd" pseudodevice has been added to sys/conf/std, which 399 means it should no longer be explicitly listed in kernel 400 configuration files. The line "pseudo-device rnd" should be 401 removed from any custom kernel config files users may have. 402 40320111119: 404 A problem with the datastructures used by the rndctl(8) 405 utility (pointers in datastructures in an array, making 32->64 406 bit compatibility very painful) has been fixed in a 407 non-backwards-compatible way. If you replace your kernel, 408 replace your rndctl executable too. 409 41020111001: 411 the prop_*_send_syscall() functions from proplib(3) have been 412 changed and their new version is not backward compatible with the old 413 one. So ensure that all consumers of these functions (currently: 414 quota2 code and its tests) are updated together with the new lib. 415 41620110817: 417 sparc has been changed to use GCC 4.5.3, so any objdir or 418 DESTDIR for them should be deleted before updating. 419 42020110806: 421 i386 and amd64 have been changed to use GCC 4.5.3, so any 422 objdir or DESTDIR for them should be deleted before updating. 423 42420110805: 425 The update to GCC 4.5.3 requires a non-trivial portion of 426 the tree to be cleaned. Best to delete both objdir and 427 DESTDIR before running this update. So far, only the 428 sparc64, mips and powerpc platforms have changed. 429 43020110803: 431 The layout of external/public-domain/xz has changed. To do an 432 update build you will have to remove the contents of the OBJDIR 433 for external/public-domain/xz/bin by hand as the xz entry there 434 is now a directory. 435 43620110410: 437 The configuration of src/tools/gcc has changed. To do an 438 update build you have to clean both tools/binutils and 439 tools/gcc by hand. 440 44120110328: 442 Building the Xorg binary was moved into a subdirectory to fix 443 ordering issues with "make all". It may be necessary to remove 444 the OBJDIR for external/mit/xorg/server/xorg-server/hw/xfree86 445 if your update build fails, as the "Xorg" entry there is now a 446 directory. 447 44820110121: 449 Assembler files no longer use -traditional-cpp. This can break 450 the build of individual parts of the tree. This is handled 451 correctly by build.sh. Manual builds have to update /usr/share/mk 452 and re-run config(1) for any kernel configurations as needed. 453 45420101217: 455 The tcpdump(8) program was changed to drop privileges and chroot(2) 456 by default. It may be necessary to manually update passwd(5) and 457 group(5) in order to make the program work with existing setups. 458 45920101125: 460 The latest changes to setenv(3) dissallow setting environment 461 variables with names that contain '='. Revision 1.18 of env.c 462 assumed that this was allowed. Installing a new libc with an 463 old copy of /usr/bin/env causes env x=1 printenv | grep x= to 464 break which affects the autoconf tests for dependency finding, 465 so building gcc will end up printing: 466 checking dependency style of gcc... none 467 configure: error: no usable dependency style found 468 Fix it by rebuilding and re-installing env. 469 47020101119: 471 Recent Xorg updates in xsrc/external/mit/ may cause various build 472 or run-time problems. Delete your entire DESTDIR and OBJDIR if you 473 have any build problems with xsrc, or problems with mismatched 474 versions between xorg-server and drivers. 475 47620100604: 477 The update of ATF to 0.9 causes old tests written in shell to fail 478 unless they are rebuilt. If you are building with MKUPDATE=yes, 479 you need to clean the src/external/bsd/atf/tests/ and the src/tests/ 480 trees by hand. 481 48220100522: 483 Recent Xorg updates in xsrc/external/mit/ will cause various build 484 problems. Delete your entire DESTDIR and OBJDIR if you have any 485 build problems with xsrc. 486 48720100522: 488 private section of <ctype.h> was splitted, and now mklocale(1) 489 include ctype_local.h, so you have to make cleandir in tools/mklocale. 490 49120100520: 492 The location of the xkb compiled descriptions has changed. Please 493 remove usr/X11R7/lib/X11/xkb/compiled from your $DESTDIR. 494 49520100222: 496 The shared objects file extension has been changed from .so to 497 .pico, in order to avoid conflicts with shared libraries names 498 libXX.so. All now stale regular .so files can be removed from 499 your object directories. 500 50120100204: 502 The termcap database has been removed from the sources, 503 but has not been marked obsolete so it is not removed 504 from the system when upgrading. 505 As such, you will need to remove them from your object 506 and destination directories. 507 50820091101: 509 After updating, it may be necessary to make the 'cleandir' 510 target in src/tools/yacc/ and in src/usr.bin/yacc/ before a 511 'build.sh -u tools' or 'build.sh -u distribution'. Ditto 512 src/tools/lex/ and src/usr.bin/lex/. 513 51420091001: 515 On amd64 you must rebuild tools (to get the new binutils) 516 before building a kernel, or the build fails on cpufunc.S. 517 51820091001: 519 An error will create a ./usr/X11R7/lib/X11/xkb/compiled/xkb 520 symlink, failing the build. Delete the link, and the subdir 521 it is in, and retry your build. 522 52320090718: 524 libc build changed so that strchr() provides the extra entry 525 point for index(). Update build of libc.a (and libc_pic.a) 526 may fail because the archive contains the unwanted index.o. 527 (Similarly for strrchr() and rindex().) 528 52920090709: 530 Native Xorg was upgraded again. Builds will probably fail again 531 without a clean objdir, at least for src/external/mit/xorg. 532 53320090616: 534 Native Xorg was upgraded. Builds will need a clean objdir for 535 src/external/mit/xorg. Upgrading a system from sets will not 536 work properly yet as the /usr/X11R7/lib/X11/xkb/symbols/pc 537 subdirectory has been changed into a file, and this needs to 538 be manually "rm -r"'ed before installing xbase.tgz. 539 54020090501: 541 Several new functions were added to string.h/libc, and this 542 can cause autoconf problems during the tool build for people 543 who fail to clean out their tools objects properly. If you 544 note messages about stpcpy, stpncpy or strnlen accompanying a 545 failure during the tool build, clean out all your tools 546 objects and start again. 547 54820090325: 549 The i386 port was switched to i486 default toolchain. This requires 550 cleaning your src/tools directory and $TOOLDIR and rebuilding them. 551 55220090126: 553 The __posix_fadvise50 system call changed assembly stub type. You 554 need to 'rm -f __posix_fadvise50.*' in the libc build directory 555 to avoid using the old assembly stub. 556 55720090202: 558 pkg_install now depends on the pkgdb cache for automatic conflict 559 detection. It is recommented to rebuild the cache with 560 ``pkg_admin rebuild''. 561 56220090110: 563 time_t and dev_t have been bumped to 64 bit quantities. To upgrade: 564 1. Make sure your kernel has COMPAT_50 in it. Build and install. 565 This is needed even in the MODULAR kernel because there is 566 conditionally compiled code in rtsock.c. 567 2. make sure build.sh completes and the binaries in a chroot work 568 before installing. 569 3. If you don't use build.sh and you build directly to root, and 570 your build breaks in the middle, don't despair. Make sure headers 571 are installed properly, and start building libraries first libc 572 and libutil, install them and then continue building all the 573 libraries in src/lib and src/gnu/lib and install them. Once 574 the new libraries are installed, you can restart the build. 575 4. If you compile packages and you notice link time warnings, 576 rebuild the required packages to update their shared libraries. 577 Any package you rebuild will require rebuilding all the packages 578 that depend on it. 579 5. Next time you run pwd_mkdb with the new binary, the file 580 will be upgraded and it will not be backwards compatible. 581 6. The utmpx/wtmpx files (/var/run/utmpx and /var/log/wtmpx, see 582 lastlogx(5)) have been versioned, and there is a heuristic 583 for utmp. You are better off removing the old files after 584 upgrading. The automated clearing of /var/run during 585 boot, and the automated rotating of files in /var/log by 586 newsyslog(8), may mean that you do not have to remove the 587 files manually. 588 7. The optional accounting file (/var/account/acct, see 589 accton(8)) has not been versioned, and will need to be 590 removed. The automatic rotation of the accounting file by 591 /etc/daily limits the bad consequences of failure to remove 592 the file. 593 8. Application software that writes time_t to binary files on 594 disk will break or need attention. Most notably: if you are 595 using PostgreSQL < 8.4, you need to dump your databases, 596 rebuild PostgreSQL with the new time_t, then restore. 597 59820081219: 599 config(1) has been updated, and one of the files it creates - 600 swapnetbsd.o - has changed format. You need to rebuild config 601 (done automatically by build.sh) and then you need to rerun 602 config on all kernel configuration files before rebuilding those 603 kernels. 604 60520081205: 606 If you build with MKX11=no, you should remove /etc/rc.d/xdm and 607 /etc/rc.d/xfs from DESTDIR because those files were moved to the xetc 608 set and will appear as extra files for MKX11=no update builds. 609 61020081122: 611 On i386, various kernel options(4) in GENERIC including 612 file systems have been disabled and moved into kernel modules. 613 Before trying a new GENERIC kernel, you have to prepare the 614 following files as well as a new GENERIC kernel: 615 616 - build and install kernel modules from src/sys/modules 617 618 - install the latest bootloader, which will load a module 619 for the file system from which the kernel is loaded automatically 620 621 If you have to load your kernel from a file system which is not of 622 the same type as the root file system, you have to load the necessary 623 file system module manually on the boot prompt or in the boot.cfg file. 624 62520080827: 626 If you built and installed a libc from sources between 627 2008/08/20 and 2008/08/26 you got a broken strtouq(3) 628 which results in false errors reported by lint(1). 629 Since this breaks the libc build itself, manual help is 630 needed -- lint must be disabled temporarily, e.g.: 631 $ (cd lib/libc && make MKLINT=no dependall install) 632 63320080813: 634 MKDEBUG build was broken because the .depend files did not know 635 about .go files. You need to remove all .depend files and rebuild. 636 63720080802: 638 A regression in binary compatibility for pthread_mutex_t has 639 been fixed. Unfortunately, the price is breaking compatibility 640 for -current. 641 642 Threaded programs (using libpthread) and C++ programs (using 643 libstdc++) compiled after 20070907 and before 20080802 need to 644 be recompiled. 645 646 One way to find affected pkgsrc packages: 647 648 $ grep REQUIRES=/usr/lib/libpthread /var/db/pkg/*/+BUILD_INFO 649 $ grep REQUIRES=/usr/lib/libstdc++ /var/db/pkg/*/+BUILD_INFO 650 65120080731: 652 WAPBL (metadata journaling support) has been added, but at this 653 time isn't backwards compatible with pre-WAPBL aware kernels 654 and userland (fsck_ffs in particular). Please make sure you 655 don't use a journaled filesystem with an older kernel/userland, 656 especially an uncleanly mounted journaled filesystem. WAPBL 657 also requires the super block to be in the UFS2 format. You 658 can use fsck_ffs -c 4 to update the superblock format. 659 66020080721: 661 Assembler warnings are now fatal if $WARNS>0 and $NOGCCERROR 662 isn't defined. 663 66420080531: 665 The ioctl number of DRVSUSPENDDEV command on /dev/drvctl changed 666 from 125 (conflicted with DRVCTLCOMMAND) to 129. The drvctl(8) 667 utility needs to be rebuilt and reinstalled as older binaries 668 won't work correctly. The following sequence of commands: 669 670 $ (cd sys/sys/ && nbmake-$arch includes) 671 $ (cd sbin/drvctl/ && nbmake-$arch clean) 672 $ (cd sbin/drvctl/ && nbmake-$arch all) 673 674 leaves new drvctl utility in sbin/drvctl build directory. 675 67620080503: 677 The <bsd.lib.mk> variable MKPRIVATELIB was renamed to LIBISPRIVATE. 678 67920080521: 680 For a while, unprivileged UPDATE builds would fail to 681 succeed at the checkflist stage, complaining that 682 ${DESTDIR}/stand/<arch>/ did not exist. A fix for this 683 problem was committed to share/mk/bsd.kmodule.mk, revision 1.9. 684 If you already hit this problem, update the .mk file, 685 remove ${DESTDIR}/stand/<arch>, and re-run the build. 686 68720080303: 688 Linker warnings are now fatal if $WARNS>0. 689 69020080126: 691 The posix_fadvise system call has been changed from an assembly 692 stub, to a c file that calls an assembly stub. You need to 693 'rm -f posix_fadvise.* .depend' in the libc build directory to 694 avoid using the old assembly stub. 695 69620071209: 697 The acpiec(4) driver has been split into two attachments. If you 698 get ACPI errors before the attachment, please update your kernel 699 configuration file appropriately or see GENERIC for more details. 700 70120071115: 702 The it(4) driver has been renamed to itesio(4) and the old port 703 argument specified in the kernel configuration file is not valid 704 anymore. The itesio(4) driver now uses the Super I/O address port 705 rather than the EC address port. Please update your kernel 706 configuration file appropriately or see GENERIC for more details. 707 70820071028: 709 The pccons(4) driver has been removed from the NetBSD/shark port. 710 You need to update any custom kernel configuration file you have 711 to remove any references to pccons (which includes removing the 712 now useless XSERVER option) and replace them with the correct 713 entries for the wscons driver. See the GENERIC configuration file 714 for more details. 715 71620070913: 717 A latent bug in dhclient/dhcpd that caused it to be unable to 718 enumerate interfaces was fixed. The bug began to cause 719 problems after 20070911 when the kernel's SIOCGIFCONF 720 implementation was repaired. From 20070529 to 20070911 racoon 721 could not enumerate interfaces. (These are noted because 722 normal kernel/userspace version matching hygiene is not 723 sufficient to avoid this problem.) Ensure that both kernel 724 and userland are from after 20070913. 725 72620070703: 727 nbinstall has been renamed ${MACHINE_GNU_ARCH}-install. It 728 calls the target-specific strip program, and the logic to pass 729 down STRIP from make has been removed. This requires a 730 re-installation of tools. 731 73220070422: 733 The way OS emulations lookup filenames inside the emulation root 734 has been changed. Rather than modify the pathname (and copy back 735 to userspace) namei() and lookup() directly check the emulation 736 root. One side effect is that absolute symlinks inside the emulated 737 root file system will be relative to that file system - unless they 738 start /../ this is useful when the emulated root is a real install 739 that has such links. 740 This might affect symlinks that have been added to reference outside 741 the emulated root. 742 74320070412: 744 The pckbc driver on sgimips IP32 has been removed. Use macekbc 745 instead. See the GENERIC32_IP3x kernel configuration for an 746 example. 747 74820070319: 749 src/lib/libc/Makefile revision 1.129 broke libc and ld.elf_so 750 on many platforms due to incorrect flags settings. If you 751 updated and built after about 20070315, do "nbmake-$arch 752 cleandir" in src/lib/libc and src/libexec/ld.elf_so to force a 753 rebuild of object files that might have been built 754 incorrectly, and ensure that you have at least 755 src/lib/libc/Makefile 1.130. 756 75720070210: 758 src/sys/sys/{sa.h,savar.h} were removed. 759 find ${OBJDIR} \( -name .depend -o -name '*.d' \) -print \ 760 | xargs egrep -l '/sa.h|/savar.h' | xargs rm 761 will allow dependencies on those files to get get rebuilt 762 76320070209: 764 The threading model was changed when the newlock2 branch 765 was merged to NetBSD-current. If you boot with a new 766 kernel (version 4.99.10), then you also need a new pthread 767 library (/usr/lib/libpthread.so.0.7). If you boot with 768 an old kernel, then you need the old pthread library 769 (/usr/lib/libpthread.so.0.6). Provided you keep the kernel and 770 the pthread library in sync, old threaded applications should 771 continue to work with an old or new kernel. Note that named(8) 772 is the only threaded application in the base system. 773 77420061214: 775 Following the move of string_to_flags() and flags_to_string() 776 from the bin/ls/ sources to libutil, users doing UPDATE builds 777 will need to do a "make cleandir" in 778 tools/mtree/, tools/makefs/, tools/binstall/, tools/pax/, 779 bin/pax/, bin/ls/, usr.sbin/mtree/, usr.sbin/makefs/, 780 usr.bin/xinstall/, libexec/ftpd/, rescue/, as well 781 as the installation images in distrib/ 782 in order to excise stale references to the old stat_flags.h header 783 file in the ls sources -- stat_flags.h has been removed. 784 78520061108: 786 The configure script used in the src/tools/gcc compiler has been 787 changed to indicate that our libc has ssp support built-in and 788 does not depend on -lssp and -lssp-nonshared. You'll need to 789 make clean in src/tools/gcc first to rebuild the compiler. 790 79120061009: 792 The sysctl variables net.inet{,6}.tcp{,6}.newreno are no longer 793 available. Use net.inet{,6}.tcp{,6}.congctl.selected instead. 794 79520060814: 796 The vt, vidcconsole, kbd, and rpckbd drivers on acorn32 have been 797 withdrawn. Use vidcvideo and pckbd instead. See the GENERIC 798 kernel configuration for an example. X servers from the last 799 few years should cope. 800 80120060703: 802 MPACPI is no more. We always configure PCI interrupts using ACPI 803 if we have an ACPI kernel. The option MPACPI_SCANPCI has been renamed 804 to ACPI_SCANPCI. Thanks to work from fvdl. 805 80620060627: 807 socket(2) has changed, and its system call has been versioned. 808 For userlands with the old version of socket(2), make sure that 809 your kernel has 'options COMPAT_30' set, or else 'bad system call' 810 errors will result. 811 812Hints for a more successful build: 813^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 814 Use build.sh, but do not use its "expert mode": 815 This will automatically build the tools in the 816 correct order, and it will keep the tools and the 817 new build products from interfering with the running 818 system. This will allow you to ignore most of the 819 other advice in this file. 820 Build a new kernel first: 821 This makes sure that any new system calls or features 822 expected by the new userland will be present. This 823 helps to avoid critical errors when upgrading. 824 Use object directories: 825 This helps to keep stale object 826 files from polluting the build if a Makefile "forgets" 827 about one. It also makes it easier to clean up after 828 a build. It's also necessary if you want to use the 829 same source tree for multiple machines. 830 To use object directories with build.sh: 831 a) invoke build.sh with the "-M" or "-O" options. 832 To use object directories without using build.sh: 833 a) cd /usr/src ; make cleandir 834 b) Add "OBJMACHINE=yes" to /etc/mk.conf 835 c) Add "MKOBJDIRS=yes" to /etc/mk.conf 836 d) cd /usr/src ; make build 837 Note that running "make obj" in a directory will create 838 in obj.$MACHINE directory. 839 Build to a DESTDIR: 840 This helps to keep old installed files (especially libraries) 841 from interfering with the new build. 842 To build to a DESTDIR with build.sh, use the "-D" option. 843 To build to a DESTDIR without using build.sh, set the DESTDIR 844 environment variable before running make build. It should be 845 set to the pathname of an initially empty directory. 846 Problems: if you do not use build.sh, you might need to 847 update critical utilities without using DESTDIR since 848 nothing is executed from what is installed in DESTDIR. 849 (See critical utils, below.) 850 Build often: 851 This keeps critical utilities current enough to not choke 852 on any other part of the source tree that depends on up to 853 date functionality. If you use build.sh, you should not have 854 this problem. 855 856What to do if things don't work: 857^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 858When things don't work there are usually a few things that commonly 859should be done. 860 1) make includes 861 This should be done automatically by make build. 862 2) cd share/mk && make install 863 Again, automatically done by make build. 864 865Failsafe rebuild of a small part of the tree: 866^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 867To make sure you rebuild something correctly you want to do 868something like the following: 869 1) Make sure the includes and .mk files are up to date. 870 2) Make sure any program used to build the particular 871 utility is up to date. (yacc, lex, etc...) 872 3) cd ...path/to/util... 873 make cleandir 874 rm ...all obj directories... 875 make cleandir # yes, again 876 make obj 877 make depend && make 878 879Failsafe rebuild of the entire tree: 880^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 881If you really want to make sure the source tree is clean and 882ready for a build try the following. Note that sourcing /etc/mk.conf 883(a make(1) Makefile) in this manner is not right, and will not work 884for anyone who uses any make(1) features in /etc/mk.conf. 885 886---cut here--- 887#!/bin/sh 888. /etc/mk.conf 889 890if [ -z $NETBSDSRCDIR ] ; then 891 NETBSDSRCDIR=/usr/src 892fi 893if [ \! -d $NETBSDSRCDIR ] ; then 894 echo Unable to find sources 895 exit 1 896fi 897find $NETBSDSRCDIR -name \*.o -o -name obj.\* -o -name obj -exec rm \{\} \; 898 899if [ -z $BSDOBJDIR ] ; then 900 BSDOBJDIR=/usr/obj 901fi 902if [ -d $BSDOBJDIR ] ; then 903 rm -rf $BSDOBJDIR 904fi 905 906cd $NETBSDSRCDIR && make cleandir 907 908---cut here--- 909 910Critical utilities: 911^^^^^^^^^^^^^^^^^^^ 912 usr.bin/compile_et 913 usr.bin/make 914 usr.bin/yacc 915 usr.bin/lex 916 usr.bin/xlint 917 usr.bin/config 918 919Other problems and possible solutions: 920^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 921Symptom:Complaints involving a Makefile. 922Fix: Rebuild usr.bin/make: 923 cd usr.bin/make && make && make install 924 Or, a failsafe method if that doesn't work: 925 cd usr.bin/make && cc *.c */*.c -I . -o make && mv make /usr/bin 926 927Fix: Make sure .mk files are up to date. 928 cd share/mk && make install 929 930Symptom:Kernel `config' fails to configure any kernel, including GENERIC. 931Fix: Rebuild usr.bin/config 932 933Symptom: 934Fix: Rebuild usr.bin/yacc 935 936Symptom: 937Fix: Rebuild usr.bin/lex 938 939Symptom: 940Fix: rm /usr/lib/libbfd.a 941 942Symptom:Obsolete intermediate files are used during compilation 943Fix: Try the following sequence of commands in the directory in question. 944 make cleandir; rm `make print-objdir`; make cleandir; make obj 945 (If you built the tree without "make obj" in the past, obsolete files 946 may remain. The command tries to clean everything up) 947 948Symptom:.../sysinst/run.c:xx: warning: initialization from incompatible 949 pointer type 950Fix: Rebuild and install usr.bin/menuc 951 952Symptom:mklocale not found during build in share/locale/ctype 953Fix: Build and install usr.bin/mklocale 954 955Symptom:undefined reference to `__assert13' or `__unsetenv13' 956Fix: Rebuild and install lib/libc 957 958Symptom:usr.bin/config fails to build. 959Fix: Try building with -DMAKE_BOOTSTRAP added to CFLAGS in Makefile. 960 961Symptom:undefined reference to `getprogname' or `setprogname' 962Fix: Rebuild and install lib/libc 963 964Symptom:lint does not understand the '-X' option 965Fix: May need to build & install libs with NOLINT=1 before rebuilding lint 966 967Symptom:Update build fails in src/tools/gcc complaining that a variable 968 (e.g. CPPFLAGS) has changed since the previous run. 969Fix: Run "nbmake-${ARCH} clean" in src/tools/gcc or do a clean build. 970 971Symptom:cvs [update aborted]: cannot open directory /cvsroot/src/...: 972 No such file or directory. 973Cause: If a directory is created by mistake, then it is sometimes 974 deleted from the CVS repository using administrative commands 975 that bypass the normal cvs access controls. If your cvs working tree 976 contains references to a directory that has been deleted on the 977 server in this way, then "cvs update" reports this error. 978Fix: Recursively delete the affected directory from your working tree 979 and try the update again. 980