1$NetBSD: UPDATING,v 1.333 2022/10/08 08:21:56 riastradh 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 2220220921: 23 Since the kernel version was bumped to 9.99.100, the bootloader 24 must be updated on x86 or EFI boot platforms in order to load 25 modules from boot.cfg(5) or interactively at the bootloader 26 prompt. 27 28 The kernel can still load modules at runtime, with modload(8) 29 or modules.conf(5), with no bootloader update. This will not 30 affect release branches because it only applies to patch 31 numbers >=100. 32 33 On x86 (i386 or amd64) with BIOS boot, this requires copying a 34 new /usr/mdec/boot to /boot. You can build this in the destdir 35 by running `$TOOLDIR/bin/nbmake-$ARCH dependall install' in 36 sys/arch/i386/stand. 37 38 On platforms with EFI boot (including x86 with EFI boot), this 39 requires copying a new /usr/mdec/boot*.efi to the EFI/BOOT/ 40 directory on the EFI system partition. The boot*.efi file is: 41 42 aarch64 bootaa64.efi 43 amd64 bootx64.efi 44 arm bootarm.efi (32-bit arm) 45 i386 bootx32.efi 46 47 You can build this in the destdir by running 48 `$TOOLDIR/bin/nbmake-$ARCH dependall install' in 49 sys/stand/efiboot/boot*. 50 5120220821: 52 Support for building extsrc/ has been deprecated. 53 EXTSRCSRCDIR and MKEXTSRC have been deprecated. 54 5520220714: 56 Updates to xorg-server and associated drivers may cause builds to 57 fail. Cleaning both DESTDIR and the xorg build tree may be needed. 58 5920220628: 60 Changes in the build of src/games/robots require a clean build 61 of that program. 62 6320211116: 64 Changes in the xorg build require clean obj dirs for external/mit/xorg 65 (or a full clean/non-update build). 66 6720211112: 68 Device tree sources were updated for evbarm. Some device nodes 69 (in particular, ld(4) devices on the ROCKPro64) will be renumbered. 70 7120211014: 72 MKPIE default for aarch64 has changed, a clean build is required. 73 7420210917: 75 Changed MNT_ACLS to default to POSIX1e ACLs instead of NFSv4 76 ACLs, to be compatible with FreeBSD. If you are using NFSv4 ACLs 77 and have "acls" in /etc/fstab you'll need to change it to "nfs4acls". 78 7920210711: 80 Updated GMP sources may require cleaning in tools/gmp and/or in 81 external/lgpl3/gmp/lib, particularly if GCC itself does not build. 82 8320210417: 84 GCC 10 was enabled for several platforms. If builds fail in either 85 tools/gcc or external/gpl/gcc, first try cleaning those objects and 86 removing the $DESTDIR/usr/include/g++ subdirectory. 87 8820201230: 89 lint1/ops.c is no longer autogenerated. If this makes the build 90 fail, clean $OBJDIR/tools/*lint* and $OBJDIR/usr.bin/*xlint*. 91 9220201016: 93 MIPS kernel modules have been disabled until they work. This will 94 turn up in extra files in the DESTDIR, which should be cleaned. 95 9620200925: 97 GNU MPC and MPFR have been updated. At least MPFR needs cleaning 98 in both the tools and external dirs. 99 10020200912: 101 GCC 9 has arrived for Arm and x86 platforms, and will be coming 102 for several more, as will binutils 2.34. Clean as required. 103 10420200907: 105 GCC 9 is coming, and binutils has been updated for MIPS. This 106 probably requires cleaning the tools/binutils. 107 10820200811: 109 GCC updates may require cleaning the objdir. This may occur 110 due to GCC 7.5 update, GCC 8.4 move to gcc.old, or the upcoming 111 GCC 9 upgrade. 112 11320200614: 114 blacklist* has been renamed to blocklist*. postinstall(8) 115 should handle the migration. 116 11720200601: 118 Due to a mistake in LIBISPRIVATE handling, .so libraries were 119 created in the build directories and need cleaning. 120 12120200311: 122 GCC 8 ports will need cleaning in src/tools/gcc and 123 src/external/gpl3/gcc due to GCC 8.4 update. 124 12520191118: 126 More architectures were switched to gcc8: 127 i386, ia64 powerpc64, sparc, sparc64, arm 128 The same comments as in 20191022 apply. 129 13020191112: 131 The LLVM update requires a clean rebuild for all architectures using 132 LLVM during the tools build phase (i386, amd64, aarch64). 133 13420191022: 135 Ports amd64 and aarch64 switched to GCC 8.3 by default. 136 In-place ("expert mode", build.sh -E) builds are not supported 137 when going from a GCC 7 userland to GCC 8. Do a regular 138 build to a different DESTDIR (or preferably: build.sh -U) at least 139 once and install sets, or download comp.{tar.xz,tgz} from the 140 daily builds and install that before doing the next in-place build. 141 14220191001: 143 GCC 8.3 was imported. Builds of src/tools/gcc may fail if 144 old builds with GCC 7 output now uses GCC 8. Clean this 145 directory, and also clean src/external/gpl3/gcc. 146 14720190903: 148 Files with names that coincide with existing files' names on 149 case-insensitive file systems were inadvertently committed, for 150 radeon GPU firmware. We cannot mark these as obsolete for 151 postinstall to fix, so if you updated src since 2019-08-26, and 152 ran build.sh distribution or ran build.sh release, you must 153 manually delete the following files in your DESTDIR (which is 154 usually $OBJDIR/destir.$ARCH), or from / if you have installed 155 them: 156 157 /libdata/firmware/radeon/bonaire_ce.bin 158 /libdata/firmware/radeon/bonaire_mc.bin 159 /libdata/firmware/radeon/bonaire_me.bin 160 /libdata/firmware/radeon/bonaire_mec.bin 161 /libdata/firmware/radeon/bonaire_pfp.bin 162 /libdata/firmware/radeon/bonaire_rlc.bin 163 /libdata/firmware/radeon/bonaire_sdma.bin 164 /libdata/firmware/radeon/bonaire_smc.bin 165 /libdata/firmware/radeon/bonaire_uvd.bin 166 /libdata/firmware/radeon/hainan_ce.bin 167 /libdata/firmware/radeon/hainan_mc.bin 168 /libdata/firmware/radeon/hainan_me.bin 169 /libdata/firmware/radeon/hainan_pfp.bin 170 /libdata/firmware/radeon/hainan_rlc.bin 171 /libdata/firmware/radeon/hainan_smc.bin 172 /libdata/firmware/radeon/hawaii_ce.bin 173 /libdata/firmware/radeon/hawaii_mc.bin 174 /libdata/firmware/radeon/hawaii_me.bin 175 /libdata/firmware/radeon/hawaii_mec.bin 176 /libdata/firmware/radeon/hawaii_pfp.bin 177 /libdata/firmware/radeon/hawaii_rlc.bin 178 /libdata/firmware/radeon/hawaii_sdma.bin 179 /libdata/firmware/radeon/hawaii_smc.bin 180 /libdata/firmware/radeon/kabini_ce.bin 181 /libdata/firmware/radeon/kabini_me.bin 182 /libdata/firmware/radeon/kabini_mec.bin 183 /libdata/firmware/radeon/kabini_pfp.bin 184 /libdata/firmware/radeon/kabini_rlc.bin 185 /libdata/firmware/radeon/kabini_sdma.bin 186 /libdata/firmware/radeon/kaveri_ce.bin 187 /libdata/firmware/radeon/kaveri_me.bin 188 /libdata/firmware/radeon/kaveri_mec.bin 189 /libdata/firmware/radeon/kaveri_mec2.bin 190 /libdata/firmware/radeon/kaveri_pfp.bin 191 /libdata/firmware/radeon/kaveri_rlc.bin 192 /libdata/firmware/radeon/kaveri_sdma.bin 193 /libdata/firmware/radeon/mullins_ce.bin 194 /libdata/firmware/radeon/mullins_me.bin 195 /libdata/firmware/radeon/mullins_mec.bin 196 /libdata/firmware/radeon/mullins_pfp.bin 197 /libdata/firmware/radeon/mullins_rlc.bin 198 /libdata/firmware/radeon/mullins_sdma.bin 199 /libdata/firmware/radeon/oland_ce.bin 200 /libdata/firmware/radeon/oland_mc.bin 201 /libdata/firmware/radeon/oland_me.bin 202 /libdata/firmware/radeon/oland_pfp.bin 203 /libdata/firmware/radeon/oland_rlc.bin 204 /libdata/firmware/radeon/oland_smc.bin 205 /libdata/firmware/radeon/pitcairn_ce.bin 206 /libdata/firmware/radeon/pitcairn_mc.bin 207 /libdata/firmware/radeon/pitcairn_me.bin 208 /libdata/firmware/radeon/pitcairn_pfp.bin 209 /libdata/firmware/radeon/pitcairn_rlc.bin 210 /libdata/firmware/radeon/pitcairn_smc.bin 211 /libdata/firmware/radeon/tahiti_ce.bin 212 /libdata/firmware/radeon/tahiti_mc.bin 213 /libdata/firmware/radeon/tahiti_me.bin 214 /libdata/firmware/radeon/tahiti_pfp.bin 215 /libdata/firmware/radeon/tahiti_rlc.bin 216 /libdata/firmware/radeon/tahiti_smc.bin 217 /libdata/firmware/radeon/verde_ce.bin 218 /libdata/firmware/radeon/verde_mc.bin 219 /libdata/firmware/radeon/verde_me.bin 220 /libdata/firmware/radeon/verde_pfp.bin 221 /libdata/firmware/radeon/verde_rlc.bin 222 /libdata/firmware/radeon/verde_smc.bin 223 224 We will re-import these radeon firmware images another way 225 later. 226 22720190727: 228 The uefi bootloader has gained tftp support and needs a clean 229 build. If you do update builds, manually clean its object 230 directory by something like: 231 cd sys/arch/i386/stand/efiboot && make clean 232 23320190723: 234 The jemalloc allocator in libc is now build without extended 235 debugging (for performance reasons). In update builds make sure 236 to rebuild it completely, by removing all affected object files, 237 including compat builds, something like: 238 cd /usr/obj && find . -type d -name jemalloc|xargs rm -rf 239 24020190207: 241 GCC 7 switched for many ports. Update builds are likely to fail. 242 24320180924: 244 A newer OpenSSL version has been imported. If you are doing 245 update builds, make sure to remove all old obj dirs, like: 246 cd /usr/obj && find . -type d -name openssl | xargs rm -rf 247 24820180717: 249 On aarch64 int64_t and related types have changed from long long 250 to long. This requires recompiling all C++ binaries. 251 25220180713: 253 On amd64 and i386 static binaries are now build position 254 independend. This requires recompilation of all object 255 files used to create the crunched /rescue binary. 256 Clean the rescue directory in your obj directory before 257 doing an update build, otherwise linking will fail. 258 25920180414: 260 Existing binutils was migrated to binutils.old. Manual 261 removal of tools/binutils objects directory may be required 262 to fix tools build failure. 263 26420180311: 265 bdftopcf was updated and may need cleaning in the 266 src/external/mit/xorg/tools/bdftopcf subdirectory if there are 267 link errors. 268 26920180212: 270 between OpenSSL and GCC updates, many things may fail to build. 271 any failure that looks like GCC or openssl is best handled by 272 a clean destdir and objdir. Full cleandir and destdir deletion 273 is recommended if build failures occur. 274 27520171225: 276 removal of the vadvise syscall requires manual removal of all 277 associated files from the libc build object directory (including 278 the .depend files) - a command like: 279 cd $OBJ && find . -type d -name libc | xargs rm -rf 280 For architectures that support multiple "compat" binary targets, 281 you'll need to cleanup both the regular libc directory and the 282 compat ones (the above command will do that). 283 28420171010: 285 a change to the build structure of external/bsd/acpica/bin/iasl 286 means that its objdir (or *.d and .depend at least) might need 287 to be manually removed - or a build done once without -u. 288 28920170822: 290 a new version of GMP has been imported and probably 291 will break parts of builds related to themselves or GCC, both 292 in the tools and the native section. Remove all GCC, GMP, MPFR 293 and MPC objdirs or build once without -u. 294 29520170816: 296 a new version of MPFR and MPC have been imported and probably 297 will break parts of builds related to themselves or GCC, both 298 in the tools and the native section. Remove all GCC, GMP, MPFR 299 and MPC objdirs or build once without -u. 300 30120170402: 302 a new version of dhcpcd has been imported, which does not support 303 update builds from the previous version. Remove your 304 external/bsd/dhcpcd object dir or build once without -u. 305 30620170211: 307 a new terminfo database has been imported. 308 The structure of it has changed slightly from prior versions and 309 an updated tic tool is required. 310 If you build.sh, don't use -u 311 31220170207: 313 various arch dependent libc/exect.S files were removed 314 Either remove the obj directories (lib/libc and compat/amd64/i386/lib 315 if it exists) or do a clean build. 316 (This is a bug in the make system, it should be corrected without 317 human intervention, but isn't.) 318 31920170104: 320 xinput build options have changed. 321 Remove the obj directory (external/mit/xorg/bin/xinput) 322 if you build.sh -u 323 32420170103: 325 a new version of flex has been imported. 326 Remove the file from obj (external/bsd/flex) 327 if you build.sh -u 328 32920161014: 330 a new version of OpenSSL has been imported. 331 Remove the files from obj (crypto/external/bsd/openssl) 332 if you build.sh -u 333 33420161009: 335 a new version of dhcpcd has been imported with slightly changed 336 build infrastructure. When doing a build.sh -u this requires 337 pruning the external/bsd/dhcpcd objdir. 338 33920160914: 340 i386, amd64, shark, ofppc and macppc have joined shark and x68k 341 ports in using xorg-server 1.18. This requires a clean destdir 342 and a clean objdir. 343 34420160527: 345 i386 needs a full cleandir or objdir deletion because PIE has 346 been enabled. (see the amd64 entry two down for further info) 347 34820160418: 349 libedit needs manual removal of all autogenerated files since 350 some of them are not autogenerated anymore. Remember that there 351 might be two copies of libedit if your platform builds "compat". 352 35320160410: 354 amd64 needs full "make cleandir" or deletion of objdir now that 355 PIE has been enabled for amd64. PIE, or position-independent 356 executables, means all code, including executables and not just 357 shared libraries, is position-independent and hence able to be 358 relocated by ASLR, address space layout randomization. 359 360 The change was made in Makefile variables for compiler and 361 linker flags, for which make(1) does not record dependencies, 362 hence it is unable to detect that all .o files need rebuilding. 363 364 Partial rebuilds with some modified source files will likely 365 fail when linking executables, since the linker refuses to mix 366 position-independent code with position-dependent code in 367 position-independent executables: 368 369 .../x86_64--netbsd/bin/ld: foo.o: relocation R_X86_64_32 against `...' cannot be used when making a shared object; recompile with -fPIC 370 37120160401: 372 Ports switching to GCC 5.3 will need a full "make cleandir". 373 Some people have found that cleandir is not sufficient, so if 374 in doubt delete the entire object directory tree for gcc. 375 37620160306: 377 NetBSD's regexp implementation is now part of libnbcompat. 378 Nblex, nbm4, nbpax, nbsed use it and they may crash on 379 non-NetBSD hosts if linked with stale object files produced 380 while they included a non-NetBSD regex.h. 381 In any case, you should "make cleandir" at least these tools 382 before updating your toolchain. 383 38420160125: 385 Dtrace has been enabled by default on some architectures. 386 When doing an update build, make sure to clean the etc/mtree 387 object directory before starting the build - otherwise the 388 needed directories in destdir will not be created. 389 An easy way to do this is: 390 cd src/etc/mtree && $TOOLDIR/bin/nbmake-$arch cleandir 391 39220150818: 393 New acpica requires "make cleandir" in src/external/bsd/acpica 394 again. 395 39620150413: 397 New acpica requires "make cleandir" and reinstalling yacc 398 in /usr/src/external/bsd/byacc and /usr/src/tools/yacc and 399 also "make cleandir" in /usr/src/external/bsd/acpica. 400 40120150404: 402 Lint changes require a full rebuild of the tool, so make 403 sure to build without -u option to build.sh, or manually 404 do a make cleandir in src/tools/lint1 and 405 src/usr.bin/xlint. 406 40720150310: 408 Improvements to openssl for arm mean that update builds of 409 the openssl libraries will fail. A make cleandir in 410 external/bsd/openssl/lib is needed 411 41220141026: 413 A mishap during the import of pppd may cause your corruption 414 in your cvs directory if you happened to do a cvs update 415 during a short period of time. To fix, just remove the 416 directory src/external/bsd/ppp/dist/pppd completely 417 and let cvs restore it on next update. 418 41920140721: 420 The src/external/mit/lua/src directory was accidentally created 421 and then deleted in the CVS repository. If you get errors like 422 423 cvs [update aborted]: cannot open directory 424 /cvsroot/src/external/mit/lua/src: No such file or directory 425 426 then delete your local copy of that directory tree and try again. 427 42820140530: 429 ARM eABI switched to DWARF based exception handling. This requires 430 rebuilding all C++ code. It is strongly advised to do a clean build. 431 43220140131: 433 The new compiler_rt/libc integration moved a few things. It is strongly 434 advised to do a clean build. At least lib/libc, the compat version(s) 435 of libc, libkern, rump and the kernels need to be cleaned. 436 43720131227: 438 1. The new ntpd runs in a restricted mode to prevent amplification 439 attacks. If you need ntpdc to work you need to explicitly enable 440 mode7 in your config file. Make sure you put the necessary restrict 441 statements to avoid being exposed. 442 2. strncat has moved from lib/libc to common/lib/libc; you might need 443 to make clean in libc 444 44520131129: 446 The GMP sources were updated, and builds will likely fail without 447 cleaning their build trees for both tools and in-tree, like below. 448 44920131128: 450 The MPC and MPFR sources were updated, and builds may require their 451 tools and in-tree directories cleaned for successful updates. 452 45320130605: 454 The kernel option FAST_IPSEC no longer exists, it's been renamed 455 to IPSEC (and the older IPSEC version removed). 456 45720130605: 458 Previous freetype installations erroneously installed private 459 header files. If you are building against a non-empty $DESTDIR, 460 please remove ${DESTDIR}//usr/X11R7/include/freetype2/freetype/. 461 46220130531: 463 The xdm update may cause build failure due to xdm.man being 464 in the obj tree. Make sure to ensure any like this: 465 nbmake: nbmake: don't know how to make xdm.man. Stop 466 is fixed by deleting the xdm.man in the obj tree. 467 46820130530: 469 Updates of many xsrc packages will leave old .pc files around. 470 Best to clean out the xsrc objdir entirely before rebuilds. 471 47220130301: 473 The removal of netiso requires manual removal of /usr/include/netiso 474 prior to the build and make cleandir in /usr/src/usr.bin/{ktruss,kdump} 475 47620120726: 477 The update of OpenSSL requires cleaning both the OpenSSL build 478 directory and DESTDIR. *Even non-update builds require cleaning 479 DESTDIR.* Builds done without taking these steps may fail, or in 480 some cases may succeed and install broken OpenSSL libraries that 481 cause third-party software to link incorrectly and/or crash. 482 48320120507: 484 The database schema for makemandb was changed. You will 485 need to update the database using 'makemandb -f' or wait 486 for the next weekly run to fix it. 487 48820120319: 489 sys/conf/Makefile.kern.inc has been modified to adjust the 490 size of db_symtab automatically. You need to update dbsym in 491 your $TOOLDIR to build kernels with options SYMTAB_SPACE. If 492 you don't want this behavior, add AUTO_SYMTAB_SPACE=no to your 493 mk.conf. 494 49520120216: 496 Default for MKCATPAGES changed to NO. Update builds will fail 497 unless DESTDIR is cleaned manually. If you built between 20120207 498 and 20120216, daily and weekly could have created an unreadable 499 /var/db/man.db index for apropos. Running makemandb -f or 500 the next run of weekly will fix it. 501 50220111227: 503 If you built between 20111225 and 20111227 you need to remove 504 /usr/lib/libpam.so.4* and /usr/lib/security/*.so.4, since the 505 bump has been reverted. 506 50720111125: 508 The "rnd" pseudodevice has been added to sys/conf/std, which 509 means it should no longer be explicitly listed in kernel 510 configuration files. The line "pseudo-device rnd" should be 511 removed from any custom kernel config files users may have. 512 51320111119: 514 A problem with the datastructures used by the rndctl(8) 515 utility (pointers in datastructures in an array, making 32->64 516 bit compatibility very painful) has been fixed in a 517 non-backwards-compatible way. If you replace your kernel, 518 replace your rndctl executable too. 519 52020111001: 521 the prop_*_send_syscall() functions from proplib(3) have been 522 changed and their new version is not backward compatible with the old 523 one. So ensure that all consumers of these functions (currently: 524 quota2 code and its tests) are updated together with the new lib. 525 52620110817: 527 sparc has been changed to use GCC 4.5.3, so any objdir or 528 DESTDIR for them should be deleted before updating. 529 53020110806: 531 i386 and amd64 have been changed to use GCC 4.5.3, so any 532 objdir or DESTDIR for them should be deleted before updating. 533 53420110805: 535 The update to GCC 4.5.3 requires a non-trivial portion of 536 the tree to be cleaned. Best to delete both objdir and 537 DESTDIR before running this update. So far, only the 538 sparc64, mips and powerpc platforms have changed. 539 54020110803: 541 The layout of external/public-domain/xz has changed. To do an 542 update build you will have to remove the contents of the OBJDIR 543 for external/public-domain/xz/bin by hand as the xz entry there 544 is now a directory. 545 54620110410: 547 The configuration of src/tools/gcc has changed. To do an 548 update build you have to clean both tools/binutils and 549 tools/gcc by hand. 550 55120110328: 552 Building the Xorg binary was moved into a subdirectory to fix 553 ordering issues with "make all". It may be necessary to remove 554 the OBJDIR for external/mit/xorg/server/xorg-server/hw/xfree86 555 if your update build fails, as the "Xorg" entry there is now a 556 directory. 557 55820110121: 559 Assembler files no longer use -traditional-cpp. This can break 560 the build of individual parts of the tree. This is handled 561 correctly by build.sh. Manual builds have to update /usr/share/mk 562 and re-run config(1) for any kernel configurations as needed. 563 56420101217: 565 The tcpdump(8) program was changed to drop privileges and chroot(2) 566 by default. It may be necessary to manually update passwd(5) and 567 group(5) in order to make the program work with existing setups. 568 56920101125: 570 The latest changes to setenv(3) disallow setting environment 571 variables with names that contain '='. Revision 1.18 of env.c 572 assumed that this was allowed. Installing a new libc with an 573 old copy of /usr/bin/env causes env x=1 printenv | grep x= to 574 break which affects the autoconf tests for dependency finding, 575 so building gcc will end up printing: 576 checking dependency style of gcc... none 577 configure: error: no usable dependency style found 578 Fix it by rebuilding and re-installing env. 579 58020101119: 581 Recent Xorg updates in xsrc/external/mit/ may cause various build 582 or run-time problems. Delete your entire DESTDIR and OBJDIR if you 583 have any build problems with xsrc, or problems with mismatched 584 versions between xorg-server and drivers. 585 58620100604: 587 The update of ATF to 0.9 causes old tests written in shell to fail 588 unless they are rebuilt. If you are building with MKUPDATE=yes, 589 you need to clean the src/external/bsd/atf/tests/ and the src/tests/ 590 trees by hand. 591 59220100522: 593 Recent Xorg updates in xsrc/external/mit/ will cause various build 594 problems. Delete your entire DESTDIR and OBJDIR if you have any 595 build problems with xsrc. 596 59720100522: 598 private section of <ctype.h> was split, and now mklocale(1) 599 include ctype_local.h, so you have to make cleandir in tools/mklocale. 600 60120100520: 602 The location of the xkb compiled descriptions has changed. Please 603 remove usr/X11R7/lib/X11/xkb/compiled from your $DESTDIR. 604 60520100222: 606 The shared objects file extension has been changed from .so to 607 .pico, in order to avoid conflicts with shared libraries names 608 libXX.so. All now stale regular .so files can be removed from 609 your object directories. 610 61120100204: 612 The termcap database has been removed from the sources, 613 but has not been marked obsolete so it is not removed 614 from the system when upgrading. 615 As such, you will need to remove them from your object 616 and destination directories. 617 61820091101: 619 After updating, it may be necessary to make the 'cleandir' 620 target in src/tools/yacc/ and in src/usr.bin/yacc/ before a 621 'build.sh -u tools' or 'build.sh -u distribution'. Ditto 622 src/tools/lex/ and src/usr.bin/lex/. 623 62420091001: 625 On amd64 you must rebuild tools (to get the new binutils) 626 before building a kernel, or the build fails on cpufunc.S. 627 62820091001: 629 An error will create a ./usr/X11R7/lib/X11/xkb/compiled/xkb 630 symlink, failing the build. Delete the link, and the subdir 631 it is in, and retry your build. 632 63320090718: 634 libc build changed so that strchr() provides the extra entry 635 point for index(). Update build of libc.a (and libc_pic.a) 636 may fail because the archive contains the unwanted index.o. 637 (Similarly for strrchr() and rindex().) 638 63920090709: 640 Native Xorg was upgraded again. Builds will probably fail again 641 without a clean objdir, at least for src/external/mit/xorg. 642 64320090616: 644 Native Xorg was upgraded. Builds will need a clean objdir for 645 src/external/mit/xorg. Upgrading a system from sets will not 646 work properly yet as the /usr/X11R7/lib/X11/xkb/symbols/pc 647 subdirectory has been changed into a file, and this needs to 648 be manually "rm -r"'ed before installing xbase.tgz. 649 65020090501: 651 Several new functions were added to string.h/libc, and this 652 can cause autoconf problems during the tool build for people 653 who fail to clean out their tools objects properly. If you 654 note messages about stpcpy, stpncpy or strnlen accompanying a 655 failure during the tool build, clean out all your tools 656 objects and start again. 657 65820090325: 659 The i386 port was switched to i486 default toolchain. This requires 660 cleaning your src/tools directory and $TOOLDIR and rebuilding them. 661 66220090126: 663 The __posix_fadvise50 system call changed assembly stub type. You 664 need to 'rm -f __posix_fadvise50.*' in the libc build directory 665 to avoid using the old assembly stub. 666 66720090202: 668 pkg_install now depends on the pkgdb cache for automatic conflict 669 detection. It is recommended to rebuild the cache with 670 ``pkg_admin rebuild''. 671 67220090110: 673 time_t and dev_t have been bumped to 64 bit quantities. To upgrade: 674 1. Make sure your kernel has COMPAT_50 in it. Build and install. 675 This is needed even in the MODULAR kernel because there is 676 conditionally compiled code in rtsock.c. 677 2. make sure build.sh completes and the binaries in a chroot work 678 before installing. 679 3. If you don't use build.sh and you build directly to root, and 680 your build breaks in the middle, don't despair. Make sure headers 681 are installed properly, and start building libraries first libc 682 and libutil, install them and then continue building all the 683 libraries in src/lib and src/gnu/lib and install them. Once 684 the new libraries are installed, you can restart the build. 685 4. If you compile packages and you notice link time warnings, 686 rebuild the required packages to update their shared libraries. 687 Any package you rebuild will require rebuilding all the packages 688 that depend on it. 689 5. Next time you run pwd_mkdb with the new binary, the file 690 will be upgraded and it will not be backwards compatible. 691 6. The utmpx/wtmpx files (/var/run/utmpx and /var/log/wtmpx, see 692 lastlogx(5)) have been versioned, and there is a heuristic 693 for utmp. You are better off removing the old files after 694 upgrading. The automated clearing of /var/run during 695 boot, and the automated rotating of files in /var/log by 696 newsyslog(8), may mean that you do not have to remove the 697 files manually. 698 7. The optional accounting file (/var/account/acct, see 699 accton(8)) has not been versioned, and will need to be 700 removed. The automatic rotation of the accounting file by 701 /etc/daily limits the bad consequences of failure to remove 702 the file. 703 8. Application software that writes time_t to binary files on 704 disk will break or need attention. Most notably: if you are 705 using PostgreSQL < 8.4, you need to dump your databases, 706 rebuild PostgreSQL with the new time_t, then restore. 707 70820081219: 709 config(1) has been updated, and one of the files it creates - 710 swapnetbsd.o - has changed format. You need to rebuild config 711 (done automatically by build.sh) and then you need to rerun 712 config on all kernel configuration files before rebuilding those 713 kernels. 714 71520081205: 716 If you build with MKX11=no, you should remove /etc/rc.d/xdm and 717 /etc/rc.d/xfs from DESTDIR because those files were moved to the xetc 718 set and will appear as extra files for MKX11=no update builds. 719 72020081122: 721 On i386, various kernel options(4) in GENERIC including 722 file systems have been disabled and moved into kernel modules. 723 Before trying a new GENERIC kernel, you have to prepare the 724 following files as well as a new GENERIC kernel: 725 726 - build and install kernel modules from src/sys/modules 727 728 - install the latest bootloader, which will load a module 729 for the file system from which the kernel is loaded automatically 730 731 If you have to load your kernel from a file system which is not of 732 the same type as the root file system, you have to load the necessary 733 file system module manually on the boot prompt or in the boot.cfg file. 734 73520080827: 736 If you built and installed a libc from sources between 737 2008/08/20 and 2008/08/26 you got a broken strtouq(3) 738 which results in false errors reported by lint(1). 739 Since this breaks the libc build itself, manual help is 740 needed -- lint must be disabled temporarily, e.g.: 741 $ (cd lib/libc && make MKLINT=no dependall install) 742 74320080813: 744 MKDEBUG build was broken because the .depend files did not know 745 about .go files. You need to remove all .depend files and rebuild. 746 74720080802: 748 A regression in binary compatibility for pthread_mutex_t has 749 been fixed. Unfortunately, the price is breaking compatibility 750 for -current. 751 752 Threaded programs (using libpthread) and C++ programs (using 753 libstdc++) compiled after 20070907 and before 20080802 need to 754 be recompiled. 755 756 One way to find affected pkgsrc packages: 757 758 $ grep REQUIRES=/usr/lib/libpthread /var/db/pkg/*/+BUILD_INFO 759 $ grep REQUIRES=/usr/lib/libstdc++ /var/db/pkg/*/+BUILD_INFO 760 76120080731: 762 WAPBL (metadata journaling support) has been added, but at this 763 time isn't backwards compatible with pre-WAPBL aware kernels 764 and userland (fsck_ffs in particular). Please make sure you 765 don't use a journaled filesystem with an older kernel/userland, 766 especially an uncleanly mounted journaled filesystem. WAPBL 767 also requires the super block to be in the UFS2 format. You 768 can use fsck_ffs -c 4 to update the superblock format. 769 77020080721: 771 Assembler warnings are now fatal if $WARNS>0 and $NOGCCERROR 772 isn't defined. 773 77420080531: 775 The ioctl number of DRVSUSPENDDEV command on /dev/drvctl changed 776 from 125 (conflicted with DRVCTLCOMMAND) to 129. The drvctl(8) 777 utility needs to be rebuilt and reinstalled as older binaries 778 won't work correctly. The following sequence of commands: 779 780 $ (cd sys/sys/ && nbmake-$arch includes) 781 $ (cd sbin/drvctl/ && nbmake-$arch clean) 782 $ (cd sbin/drvctl/ && nbmake-$arch all) 783 784 leaves new drvctl utility in sbin/drvctl build directory. 785 78620080503: 787 The <bsd.lib.mk> variable MKPRIVATELIB was renamed to LIBISPRIVATE. 788 78920080521: 790 For a while, unprivileged UPDATE builds would fail to 791 succeed at the checkflist stage, complaining that 792 ${DESTDIR}/stand/<arch>/ did not exist. A fix for this 793 problem was committed to share/mk/bsd.kmodule.mk, revision 1.9. 794 If you already hit this problem, update the .mk file, 795 remove ${DESTDIR}/stand/<arch>, and re-run the build. 796 79720080303: 798 Linker warnings are now fatal if $WARNS>0. 799 80020080126: 801 The posix_fadvise system call has been changed from an assembly 802 stub, to a c file that calls an assembly stub. You need to 803 'rm -f posix_fadvise.* .depend' in the libc build directory to 804 avoid using the old assembly stub. 805 80620071209: 807 The acpiec(4) driver has been split into two attachments. If you 808 get ACPI errors before the attachment, please update your kernel 809 configuration file appropriately or see GENERIC for more details. 810 81120071115: 812 The it(4) driver has been renamed to itesio(4) and the old port 813 argument specified in the kernel configuration file is not valid 814 anymore. The itesio(4) driver now uses the Super I/O address port 815 rather than the EC address port. Please update your kernel 816 configuration file appropriately or see GENERIC for more details. 817 81820071028: 819 The pccons(4) driver has been removed from the NetBSD/shark port. 820 You need to update any custom kernel configuration file you have 821 to remove any references to pccons (which includes removing the 822 now useless XSERVER option) and replace them with the correct 823 entries for the wscons driver. See the GENERIC configuration file 824 for more details. 825 82620070913: 827 A latent bug in dhclient/dhcpd that caused it to be unable to 828 enumerate interfaces was fixed. The bug began to cause 829 problems after 20070911 when the kernel's SIOCGIFCONF 830 implementation was repaired. From 20070529 to 20070911 racoon 831 could not enumerate interfaces. (These are noted because 832 normal kernel/userspace version matching hygiene is not 833 sufficient to avoid this problem.) Ensure that both kernel 834 and userland are from after 20070913. 835 83620070703: 837 nbinstall has been renamed ${MACHINE_GNU_ARCH}-install. It 838 calls the target-specific strip program, and the logic to pass 839 down STRIP from make has been removed. This requires a 840 re-installation of tools. 841 84220070422: 843 The way OS emulations lookup filenames inside the emulation root 844 has been changed. Rather than modify the pathname (and copy back 845 to userspace) namei() and lookup() directly check the emulation 846 root. One side effect is that absolute symlinks inside the emulated 847 root file system will be relative to that file system - unless they 848 start /../ this is useful when the emulated root is a real install 849 that has such links. 850 This might affect symlinks that have been added to reference outside 851 the emulated root. 852 85320070412: 854 The pckbc driver on sgimips IP32 has been removed. Use macekbc 855 instead. See the GENERIC32_IP3x kernel configuration for an 856 example. 857 85820070319: 859 src/lib/libc/Makefile revision 1.129 broke libc and ld.elf_so 860 on many platforms due to incorrect flags settings. If you 861 updated and built after about 20070315, do "nbmake-$arch 862 cleandir" in src/lib/libc and src/libexec/ld.elf_so to force a 863 rebuild of object files that might have been built 864 incorrectly, and ensure that you have at least 865 src/lib/libc/Makefile 1.130. 866 86720070210: 868 src/sys/sys/{sa.h,savar.h} were removed. 869 find ${OBJDIR} \( -name .depend -o -name '*.d' \) -print \ 870 | xargs egrep -l '/sa.h|/savar.h' | xargs rm 871 will allow dependencies on those files to get get rebuilt 872 87320070209: 874 The threading model was changed when the newlock2 branch 875 was merged to NetBSD-current. If you boot with a new 876 kernel (version 4.99.10), then you also need a new pthread 877 library (/usr/lib/libpthread.so.0.7). If you boot with 878 an old kernel, then you need the old pthread library 879 (/usr/lib/libpthread.so.0.6). Provided you keep the kernel and 880 the pthread library in sync, old threaded applications should 881 continue to work with an old or new kernel. Note that named(8) 882 is the only threaded application in the base system. 883 88420061214: 885 Following the move of string_to_flags() and flags_to_string() 886 from the bin/ls/ sources to libutil, users doing UPDATE builds 887 will need to do a "make cleandir" in 888 tools/mtree/, tools/makefs/, tools/binstall/, tools/pax/, 889 bin/pax/, bin/ls/, usr.sbin/mtree/, usr.sbin/makefs/, 890 usr.bin/xinstall/, libexec/ftpd/, rescue/, as well 891 as the installation images in distrib/ 892 in order to excise stale references to the old stat_flags.h header 893 file in the ls sources -- stat_flags.h has been removed. 894 89520061108: 896 The configure script used in the src/tools/gcc compiler has been 897 changed to indicate that our libc has ssp support built-in and 898 does not depend on -lssp and -lssp-nonshared. You'll need to 899 make clean in src/tools/gcc first to rebuild the compiler. 900 90120061009: 902 The sysctl variables net.inet{,6}.tcp{,6}.newreno are no longer 903 available. Use net.inet{,6}.tcp{,6}.congctl.selected instead. 904 90520060814: 906 The vt, vidcconsole, kbd, and rpckbd drivers on acorn32 have been 907 withdrawn. Use vidcvideo and pckbd instead. See the GENERIC 908 kernel configuration for an example. X servers from the last 909 few years should cope. 910 91120060703: 912 MPACPI is no more. We always configure PCI interrupts using ACPI 913 if we have an ACPI kernel. The option MPACPI_SCANPCI has been renamed 914 to ACPI_SCANPCI. Thanks to work from fvdl. 915 91620060627: 917 socket(2) has changed, and its system call has been versioned. 918 For userlands with the old version of socket(2), make sure that 919 your kernel has 'options COMPAT_30' set, or else 'bad system call' 920 errors will result. 921 922Hints for a more successful build: 923^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 924 Use build.sh, but do not use its "expert mode": 925 This will automatically build the tools in the 926 correct order, and it will keep the tools and the 927 new build products from interfering with the running 928 system. This will allow you to ignore most of the 929 other advice in this file. 930 Build a new kernel first: 931 This makes sure that any new system calls or features 932 expected by the new userland will be present. This 933 helps to avoid critical errors when upgrading. 934 Use object directories: 935 This helps to keep stale object 936 files from polluting the build if a Makefile "forgets" 937 about one. It also makes it easier to clean up after 938 a build. It's also necessary if you want to use the 939 same source tree for multiple machines. 940 To use object directories with build.sh: 941 a) invoke build.sh with the "-M" or "-O" options. 942 To use object directories without using build.sh: 943 a) cd /usr/src ; make cleandir 944 b) Add "OBJMACHINE=yes" to /etc/mk.conf 945 c) Add "MKOBJDIRS=yes" to /etc/mk.conf 946 d) cd /usr/src ; make build 947 Note that running "make obj" in a directory will create 948 in obj.$MACHINE directory. 949 Build to a DESTDIR: 950 This helps to keep old installed files (especially libraries) 951 from interfering with the new build. 952 To build to a DESTDIR with build.sh, use the "-D" option. 953 To build to a DESTDIR without using build.sh, set the DESTDIR 954 environment variable before running make build. It should be 955 set to the pathname of an initially empty directory. 956 Problems: if you do not use build.sh, you might need to 957 update critical utilities without using DESTDIR since 958 nothing is executed from what is installed in DESTDIR. 959 (See critical utils, below.) 960 Build often: 961 This keeps critical utilities current enough to not choke 962 on any other part of the source tree that depends on up to 963 date functionality. If you use build.sh, you should not have 964 this problem. 965 966What to do if things don't work: 967^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 968When things don't work there are usually a few things that commonly 969should be done. 970 1) make includes 971 This should be done automatically by make build. 972 2) cd share/mk && make install 973 Again, automatically done by make build. 974 975Failsafe rebuild of a small part of the tree: 976^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 977To make sure you rebuild something correctly you want to do 978something like the following: 979 1) Make sure the includes and .mk files are up to date. 980 2) Make sure any program used to build the particular 981 utility is up to date. (yacc, lex, etc...) 982 3) cd ...path/to/util... 983 make cleandir 984 rm ...all obj directories... 985 make cleandir # yes, again 986 make obj 987 make depend && make 988 989Failsafe rebuild of the entire tree: 990^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 991If you really want to make sure the source tree is clean and 992ready for a build try the following. Note that sourcing /etc/mk.conf 993(a make(1) Makefile) in this manner is not right, and will not work 994for anyone who uses any make(1) features in /etc/mk.conf. 995 996---cut here--- 997#!/bin/sh 998. /etc/mk.conf 999 1000if [ -z $NETBSDSRCDIR ] ; then 1001 NETBSDSRCDIR=/usr/src 1002fi 1003if [ \! -d $NETBSDSRCDIR ] ; then 1004 echo Unable to find sources 1005 exit 1 1006fi 1007find $NETBSDSRCDIR -name \*.o -o -name obj.\* -o -name obj -exec rm \{\} \; 1008 1009if [ -z $BSDOBJDIR ] ; then 1010 BSDOBJDIR=/usr/obj 1011fi 1012if [ -d $BSDOBJDIR ] ; then 1013 rm -rf $BSDOBJDIR 1014fi 1015 1016cd $NETBSDSRCDIR && make cleandir 1017 1018---cut here--- 1019 1020Critical utilities: 1021^^^^^^^^^^^^^^^^^^^ 1022 usr.bin/compile_et 1023 usr.bin/make 1024 usr.bin/yacc 1025 usr.bin/lex 1026 usr.bin/xlint 1027 usr.bin/config 1028 1029Other problems and possible solutions: 1030^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1031Symptom:Complaints involving a Makefile. 1032Fix: Rebuild usr.bin/make: 1033 cd usr.bin/make && make && make install 1034 Or, a failsafe method if that doesn't work: 1035 cd usr.bin/make && cc *.c */*.c -I . -o make && mv make /usr/bin 1036 1037Fix: Make sure .mk files are up to date. 1038 cd share/mk && make install 1039 1040Symptom:Kernel `config' fails to configure any kernel, including GENERIC. 1041Fix: Rebuild usr.bin/config 1042 1043Symptom: 1044Fix: Rebuild usr.bin/yacc 1045 1046Symptom: 1047Fix: Rebuild usr.bin/lex 1048 1049Symptom: 1050Fix: rm /usr/lib/libbfd.a 1051 1052Symptom:Obsolete intermediate files are used during compilation 1053Fix: Try the following sequence of commands in the directory in question. 1054 make cleandir; rm `make print-objdir`; make cleandir; make obj 1055 (If you built the tree without "make obj" in the past, obsolete files 1056 may remain. The command tries to clean everything up) 1057 1058Symptom:.../sysinst/run.c:xx: warning: initialization from incompatible 1059 pointer type 1060Fix: Rebuild and install usr.bin/menuc 1061 1062Symptom:mklocale not found during build in share/locale/ctype 1063Fix: Build and install usr.bin/mklocale 1064 1065Symptom:undefined reference to `__assert13' or `__unsetenv13' 1066Fix: Rebuild and install lib/libc 1067 1068Symptom:usr.bin/config fails to build. 1069Fix: Try building with -DMAKE_BOOTSTRAP added to CFLAGS in Makefile. 1070 1071Symptom:undefined reference to `getprogname' or `setprogname' 1072Fix: Rebuild and install lib/libc 1073 1074Symptom:lint does not understand the '-X' option 1075Fix: May need to build & install libs with NOLINT=1 before rebuilding lint 1076 1077Symptom:Update build fails in src/tools/gcc complaining that a variable 1078 (e.g. CPPFLAGS) has changed since the previous run. 1079Fix: Run "nbmake-${ARCH} clean" in src/tools/gcc or do a clean build. 1080 1081Symptom:cvs [update aborted]: cannot open directory /cvsroot/src/...: 1082 No such file or directory. 1083Cause: If a directory is created by mistake, then it is sometimes 1084 deleted from the CVS repository using administrative commands 1085 that bypass the normal cvs access controls. If your cvs working tree 1086 contains references to a directory that has been deleted on the 1087 server in this way, then "cvs update" reports this error. 1088Fix: Recursively delete the affected directory from your working tree 1089 and try the update again. 1090