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