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