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