UPDATING revision 1.322
1$NetBSD: UPDATING,v 1.322 2021/10/14 15:40:00 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 2220211014: 23 MKRELRO default for aarch64 has changed, a clean build is required. 24 2520210917: 26 Changed MNT_ACLS to default to POSIX1e ACLs instead of NFSv4 27 ACLs, to be compatible with FreeBSD. If you are using NFSv4 ACLs 28 and have "acls" in /etc/fstab you'll need to change it to "nfs4acls". 29 3020210711: 31 Updated GMP sources may require cleaning in tools/gmp and/or in 32 external/lgpl3/gmp/lib, particularly if GCC itself does not build. 33 3420210417: 35 GCC 10 was enabled for several platforms. If builds fail in either 36 tools/gcc or external/gpl/gcc, first try cleaning those objects and 37 removing the $DESTDIR/usr/include/g++ subdirectory. 38 3920201230: 40 lint1/ops.c is no longer autogenerated. If this makes the build 41 fail, clean $OBJDIR/tools/*lint* and $OBJDIR/usr.bin/*xlint*. 42 4320201016: 44 MIPS kernel modules have been disabled until they work. This will 45 turn up in extra files in the DESTDIR, which should be cleaned. 46 4720200925: 48 GNU MPC and MPFR have been updated. At least MPFR needs cleaning 49 in both the tools and external dirs. 50 5120200912: 52 GCC 9 has arrived for Arm and x86 platforms, and will be coming 53 for several more, as will binutils 2.34. Clean as required. 54 5520200907: 56 GCC 9 is coming, and binutils has been updated for MIPS. This 57 probably requires cleaning the tools/binutils. 58 5920200811: 60 GCC updates may require cleaning the objdir. This may occur 61 due to GCC 7.5 update, GCC 8.4 move to gcc.old, or the upcoming 62 GCC 9 upgrade. 63 6420200614: 65 blacklist* has been renamed to blocklist*. postinstall(8) 66 should handle the migration 67 6820200601: 69 Due to a mistake in LIBISPRIVATE handling, .so libraries were 70 created in the build directories and need cleaning. 71 7220200311: 73 GCC 8 ports will need cleaning in src/tools/gcc and 74 src/external/gpl3/gcc due to GCC 8.4 update. 75 7620191118: 77 More architectures were switched to gcc8: 78 i386, ia64 powerpc64, sparc, sparc64, arm 79 The same comments as in 20191022 apply. 80 8120191112: 82 The LLVM update requires a clean rebuild for all architectures using 83 LLVM during the tools build phase (i386, amd64, aarch64). 84 8520191022: 86 Ports amd64 and aarch64 switched to GCC 8.3 by default. 87 In-place ("expert mode", build.sh -E) builds are not supported 88 when going from a GCC 7 userland to GCC 8. Do a regular 89 build to a different DESTDIR (or preferably: build.sh -U) at least 90 once and install sets, or download comp.{tar.xz,tgz} from the 91 daily builds and install that before doing the next in-place build. 92 9320191001: 94 GCC 8.3 was imported. Builds of src/tools/gcc may fail if 95 old builds with GCC 7 output now uses GCC 8. Clean this 96 directory, and also clean src/external/gpl3/gcc. 97 9820190903: 99 Files with names that coincide with existing files' names on 100 case-insensitive file systems were inadvertently committed, for 101 radeon GPU firmware. We cannot mark these as obsolete for 102 postinstall to fix, so if you updated src since 2019-08-26, and 103 ran build.sh distribution or ran build.sh release, you must 104 manually delete the following files in your DESTDIR (which is 105 usually $OBJDIR/destir.$ARCH), or from / if you have installed 106 them: 107 108 /libdata/firmware/radeon/bonaire_ce.bin 109 /libdata/firmware/radeon/bonaire_mc.bin 110 /libdata/firmware/radeon/bonaire_me.bin 111 /libdata/firmware/radeon/bonaire_mec.bin 112 /libdata/firmware/radeon/bonaire_pfp.bin 113 /libdata/firmware/radeon/bonaire_rlc.bin 114 /libdata/firmware/radeon/bonaire_sdma.bin 115 /libdata/firmware/radeon/bonaire_smc.bin 116 /libdata/firmware/radeon/bonaire_uvd.bin 117 /libdata/firmware/radeon/hainan_ce.bin 118 /libdata/firmware/radeon/hainan_mc.bin 119 /libdata/firmware/radeon/hainan_me.bin 120 /libdata/firmware/radeon/hainan_pfp.bin 121 /libdata/firmware/radeon/hainan_rlc.bin 122 /libdata/firmware/radeon/hainan_smc.bin 123 /libdata/firmware/radeon/hawaii_ce.bin 124 /libdata/firmware/radeon/hawaii_mc.bin 125 /libdata/firmware/radeon/hawaii_me.bin 126 /libdata/firmware/radeon/hawaii_mec.bin 127 /libdata/firmware/radeon/hawaii_pfp.bin 128 /libdata/firmware/radeon/hawaii_rlc.bin 129 /libdata/firmware/radeon/hawaii_sdma.bin 130 /libdata/firmware/radeon/hawaii_smc.bin 131 /libdata/firmware/radeon/kabini_ce.bin 132 /libdata/firmware/radeon/kabini_me.bin 133 /libdata/firmware/radeon/kabini_mec.bin 134 /libdata/firmware/radeon/kabini_pfp.bin 135 /libdata/firmware/radeon/kabini_rlc.bin 136 /libdata/firmware/radeon/kabini_sdma.bin 137 /libdata/firmware/radeon/kaveri_ce.bin 138 /libdata/firmware/radeon/kaveri_me.bin 139 /libdata/firmware/radeon/kaveri_mec.bin 140 /libdata/firmware/radeon/kaveri_mec2.bin 141 /libdata/firmware/radeon/kaveri_pfp.bin 142 /libdata/firmware/radeon/kaveri_rlc.bin 143 /libdata/firmware/radeon/kaveri_sdma.bin 144 /libdata/firmware/radeon/mullins_ce.bin 145 /libdata/firmware/radeon/mullins_me.bin 146 /libdata/firmware/radeon/mullins_mec.bin 147 /libdata/firmware/radeon/mullins_pfp.bin 148 /libdata/firmware/radeon/mullins_rlc.bin 149 /libdata/firmware/radeon/mullins_sdma.bin 150 /libdata/firmware/radeon/oland_ce.bin 151 /libdata/firmware/radeon/oland_mc.bin 152 /libdata/firmware/radeon/oland_me.bin 153 /libdata/firmware/radeon/oland_pfp.bin 154 /libdata/firmware/radeon/oland_rlc.bin 155 /libdata/firmware/radeon/oland_smc.bin 156 /libdata/firmware/radeon/pitcairn_ce.bin 157 /libdata/firmware/radeon/pitcairn_mc.bin 158 /libdata/firmware/radeon/pitcairn_me.bin 159 /libdata/firmware/radeon/pitcairn_pfp.bin 160 /libdata/firmware/radeon/pitcairn_rlc.bin 161 /libdata/firmware/radeon/pitcairn_smc.bin 162 /libdata/firmware/radeon/tahiti_ce.bin 163 /libdata/firmware/radeon/tahiti_mc.bin 164 /libdata/firmware/radeon/tahiti_me.bin 165 /libdata/firmware/radeon/tahiti_pfp.bin 166 /libdata/firmware/radeon/tahiti_rlc.bin 167 /libdata/firmware/radeon/tahiti_smc.bin 168 /libdata/firmware/radeon/verde_ce.bin 169 /libdata/firmware/radeon/verde_mc.bin 170 /libdata/firmware/radeon/verde_me.bin 171 /libdata/firmware/radeon/verde_pfp.bin 172 /libdata/firmware/radeon/verde_rlc.bin 173 /libdata/firmware/radeon/verde_smc.bin 174 175 We will re-import these radeon firmware images another way 176 later. 177 17820190727: 179 The uefi bootloader has gained tftp support and needs a clean 180 build. If you do update builds, manually clean its object 181 directory by something like: 182 cd sys/arch/i386/stand/efiboot && make clean 183 18420190723: 185 The jemalloc allocator in libc is now build without extended 186 debugging (for performance reasons). In update builds make sure 187 to rebuild it completly, by removing all affected object files, 188 including compat builds, something like: 189 cd /usr/obj && find . -type d -name jemalloc|xargs rm -rf 190 19120190207: 192 GCC 7 switched for many ports. Update builds are likely to fail. 193 19420180924: 195 A newer OpenSSL version has been imported. If you are doing 196 update builds, make sure to remove all old obj dirs, like: 197 cd /usr/obj && find . -type d -name openssl | xargs rm -rf 198 19920180717: 200 On aarch64 int64_t and related types have changed from long long 201 to long. This requires recompiling all C++ binaries. 202 20320180713: 204 On amd64 and i386 static binaries are now build position 205 independend. This requires recompilation of all object 206 files used to create the crunched /rescue binary. 207 Clean the rescue directory in your obj directory before 208 doing an update build, otherwise linking will fail. 209 21020180414: 211 Existing binutils was migrated to binutils.old. Manual 212 removal of tools/binutils objects directory may be required 213 to fix tools build failure. 214 21520180311: 216 bdftopcf was updated and may need cleaning in the 217 src/external/mit/xorg/tools/bdftopcf subdirectory if there are 218 link errors. 219 22020180212: 221 between OpenSSL and GCC updates, many things may fail to build. 222 any failure that looks like GCC or openssl is best handled by 223 a clean destdir and objdir. Full cleandir and destdir deletion 224 is recommended if build failures occur. 225 22620171225: 227 removal of the vadvise syscall requires manual removal of all 228 associated files from the libc build object directory (including 229 the .depend files) - a command like: 230 cd $OBJ && find . -type d -name libc | xargs rm -rf 231 For architectures that support multiple "compat" binary targets, 232 you'll need to cleanup both the regular libc directory and the 233 compat ones (the above command will do that). 234 23520171010: 236 a change to the build structure of external/bsd/acpica/bin/iasl 237 means that its objdir (or *.d and .depend at least) might need 238 to be manually removed - or a build done once without -u. 239 24020170822: 241 a new version of GMP has been imported and probably 242 will break parts of builds related to themselves or GCC, both 243 in the tools and the native section. Remove all GCC, GMP, MPFR 244 and MPC objdirs or build once without -u. 245 24620170816: 247 a new version of MPFR and MPC have been imported and probably 248 will break parts of builds related to themselves or GCC, both 249 in the tools and the native section. Remove all GCC, GMP, MPFR 250 and MPC objdirs or build once without -u. 251 25220170402: 253 a new version of dhcpcd has been imported, which does not support 254 update builds from the previous version. Remove your 255 external/bsd/dhcpcd object dir or build once without -u. 256 25720170211: 258 a new terminfo database has been imported. 259 The structure of it has changed slightly from prior versions and 260 an updated tic tool is required. 261 If you build.sh, don't use -u 262 26320170207: 264 various arch dependent libc/exect.S files were removed 265 Either remove the obj directories (lib/libc and compat/amd64/i386/lib 266 if it exists) or do a clean build. 267 (This is a bug in the make system, it should be corrected without 268 human intervention, but isn't.) 269 27020170104: 271 xinput build options have changed. 272 Remove the obj directory (external/mit/xorg/bin/xinput) 273 if you build.sh -u 274 27520170103: 276 a new version of flex has been imported. 277 Remove the file from obj (external/bsd/flex) 278 if you build.sh -u 279 28020161014: 281 a new version of OpenSSL has been imported. 282 Remove the files from obj (crypto/external/bsd/openssl) 283 if you build.sh -u 284 28520161009: 286 a new version of dhcpcd has been imported with slightly changed 287 build infrastructure. When doing a build.sh -u this requires 288 pruning the external/bsd/dhcpcd objdir. 289 29020160914: 291 i386, amd64, shark, ofppc and macppc have joined shark and x68k 292 ports in using xorg-server 1.18. This requires a clean destdir 293 and a clean objdir. 294 29520160527: 296 i386 needs a full cleandir or objdir deletion because PIE has 297 been enabled. (see the amd64 entry two down for further info) 298 29920160418: 300 libedit needs manual removal of all autogenerated files since 301 some of them are not autogenerated anymore. Remember that there 302 might be two copies of libedit if your platform builds "compat". 303 30420160410: 305 amd64 needs full "make cleandir" or deletion of objdir now that 306 PIE has been enabled for amd64. PIE, or position-independent 307 executables, means all code, including executables and not just 308 shared libraries, is position-independent and hence able to be 309 relocated by ASLR, address space layout randomization. 310 311 The change was made in Makefile variables for compiler and 312 linker flags, for which make(1) does not record dependencies, 313 hence it is unable to detect that all .o files need rebuilding. 314 315 Partial rebuilds with some modified source files will likely 316 fail when linking executables, since the linker refuses to mix 317 position-independent code with position-dependent code in 318 position-independent executables: 319 320 .../x86_64--netbsd/bin/ld: foo.o: relocation R_X86_64_32 against `...' cannot be used when making a shared object; recompile with -fPIC 321 32220160401: 323 Ports switching to GCC 5.3 will need a full "make cleandir". 324 Some people have found that cleandir is not sufficient, so if 325 in doubt delete the entire object directory tree for gcc. 326 32720160306: 328 NetBSD's regexp implementation is now part of libnbcompat. 329 Nblex, nbm4, nbpax, nbsed use it and they may crash on 330 non-NetBSD hosts if linked with stale object files produced 331 while they included a non-NetBSD regex.h. 332 In any case, you should "make cleandir" at least these tools 333 before updating your toolchain. 334 33520160125: 336 Dtrace has been enabled by default on some architectures. 337 When doing an update build, make sure to clean the etc/mtree 338 object directory before starting the build - otherwise the 339 needed directories in destdir will not be created. 340 An easy way to do this is: 341 cd src/etc/mtree && $TOOLDIR/bin/nbmake-$arch cleandir 342 34320150818: 344 New acpica requires "make cleandir" in src/external/bsd/acpica 345 again. 346 34720150413: 348 New acpica requires "make cleandir" and reinstalling yacc 349 in /usr/src/external/bsd/byacc and /usr/src/tools/yacc and 350 also "make cleandir" in /usr/src/external/bsd/acpica. 351 35220150404: 353 Lint changes require a full rebuild of the tool, so make 354 sure to build without -u option to build.sh, or manually 355 do a make cleandir in src/tools/lint1 and 356 src/usr.bin/xlint. 357 35820150310: 359 Improvements to openssl for arm mean that update builds of 360 the openssl libraries will fail. A make cleandir in 361 external/bsd/openssl/lib is needed 362 36320141026: 364 A mishap during the import of pppd may cause your corruption 365 in your cvs directory if you happened to do a cvs update 366 during a short period of time. To fix, just remove the 367 directory src/external/bsd/ppp/dist/pppd completely 368 and let cvs restore it on next update. 369 37020140721: 371 The src/external/mit/lua/src directory was accidentally created 372 and then deleted in the CVS repository. If you get errors like 373 374 cvs [update aborted]: cannot open directory 375 /cvsroot/src/external/mit/lua/src: No such file or directory 376 377 then delete your local copy of that directory tree and try again. 378 37920140530: 380 ARM eABI switched to DWARF based exception handling. This requires 381 rebuilding all C++ code. It is strongly advised to do a clean build. 382 38320140131: 384 The new compiler_rt/libc integration moved a few things. It is strongly 385 advised to do a clean build. At least lib/libc, the compat version(s) 386 of libc, libkern, rump and the kernels need to be cleaned. 387 38820131227: 389 1. The new ntpd runs in a restricted mode to prevent amplification 390 attacks. If you need ntpdc to work you need to explicitly enable 391 mode7 in your config file. Make sure you put the necessary restrict 392 statements to avoid being exposed. 393 2. strncat has moved from lib/libc to common/lib/libc; you might need 394 to make clean in libc 395 39620131129: 397 The GMP sources were updated, and builds will likely fail without 398 cleaning their build trees for both tools and in-tree, like below. 399 40020131128: 401 The MPC and MPFR sources were updated, and builds may require their 402 tools and in-tree directories cleaned for successful updates. 403 40420130605: 405 The kernel option FAST_IPSEC no longer exists, it's been renamed 406 to IPSEC (and the older IPSEC version removed). 407 40820130605: 409 Previous freetype installations erroneously installed private 410 header files. If you are building against a non-empty $DESTDIR, 411 please remove ${DESTDIR}//usr/X11R7/include/freetype2/freetype/. 412 41320130531: 414 The xdm update may cause build failure due to xdm.man being 415 in the obj tree. Make sure to ensure any like this: 416 nbmake: nbmake: don't know how to make xdm.man. Stop 417 is fixed by deleting the xdm.man in the obj tree. 418 41920130530: 420 Updates of many xsrc packages will leave old .pc files around. 421 Best to clean out the xsrc objdir entirely before rebuilds. 422 42320130301: 424 The removal of netiso requires manual removal of /usr/include/netiso 425 prior to the build and make cleandir in /usr/src/usr.bin/{ktruss,kdump} 426 42720120726: 428 The update of OpenSSL requires cleaning both the OpenSSL build 429 directory and DESTDIR. *Even non-update builds require cleaning 430 DESTDIR.* Builds done without taking these steps may fail, or in 431 some cases may succeed and install broken OpenSSL libraries that 432 cause third-party software to link incorrectly and/or crash. 433 43420120507: 435 The database schema for makemandb was changed. You will 436 need to update the database using 'makemandb -f' or wait 437 for the next weekly run to fix it. 438 43920120319: 440 sys/conf/Makefile.kern.inc has been modified to adjust the 441 size of db_symtab automatically. You need to update dbsym in 442 your $TOOLDIR to build kernels with options SYMTAB_SPACE. If 443 you don't want this behavior, add AUTO_SYMTAB_SPACE=no to your 444 mk.conf. 445 44620120216: 447 Default for MKCATPAGES changed to NO. Update builds will fail 448 unless DESTDIR is cleaned manually. If you built between 20120207 449 and 20120216, daily and weekly could have created an unreadable 450 /var/db/man.db index for apropos. Running makemandb -f or 451 the next run of weekly will fix it. 452 45320111227: 454 If you built between 20111225 and 20111227 you need to remove 455 /usr/lib/libpam.so.4* and /usr/lib/security/*.so.4, since the 456 bump has been reverted. 457 45820111125: 459 The "rnd" pseudodevice has been added to sys/conf/std, which 460 means it should no longer be explicitly listed in kernel 461 configuration files. The line "pseudo-device rnd" should be 462 removed from any custom kernel config files users may have. 463 46420111119: 465 A problem with the datastructures used by the rndctl(8) 466 utility (pointers in datastructures in an array, making 32->64 467 bit compatibility very painful) has been fixed in a 468 non-backwards-compatible way. If you replace your kernel, 469 replace your rndctl executable too. 470 47120111001: 472 the prop_*_send_syscall() functions from proplib(3) have been 473 changed and their new version is not backward compatible with the old 474 one. So ensure that all consumers of these functions (currently: 475 quota2 code and its tests) are updated together with the new lib. 476 47720110817: 478 sparc has been changed to use GCC 4.5.3, so any objdir or 479 DESTDIR for them should be deleted before updating. 480 48120110806: 482 i386 and amd64 have been changed to use GCC 4.5.3, so any 483 objdir or DESTDIR for them should be deleted before updating. 484 48520110805: 486 The update to GCC 4.5.3 requires a non-trivial portion of 487 the tree to be cleaned. Best to delete both objdir and 488 DESTDIR before running this update. So far, only the 489 sparc64, mips and powerpc platforms have changed. 490 49120110803: 492 The layout of external/public-domain/xz has changed. To do an 493 update build you will have to remove the contents of the OBJDIR 494 for external/public-domain/xz/bin by hand as the xz entry there 495 is now a directory. 496 49720110410: 498 The configuration of src/tools/gcc has changed. To do an 499 update build you have to clean both tools/binutils and 500 tools/gcc by hand. 501 50220110328: 503 Building the Xorg binary was moved into a subdirectory to fix 504 ordering issues with "make all". It may be necessary to remove 505 the OBJDIR for external/mit/xorg/server/xorg-server/hw/xfree86 506 if your update build fails, as the "Xorg" entry there is now a 507 directory. 508 50920110121: 510 Assembler files no longer use -traditional-cpp. This can break 511 the build of individual parts of the tree. This is handled 512 correctly by build.sh. Manual builds have to update /usr/share/mk 513 and re-run config(1) for any kernel configurations as needed. 514 51520101217: 516 The tcpdump(8) program was changed to drop privileges and chroot(2) 517 by default. It may be necessary to manually update passwd(5) and 518 group(5) in order to make the program work with existing setups. 519 52020101125: 521 The latest changes to setenv(3) dissallow setting environment 522 variables with names that contain '='. Revision 1.18 of env.c 523 assumed that this was allowed. Installing a new libc with an 524 old copy of /usr/bin/env causes env x=1 printenv | grep x= to 525 break which affects the autoconf tests for dependency finding, 526 so building gcc will end up printing: 527 checking dependency style of gcc... none 528 configure: error: no usable dependency style found 529 Fix it by rebuilding and re-installing env. 530 53120101119: 532 Recent Xorg updates in xsrc/external/mit/ may cause various build 533 or run-time problems. Delete your entire DESTDIR and OBJDIR if you 534 have any build problems with xsrc, or problems with mismatched 535 versions between xorg-server and drivers. 536 53720100604: 538 The update of ATF to 0.9 causes old tests written in shell to fail 539 unless they are rebuilt. If you are building with MKUPDATE=yes, 540 you need to clean the src/external/bsd/atf/tests/ and the src/tests/ 541 trees by hand. 542 54320100522: 544 Recent Xorg updates in xsrc/external/mit/ will cause various build 545 problems. Delete your entire DESTDIR and OBJDIR if you have any 546 build problems with xsrc. 547 54820100522: 549 private section of <ctype.h> was split, and now mklocale(1) 550 include ctype_local.h, so you have to make cleandir in tools/mklocale. 551 55220100520: 553 The location of the xkb compiled descriptions has changed. Please 554 remove usr/X11R7/lib/X11/xkb/compiled from your $DESTDIR. 555 55620100222: 557 The shared objects file extension has been changed from .so to 558 .pico, in order to avoid conflicts with shared libraries names 559 libXX.so. All now stale regular .so files can be removed from 560 your object directories. 561 56220100204: 563 The termcap database has been removed from the sources, 564 but has not been marked obsolete so it is not removed 565 from the system when upgrading. 566 As such, you will need to remove them from your object 567 and destination directories. 568 56920091101: 570 After updating, it may be necessary to make the 'cleandir' 571 target in src/tools/yacc/ and in src/usr.bin/yacc/ before a 572 'build.sh -u tools' or 'build.sh -u distribution'. Ditto 573 src/tools/lex/ and src/usr.bin/lex/. 574 57520091001: 576 On amd64 you must rebuild tools (to get the new binutils) 577 before building a kernel, or the build fails on cpufunc.S. 578 57920091001: 580 An error will create a ./usr/X11R7/lib/X11/xkb/compiled/xkb 581 symlink, failing the build. Delete the link, and the subdir 582 it is in, and retry your build. 583 58420090718: 585 libc build changed so that strchr() provides the extra entry 586 point for index(). Update build of libc.a (and libc_pic.a) 587 may fail because the archive contains the unwanted index.o. 588 (Similarly for strrchr() and rindex().) 589 59020090709: 591 Native Xorg was upgraded again. Builds will probably fail again 592 without a clean objdir, at least for src/external/mit/xorg. 593 59420090616: 595 Native Xorg was upgraded. Builds will need a clean objdir for 596 src/external/mit/xorg. Upgrading a system from sets will not 597 work properly yet as the /usr/X11R7/lib/X11/xkb/symbols/pc 598 subdirectory has been changed into a file, and this needs to 599 be manually "rm -r"'ed before installing xbase.tgz. 600 60120090501: 602 Several new functions were added to string.h/libc, and this 603 can cause autoconf problems during the tool build for people 604 who fail to clean out their tools objects properly. If you 605 note messages about stpcpy, stpncpy or strnlen accompanying a 606 failure during the tool build, clean out all your tools 607 objects and start again. 608 60920090325: 610 The i386 port was switched to i486 default toolchain. This requires 611 cleaning your src/tools directory and $TOOLDIR and rebuilding them. 612 61320090126: 614 The __posix_fadvise50 system call changed assembly stub type. You 615 need to 'rm -f __posix_fadvise50.*' in the libc build directory 616 to avoid using the old assembly stub. 617 61820090202: 619 pkg_install now depends on the pkgdb cache for automatic conflict 620 detection. It is recommended to rebuild the cache with 621 ``pkg_admin rebuild''. 622 62320090110: 624 time_t and dev_t have been bumped to 64 bit quantities. To upgrade: 625 1. Make sure your kernel has COMPAT_50 in it. Build and install. 626 This is needed even in the MODULAR kernel because there is 627 conditionally compiled code in rtsock.c. 628 2. make sure build.sh completes and the binaries in a chroot work 629 before installing. 630 3. If you don't use build.sh and you build directly to root, and 631 your build breaks in the middle, don't despair. Make sure headers 632 are installed properly, and start building libraries first libc 633 and libutil, install them and then continue building all the 634 libraries in src/lib and src/gnu/lib and install them. Once 635 the new libraries are installed, you can restart the build. 636 4. If you compile packages and you notice link time warnings, 637 rebuild the required packages to update their shared libraries. 638 Any package you rebuild will require rebuilding all the packages 639 that depend on it. 640 5. Next time you run pwd_mkdb with the new binary, the file 641 will be upgraded and it will not be backwards compatible. 642 6. The utmpx/wtmpx files (/var/run/utmpx and /var/log/wtmpx, see 643 lastlogx(5)) have been versioned, and there is a heuristic 644 for utmp. You are better off removing the old files after 645 upgrading. The automated clearing of /var/run during 646 boot, and the automated rotating of files in /var/log by 647 newsyslog(8), may mean that you do not have to remove the 648 files manually. 649 7. The optional accounting file (/var/account/acct, see 650 accton(8)) has not been versioned, and will need to be 651 removed. The automatic rotation of the accounting file by 652 /etc/daily limits the bad consequences of failure to remove 653 the file. 654 8. Application software that writes time_t to binary files on 655 disk will break or need attention. Most notably: if you are 656 using PostgreSQL < 8.4, you need to dump your databases, 657 rebuild PostgreSQL with the new time_t, then restore. 658 65920081219: 660 config(1) has been updated, and one of the files it creates - 661 swapnetbsd.o - has changed format. You need to rebuild config 662 (done automatically by build.sh) and then you need to rerun 663 config on all kernel configuration files before rebuilding those 664 kernels. 665 66620081205: 667 If you build with MKX11=no, you should remove /etc/rc.d/xdm and 668 /etc/rc.d/xfs from DESTDIR because those files were moved to the xetc 669 set and will appear as extra files for MKX11=no update builds. 670 67120081122: 672 On i386, various kernel options(4) in GENERIC including 673 file systems have been disabled and moved into kernel modules. 674 Before trying a new GENERIC kernel, you have to prepare the 675 following files as well as a new GENERIC kernel: 676 677 - build and install kernel modules from src/sys/modules 678 679 - install the latest bootloader, which will load a module 680 for the file system from which the kernel is loaded automatically 681 682 If you have to load your kernel from a file system which is not of 683 the same type as the root file system, you have to load the necessary 684 file system module manually on the boot prompt or in the boot.cfg file. 685 68620080827: 687 If you built and installed a libc from sources between 688 2008/08/20 and 2008/08/26 you got a broken strtouq(3) 689 which results in false errors reported by lint(1). 690 Since this breaks the libc build itself, manual help is 691 needed -- lint must be disabled temporarily, e.g.: 692 $ (cd lib/libc && make MKLINT=no dependall install) 693 69420080813: 695 MKDEBUG build was broken because the .depend files did not know 696 about .go files. You need to remove all .depend files and rebuild. 697 69820080802: 699 A regression in binary compatibility for pthread_mutex_t has 700 been fixed. Unfortunately, the price is breaking compatibility 701 for -current. 702 703 Threaded programs (using libpthread) and C++ programs (using 704 libstdc++) compiled after 20070907 and before 20080802 need to 705 be recompiled. 706 707 One way to find affected pkgsrc packages: 708 709 $ grep REQUIRES=/usr/lib/libpthread /var/db/pkg/*/+BUILD_INFO 710 $ grep REQUIRES=/usr/lib/libstdc++ /var/db/pkg/*/+BUILD_INFO 711 71220080731: 713 WAPBL (metadata journaling support) has been added, but at this 714 time isn't backwards compatible with pre-WAPBL aware kernels 715 and userland (fsck_ffs in particular). Please make sure you 716 don't use a journaled filesystem with an older kernel/userland, 717 especially an uncleanly mounted journaled filesystem. WAPBL 718 also requires the super block to be in the UFS2 format. You 719 can use fsck_ffs -c 4 to update the superblock format. 720 72120080721: 722 Assembler warnings are now fatal if $WARNS>0 and $NOGCCERROR 723 isn't defined. 724 72520080531: 726 The ioctl number of DRVSUSPENDDEV command on /dev/drvctl changed 727 from 125 (conflicted with DRVCTLCOMMAND) to 129. The drvctl(8) 728 utility needs to be rebuilt and reinstalled as older binaries 729 won't work correctly. The following sequence of commands: 730 731 $ (cd sys/sys/ && nbmake-$arch includes) 732 $ (cd sbin/drvctl/ && nbmake-$arch clean) 733 $ (cd sbin/drvctl/ && nbmake-$arch all) 734 735 leaves new drvctl utility in sbin/drvctl build directory. 736 73720080503: 738 The <bsd.lib.mk> variable MKPRIVATELIB was renamed to LIBISPRIVATE. 739 74020080521: 741 For a while, unprivileged UPDATE builds would fail to 742 succeed at the checkflist stage, complaining that 743 ${DESTDIR}/stand/<arch>/ did not exist. A fix for this 744 problem was committed to share/mk/bsd.kmodule.mk, revision 1.9. 745 If you already hit this problem, update the .mk file, 746 remove ${DESTDIR}/stand/<arch>, and re-run the build. 747 74820080303: 749 Linker warnings are now fatal if $WARNS>0. 750 75120080126: 752 The posix_fadvise system call has been changed from an assembly 753 stub, to a c file that calls an assembly stub. You need to 754 'rm -f posix_fadvise.* .depend' in the libc build directory to 755 avoid using the old assembly stub. 756 75720071209: 758 The acpiec(4) driver has been split into two attachments. If you 759 get ACPI errors before the attachment, please update your kernel 760 configuration file appropriately or see GENERIC for more details. 761 76220071115: 763 The it(4) driver has been renamed to itesio(4) and the old port 764 argument specified in the kernel configuration file is not valid 765 anymore. The itesio(4) driver now uses the Super I/O address port 766 rather than the EC address port. Please update your kernel 767 configuration file appropriately or see GENERIC for more details. 768 76920071028: 770 The pccons(4) driver has been removed from the NetBSD/shark port. 771 You need to update any custom kernel configuration file you have 772 to remove any references to pccons (which includes removing the 773 now useless XSERVER option) and replace them with the correct 774 entries for the wscons driver. See the GENERIC configuration file 775 for more details. 776 77720070913: 778 A latent bug in dhclient/dhcpd that caused it to be unable to 779 enumerate interfaces was fixed. The bug began to cause 780 problems after 20070911 when the kernel's SIOCGIFCONF 781 implementation was repaired. From 20070529 to 20070911 racoon 782 could not enumerate interfaces. (These are noted because 783 normal kernel/userspace version matching hygiene is not 784 sufficient to avoid this problem.) Ensure that both kernel 785 and userland are from after 20070913. 786 78720070703: 788 nbinstall has been renamed ${MACHINE_GNU_ARCH}-install. It 789 calls the target-specific strip program, and the logic to pass 790 down STRIP from make has been removed. This requires a 791 re-installation of tools. 792 79320070422: 794 The way OS emulations lookup filenames inside the emulation root 795 has been changed. Rather than modify the pathname (and copy back 796 to userspace) namei() and lookup() directly check the emulation 797 root. One side effect is that absolute symlinks inside the emulated 798 root file system will be relative to that file system - unless they 799 start /../ this is useful when the emulated root is a real install 800 that has such links. 801 This might affect symlinks that have been added to reference outside 802 the emulated root. 803 80420070412: 805 The pckbc driver on sgimips IP32 has been removed. Use macekbc 806 instead. See the GENERIC32_IP3x kernel configuration for an 807 example. 808 80920070319: 810 src/lib/libc/Makefile revision 1.129 broke libc and ld.elf_so 811 on many platforms due to incorrect flags settings. If you 812 updated and built after about 20070315, do "nbmake-$arch 813 cleandir" in src/lib/libc and src/libexec/ld.elf_so to force a 814 rebuild of object files that might have been built 815 incorrectly, and ensure that you have at least 816 src/lib/libc/Makefile 1.130. 817 81820070210: 819 src/sys/sys/{sa.h,savar.h} were removed. 820 find ${OBJDIR} \( -name .depend -o -name '*.d' \) -print \ 821 | xargs egrep -l '/sa.h|/savar.h' | xargs rm 822 will allow dependencies on those files to get get rebuilt 823 82420070209: 825 The threading model was changed when the newlock2 branch 826 was merged to NetBSD-current. If you boot with a new 827 kernel (version 4.99.10), then you also need a new pthread 828 library (/usr/lib/libpthread.so.0.7). If you boot with 829 an old kernel, then you need the old pthread library 830 (/usr/lib/libpthread.so.0.6). Provided you keep the kernel and 831 the pthread library in sync, old threaded applications should 832 continue to work with an old or new kernel. Note that named(8) 833 is the only threaded application in the base system. 834 83520061214: 836 Following the move of string_to_flags() and flags_to_string() 837 from the bin/ls/ sources to libutil, users doing UPDATE builds 838 will need to do a "make cleandir" in 839 tools/mtree/, tools/makefs/, tools/binstall/, tools/pax/, 840 bin/pax/, bin/ls/, usr.sbin/mtree/, usr.sbin/makefs/, 841 usr.bin/xinstall/, libexec/ftpd/, rescue/, as well 842 as the installation images in distrib/ 843 in order to excise stale references to the old stat_flags.h header 844 file in the ls sources -- stat_flags.h has been removed. 845 84620061108: 847 The configure script used in the src/tools/gcc compiler has been 848 changed to indicate that our libc has ssp support built-in and 849 does not depend on -lssp and -lssp-nonshared. You'll need to 850 make clean in src/tools/gcc first to rebuild the compiler. 851 85220061009: 853 The sysctl variables net.inet{,6}.tcp{,6}.newreno are no longer 854 available. Use net.inet{,6}.tcp{,6}.congctl.selected instead. 855 85620060814: 857 The vt, vidcconsole, kbd, and rpckbd drivers on acorn32 have been 858 withdrawn. Use vidcvideo and pckbd instead. See the GENERIC 859 kernel configuration for an example. X servers from the last 860 few years should cope. 861 86220060703: 863 MPACPI is no more. We always configure PCI interrupts using ACPI 864 if we have an ACPI kernel. The option MPACPI_SCANPCI has been renamed 865 to ACPI_SCANPCI. Thanks to work from fvdl. 866 86720060627: 868 socket(2) has changed, and its system call has been versioned. 869 For userlands with the old version of socket(2), make sure that 870 your kernel has 'options COMPAT_30' set, or else 'bad system call' 871 errors will result. 872 873Hints for a more successful build: 874^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 875 Use build.sh, but do not use its "expert mode": 876 This will automatically build the tools in the 877 correct order, and it will keep the tools and the 878 new build products from interfering with the running 879 system. This will allow you to ignore most of the 880 other advice in this file. 881 Build a new kernel first: 882 This makes sure that any new system calls or features 883 expected by the new userland will be present. This 884 helps to avoid critical errors when upgrading. 885 Use object directories: 886 This helps to keep stale object 887 files from polluting the build if a Makefile "forgets" 888 about one. It also makes it easier to clean up after 889 a build. It's also necessary if you want to use the 890 same source tree for multiple machines. 891 To use object directories with build.sh: 892 a) invoke build.sh with the "-M" or "-O" options. 893 To use object directories without using build.sh: 894 a) cd /usr/src ; make cleandir 895 b) Add "OBJMACHINE=yes" to /etc/mk.conf 896 c) Add "MKOBJDIRS=yes" to /etc/mk.conf 897 d) cd /usr/src ; make build 898 Note that running "make obj" in a directory will create 899 in obj.$MACHINE directory. 900 Build to a DESTDIR: 901 This helps to keep old installed files (especially libraries) 902 from interfering with the new build. 903 To build to a DESTDIR with build.sh, use the "-D" option. 904 To build to a DESTDIR without using build.sh, set the DESTDIR 905 environment variable before running make build. It should be 906 set to the pathname of an initially empty directory. 907 Problems: if you do not use build.sh, you might need to 908 update critical utilities without using DESTDIR since 909 nothing is executed from what is installed in DESTDIR. 910 (See critical utils, below.) 911 Build often: 912 This keeps critical utilities current enough to not choke 913 on any other part of the source tree that depends on up to 914 date functionality. If you use build.sh, you should not have 915 this problem. 916 917What to do if things don't work: 918^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 919When things don't work there are usually a few things that commonly 920should be done. 921 1) make includes 922 This should be done automatically by make build. 923 2) cd share/mk && make install 924 Again, automatically done by make build. 925 926Failsafe rebuild of a small part of the tree: 927^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 928To make sure you rebuild something correctly you want to do 929something like the following: 930 1) Make sure the includes and .mk files are up to date. 931 2) Make sure any program used to build the particular 932 utility is up to date. (yacc, lex, etc...) 933 3) cd ...path/to/util... 934 make cleandir 935 rm ...all obj directories... 936 make cleandir # yes, again 937 make obj 938 make depend && make 939 940Failsafe rebuild of the entire tree: 941^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 942If you really want to make sure the source tree is clean and 943ready for a build try the following. Note that sourcing /etc/mk.conf 944(a make(1) Makefile) in this manner is not right, and will not work 945for anyone who uses any make(1) features in /etc/mk.conf. 946 947---cut here--- 948#!/bin/sh 949. /etc/mk.conf 950 951if [ -z $NETBSDSRCDIR ] ; then 952 NETBSDSRCDIR=/usr/src 953fi 954if [ \! -d $NETBSDSRCDIR ] ; then 955 echo Unable to find sources 956 exit 1 957fi 958find $NETBSDSRCDIR -name \*.o -o -name obj.\* -o -name obj -exec rm \{\} \; 959 960if [ -z $BSDOBJDIR ] ; then 961 BSDOBJDIR=/usr/obj 962fi 963if [ -d $BSDOBJDIR ] ; then 964 rm -rf $BSDOBJDIR 965fi 966 967cd $NETBSDSRCDIR && make cleandir 968 969---cut here--- 970 971Critical utilities: 972^^^^^^^^^^^^^^^^^^^ 973 usr.bin/compile_et 974 usr.bin/make 975 usr.bin/yacc 976 usr.bin/lex 977 usr.bin/xlint 978 usr.bin/config 979 980Other problems and possible solutions: 981^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 982Symptom:Complaints involving a Makefile. 983Fix: Rebuild usr.bin/make: 984 cd usr.bin/make && make && make install 985 Or, a failsafe method if that doesn't work: 986 cd usr.bin/make && cc *.c */*.c -I . -o make && mv make /usr/bin 987 988Fix: Make sure .mk files are up to date. 989 cd share/mk && make install 990 991Symptom:Kernel `config' fails to configure any kernel, including GENERIC. 992Fix: Rebuild usr.bin/config 993 994Symptom: 995Fix: Rebuild usr.bin/yacc 996 997Symptom: 998Fix: Rebuild usr.bin/lex 999 1000Symptom: 1001Fix: rm /usr/lib/libbfd.a 1002 1003Symptom:Obsolete intermediate files are used during compilation 1004Fix: Try the following sequence of commands in the directory in question. 1005 make cleandir; rm `make print-objdir`; make cleandir; make obj 1006 (If you built the tree without "make obj" in the past, obsolete files 1007 may remain. The command tries to clean everything up) 1008 1009Symptom:.../sysinst/run.c:xx: warning: initialization from incompatible 1010 pointer type 1011Fix: Rebuild and install usr.bin/menuc 1012 1013Symptom:mklocale not found during build in share/locale/ctype 1014Fix: Build and install usr.bin/mklocale 1015 1016Symptom:undefined reference to `__assert13' or `__unsetenv13' 1017Fix: Rebuild and install lib/libc 1018 1019Symptom:usr.bin/config fails to build. 1020Fix: Try building with -DMAKE_BOOTSTRAP added to CFLAGS in Makefile. 1021 1022Symptom:undefined reference to `getprogname' or `setprogname' 1023Fix: Rebuild and install lib/libc 1024 1025Symptom:lint does not understand the '-X' option 1026Fix: May need to build & install libs with NOLINT=1 before rebuilding lint 1027 1028Symptom:Update build fails in src/tools/gcc complaining that a variable 1029 (e.g. CPPFLAGS) has changed since the previous run. 1030Fix: Run "nbmake-${ARCH} clean" in src/tools/gcc or do a clean build. 1031 1032Symptom:cvs [update aborted]: cannot open directory /cvsroot/src/...: 1033 No such file or directory. 1034Cause: If a directory is created by mistake, then it is sometimes 1035 deleted from the CVS repository using administrative commands 1036 that bypass the normal cvs access controls. If your cvs working tree 1037 contains references to a directory that has been deleted on the 1038 server in this way, then "cvs update" reports this error. 1039Fix: Recursively delete the affected directory from your working tree 1040 and try the update again. 1041