UPDATING revision 1.299
1$NetBSD: UPDATING,v 1.299 2019/02/08 09:57:01 mrg 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 2220190207: 23 GCC 7 switched for many ports. Update builds are likely to fail. 24 2520180924: 26 A newer OpenSSL version has been imported. If you are doing 27 update builds, make sure to remove all old obj dirs, like: 28 cd /usr/obj && find . -type d -name openssl | xargs rm -rf 29 3020180717: 31 On aarch64 int64_t and related types have changed from long long 32 to long. This requires recompiling all C++ binaries. 33 3420180713: 35 On amd64 and i386 static binaries are now build position 36 independend. This requires recompilation of all object 37 files used to create the crunched /rescue binary. 38 Clean the rescue directory in your obj directory before 39 doing an update build, otherwise linking will fail. 40 4120180414: 42 Existing binutils was migrated to binutils.old. Manual 43 removal of tools/binutils objects directory may be required 44 to fix tools build failure. 45 4620180311: 47 bdftopcf was updated and may need cleaning in the 48 src/external/mit/xorg/tools/bdftopcf subdirectory if there are 49 link errors. 50 5120180212: 52 between OpenSSL and GCC updates, many things may fail to build. 53 any failure that looks like GCC or openssl is best handled by 54 a clean destdir and objdir. Full cleandir and destdir deletion 55 is recommended if build failures occur. 56 5720171225: 58 removal of the vadvise syscall requires manual removal of all 59 associated files from the libc build object directory (including 60 the .depend files) - a command like: 61 cd $OBJ && find . -type d -name libc | xargs rm -rf 62 For architectures that support multiple "compat" binary targets, 63 you'll need to cleanup both the regular libc directory and the 64 compat ones (the above command will do that). 65 6620171010: 67 a change to the build structure of external/bsd/acpica/bin/iasl 68 means that its objdir (or *.d and .depend at least) might need 69 to be manually removed - or a build done once without -u. 70 7120170822: 72 a new version of GMP has been imported and probably 73 will break parts of builds related to themselves or GCC, both 74 in the tools and the native section. Remove all GCC, GMP, MPFR 75 and MPC objdirs or build once without -u. 76 7720170816: 78 a new version of MPFR and MPC have been imported and probably 79 will break parts of builds related to themselves or GCC, both 80 in the tools and the native section. Remove all GCC, GMP, MPFR 81 and MPC objdirs or build once without -u. 82 8320170402: 84 a new version of dhcpcd has been imported, which does not support 85 update builds from the previous version. Remove your 86 external/bsd/dhcpcd object dir or build once without -u. 87 8820170211: 89 a new terminfo database has been imported. 90 The structure of it has changed slightly from prior versions and 91 an updated tic tool is required. 92 If you build.sh, don't use -u 93 9420170207: 95 various arch dependent libc/exect.S files were removed 96 Either remove the obj directories (lib/libc and compat/amd64/i386/lib 97 if it exists) or do a clean build. 98 (This is a bug in the make system, it should be corrected without 99 human intervention, but isn't.) 100 10120170104: 102 xinput build options have changed. 103 Remove the obj directory (external/mit/xorg/bin/xinput) 104 if you build.sh -u 105 10620170103: 107 a new version of flex has been imported. 108 Remove the file from obj (external/bsd/flex) 109 if you build.sh -u 110 11120161014: 112 a new version of OpenSSL has been imported. 113 Remove the files from obj (crypto/external/bsd/openssl) 114 if you build.sh -u 115 11620161009: 117 a new version of dhcpcd has been imported with slightly changed 118 build infrastructure. When doing a build.sh -u this requires 119 pruning the external/bsd/dhcpcd objdir. 120 12120160914: 122 i386, amd64, shark, ofppc and macppc have joined shark and x68k 123 ports in using xorg-server 1.18. This requires a clean destdir 124 and a clean objdir. 125 12620160527: 127 i386 needs a full cleandir or objdir deletion because PIE has 128 been enabled. (see the amd64 entry two down for further info) 129 13020160418: 131 libedit needs manual removal of all autogenerated files since 132 some of them are not autogenerated anymore. Remember that there 133 might be two copies of libedit if your platform builds "compat". 134 13520160410: 136 amd64 needs full "make cleandir" or deletion of objdir now that 137 PIE has been enabled for amd64. PIE, or position-independent 138 executables, means all code, including executables and not just 139 shared libraries, is position-independent and hence able to be 140 relocated by ASLR, address space layout randomization. 141 142 The change was made in Makefile variables for compiler and 143 linker flags, for which make(1) does not record dependencies, 144 hence it is unable to detect that all .o files need rebuilding. 145 146 Partial rebuilds with some modified source files will likely 147 fail when linking executables, since the linker refuses to mix 148 position-independent code with position-dependent code in 149 position-independent executables: 150 151 .../x86_64--netbsd/bin/ld: foo.o: relocation R_X86_64_32 against `...' cannot be used when making a shared object; recompile with -fPIC 152 15320160401: 154 Ports switching to GCC 5.3 will need a full "make cleandir". 155 Some people have found that cleandir is not sufficient, so if 156 in doubt delete the entire object directory tree for gcc. 157 15820160306: 159 NetBSD's regexp implementation is now part of libnbcompat. 160 Nblex, nbm4, nbpax, nbsed use it and they may crash on 161 non-NetBSD hosts if linked with stale object files produced 162 while they included a non-NetBSD regex.h. 163 In any case, you should "make cleandir" at least these tools 164 before updating your toolchain. 165 16620160125: 167 Dtrace has been enabled by default on some architectures. 168 When doing an update build, make sure to clean the etc/mtree 169 object directory before starting the build - otherwise the 170 needed directories in destdir will not be created. 171 An easy way to do this is: 172 cd src/etc/mtree && $TOOLDIR/bin/nbmake-$arch cleandir 173 17420150818: 175 New acpica requires "make cleandir" in src/external/bsd/acpica 176 again. 177 17820150413: 179 New acpica requires "make cleandir" and reinstalling yacc 180 in /usr/src/external/bsd/byacc and /usr/src/tools/yacc and 181 also "make cleandir" in /usr/src/external/bsd/acpica. 182 18320150404: 184 Lint changes require a full rebuild of the tool, so make 185 sure to build without -u option to build.sh, or manually 186 do a make cleandir in src/tools/lint1 and 187 src/usr.bin/xlint. 188 18920150310: 190 Improvements to openssl for arm mean that update builds of 191 the openssl libraries will fail. A make cleandir in 192 external/bsd/openssl/lib is needed 193 19420141026: 195 A mishap during the import of pppd may cause your corruption 196 in your cvs directory if you happened to do a cvs update 197 during a short period of time. To fix, just remove the 198 directory src/external/bsd/ppp/dist/pppd completely 199 and let cvs restore it on next update. 200 20120140721: 202 The src/external/mit/lua/src directory was accidentally created 203 and then deleted in the CVS repository. If you get errors like 204 205 cvs [update aborted]: cannot open directory 206 /cvsroot/src/external/mit/lua/src: No such file or directory 207 208 then delete your local copy of that directory tree and try again. 209 21020140530: 211 ARM eABI switched to DWARF based exception handling. This requires 212 rebuilding all C++ code. It is strongly advised to do a clean build. 213 21420140131: 215 The new compiler_rt/libc integration moved a few things. It is strongly 216 advised to do a clean build. At least lib/libc, the compat version(s) 217 of libc, libkern, rump and the kernels need to be cleaned. 218 21920131227: 220 1. The new ntpd runs in a restricted mode to prevent amplification 221 attacks. If you need ntpdc to work you need to explicitly enable 222 mode7 in your config file. Make sure you put the necessary restrict 223 statements to avoid being exposed. 224 2. strncat has moved from lib/libc to common/lib/libc; you might need 225 to make clean in libc 226 22720131129: 228 The GMP sources were updated, and builds will likely fail without 229 cleaning their build trees for both tools and in-tree, like below. 230 23120131128: 232 The MPC and MPFR sources were updated, and builds may require their 233 tools and in-tree directories cleaned for successful updates. 234 23520130605: 236 The kernel option FAST_IPSEC no longer exists, it's been renamed 237 to IPSEC (and the older IPSEC version removed). 238 23920130605: 240 Previous freetype installations eroneously installed private 241 header files. If you are building against a non-empty $DESTDIR, 242 please remove ${DESTDIR}//usr/X11R7/include/freetype2/freetype/. 243 24420130531: 245 The xdm update may cause build failure due to xdm.man being 246 in the obj tree. Make sure to ensure any like this: 247 nbmake: nbmake: don't know how to make xdm.man. Stop 248 is fixed by deleting the xdm.man in the obj tree. 249 25020130530: 251 Updates of many xsrc packages will leave old .pc files around. 252 Best to clean out the xsrc objdir entirely before rebuilds. 253 25420130301: 255 The removal of netiso requires manual removal of /usr/include/netiso 256 prior to the build and make cleandir in /usr/src/usr.bin/{ktruss,kdump} 257 25820120726: 259 The update of OpenSSL requires cleaning both the OpenSSL build 260 directory and DESTDIR. *Even non-update builds require cleaning 261 DESTDIR.* Builds done without taking these steps may fail, or in 262 some cases may succeed and install broken OpenSSL libraries that 263 cause third-party software to link incorrectly and/or crash. 264 26520120507: 266 The database schema for makemandb was changed. You will 267 need to update the database using 'makemandb -f' or wait 268 for the next weekly run to fix it. 269 27020120319: 271 sys/conf/Makefile.kern.inc has been modified to adjust the 272 size of db_symtab automatically. You need to update dbsym in 273 your $TOOLDIR to build kernels with options SYMTAB_SPACE. If 274 you don't want this behavior, add AUTO_SYMTAB_SPACE=no to your 275 mk.conf. 276 27720120216: 278 Default for MKCATPAGES changed to NO. Update builds will fail 279 unless DESTDIR is cleaned manually. If you built between 20120207 280 and 20120216, daily and weekly could have created an unreadable 281 /var/db/man.db index for apropos. Running makemandb -f or 282 the next run of weekly will fix it. 283 28420111227: 285 If you built between 20111225 and 20111227 you need to remove 286 /usr/lib/libpam.so.4* and /usr/lib/security/*.so.4, since the 287 bump has been reverted. 288 28920111125: 290 The "rnd" pseudodevice has been added to sys/conf/std, which 291 means it should no longer be explicitly listed in kernel 292 configuration files. The line "pseudo-device rnd" should be 293 removed from any custom kernel config files users may have. 294 29520111119: 296 A problem with the datastructures used by the rndctl(8) 297 utility (pointers in datastructures in an array, making 32->64 298 bit compatibility very painful) has been fixed in a 299 non-backwards-compatible way. If you replace your kernel, 300 replace your rndctl executable too. 301 30220111001: 303 the prop_*_send_syscall() functions from proplib(3) have been 304 changed and their new version is not backward compatible with the old 305 one. So ensure that all consumers of these functions (currently: 306 quota2 code and its tests) are updated together with the new lib. 307 30820110817: 309 sparc has been changed to use GCC 4.5.3, so any objdir or 310 DESTDIR for them should be deleted before updating. 311 31220110806: 313 i386 and amd64 have been changed to use GCC 4.5.3, so any 314 objdir or DESTDIR for them should be deleted before updating. 315 31620110805: 317 The update to GCC 4.5.3 requires a non-trivial portion of 318 the tree to be cleaned. Best to delete both objdir and 319 DESTDIR before running this update. So far, only the 320 sparc64, mips and powerpc platforms have changed. 321 32220110803: 323 The layout of external/public-domain/xz has changed. To do an 324 update build you will have to remove the contents of the OBJDIR 325 for external/public-domain/xz/bin by hand as the xz entry there 326 is now a directory. 327 32820110410: 329 The configuration of src/tools/gcc has changed. To do an 330 update build you have to clean both tools/binutils and 331 tools/gcc by hand. 332 33320110328: 334 Building the Xorg binary was moved into a subdirectory to fix 335 ordering issues with "make all". It may be necessary to remove 336 the OBJDIR for external/mit/xorg/server/xorg-server/hw/xfree86 337 if your update build fails, as the "Xorg" entry there is now a 338 directory. 339 34020110121: 341 Assembler files no longer use -traditional-cpp. This can break 342 the build of individual parts of the tree. This is handled 343 correctly by build.sh. Manual builds have to update /usr/share/mk 344 and re-run config(1) for any kernel configurations as needed. 345 34620101217: 347 The tcpdump(8) program was changed to drop privileges and chroot(2) 348 by default. It may be necessary to manually update passwd(5) and 349 group(5) in order to make the program work with existing setups. 350 35120101125: 352 The latest changes to setenv(3) dissallow setting environment 353 variables with names that contain '='. Revision 1.18 of env.c 354 assumed that this was allowed. Installing a new libc with an 355 old copy of /usr/bin/env causes env x=1 printenv | grep x= to 356 break which affects the autoconf tests for dependency finding, 357 so building gcc will end up printing: 358 checking dependency style of gcc... none 359 configure: error: no usable dependency style found 360 Fix it by rebuilding and re-installing env. 361 36220101119: 363 Recent Xorg updates in xsrc/external/mit/ may cause various build 364 or run-time problems. Delete your entire DESTDIR and OBJDIR if you 365 have any build problems with xsrc, or problems with mismatched 366 versions between xorg-server and drivers. 367 36820100604: 369 The update of ATF to 0.9 causes old tests written in shell to fail 370 unless they are rebuilt. If you are building with MKUPDATE=yes, 371 you need to clean the src/external/bsd/atf/tests/ and the src/tests/ 372 trees by hand. 373 37420100522: 375 Recent Xorg updates in xsrc/external/mit/ will cause various build 376 problems. Delete your entire DESTDIR and OBJDIR if you have any 377 build problems with xsrc. 378 37920100522: 380 private section of <ctype.h> was splitted, and now mklocale(1) 381 include ctype_local.h, so you have to make cleandir in tools/mklocale. 382 38320100520: 384 The location of the xkb compiled descriptions has changed. Please 385 remove usr/X11R7/lib/X11/xkb/compiled from your $DESTDIR. 386 38720100222: 388 The shared objects file extension has been changed from .so to 389 .pico, in order to avoid conflicts with shared libraries names 390 libXX.so. All now stale regular .so files can be removed from 391 your object directories. 392 39320100204: 394 The termcap database has been removed from the sources, 395 but has not been marked obsolete so it is not removed 396 from the system when upgrading. 397 As such, you will need to remove them from your object 398 and destination directories. 399 40020091101: 401 After updating, it may be necessary to make the 'cleandir' 402 target in src/tools/yacc/ and in src/usr.bin/yacc/ before a 403 'build.sh -u tools' or 'build.sh -u distribution'. Ditto 404 src/tools/lex/ and src/usr.bin/lex/. 405 40620091001: 407 On amd64 you must rebuild tools (to get the new binutils) 408 before building a kernel, or the build fails on cpufunc.S. 409 41020091001: 411 An error will create a ./usr/X11R7/lib/X11/xkb/compiled/xkb 412 symlink, failing the build. Delete the link, and the subdir 413 it is in, and retry your build. 414 41520090718: 416 libc build changed so that strchr() provides the extra entry 417 point for index(). Update build of libc.a (and libc_pic.a) 418 may fail because the archive contains the unwanted index.o. 419 (Similarly for strrchr() and rindex().) 420 42120090709: 422 Native Xorg was upgraded again. Builds will probably fail again 423 without a clean objdir, at least for src/external/mit/xorg. 424 42520090616: 426 Native Xorg was upgraded. Builds will need a clean objdir for 427 src/external/mit/xorg. Upgrading a system from sets will not 428 work properly yet as the /usr/X11R7/lib/X11/xkb/symbols/pc 429 subdirectory has been changed into a file, and this needs to 430 be manually "rm -r"'ed before installing xbase.tgz. 431 43220090501: 433 Several new functions were added to string.h/libc, and this 434 can cause autoconf problems during the tool build for people 435 who fail to clean out their tools objects properly. If you 436 note messages about stpcpy, stpncpy or strnlen accompanying a 437 failure during the tool build, clean out all your tools 438 objects and start again. 439 44020090325: 441 The i386 port was switched to i486 default toolchain. This requires 442 cleaning your src/tools directory and $TOOLDIR and rebuilding them. 443 44420090126: 445 The __posix_fadvise50 system call changed assembly stub type. You 446 need to 'rm -f __posix_fadvise50.*' in the libc build directory 447 to avoid using the old assembly stub. 448 44920090202: 450 pkg_install now depends on the pkgdb cache for automatic conflict 451 detection. It is recommented to rebuild the cache with 452 ``pkg_admin rebuild''. 453 45420090110: 455 time_t and dev_t have been bumped to 64 bit quantities. To upgrade: 456 1. Make sure your kernel has COMPAT_50 in it. Build and install. 457 This is needed even in the MODULAR kernel because there is 458 conditionally compiled code in rtsock.c. 459 2. make sure build.sh completes and the binaries in a chroot work 460 before installing. 461 3. If you don't use build.sh and you build directly to root, and 462 your build breaks in the middle, don't despair. Make sure headers 463 are installed properly, and start building libraries first libc 464 and libutil, install them and then continue building all the 465 libraries in src/lib and src/gnu/lib and install them. Once 466 the new libraries are installed, you can restart the build. 467 4. If you compile packages and you notice link time warnings, 468 rebuild the required packages to update their shared libraries. 469 Any package you rebuild will require rebuilding all the packages 470 that depend on it. 471 5. Next time you run pwd_mkdb with the new binary, the file 472 will be upgraded and it will not be backwards compatible. 473 6. The utmpx/wtmpx files (/var/run/utmpx and /var/log/wtmpx, see 474 lastlogx(5)) have been versioned, and there is a heuristic 475 for utmp. You are better off removing the old files after 476 upgrading. The automated clearing of /var/run during 477 boot, and the automated rotating of files in /var/log by 478 newsyslog(8), may mean that you do not have to remove the 479 files manually. 480 7. The optional accounting file (/var/account/acct, see 481 accton(8)) has not been versioned, and will need to be 482 removed. The automatic rotation of the accounting file by 483 /etc/daily limits the bad consequences of failure to remove 484 the file. 485 8. Application software that writes time_t to binary files on 486 disk will break or need attention. Most notably: if you are 487 using PostgreSQL < 8.4, you need to dump your databases, 488 rebuild PostgreSQL with the new time_t, then restore. 489 49020081219: 491 config(1) has been updated, and one of the files it creates - 492 swapnetbsd.o - has changed format. You need to rebuild config 493 (done automatically by build.sh) and then you need to rerun 494 config on all kernel configuration files before rebuilding those 495 kernels. 496 49720081205: 498 If you build with MKX11=no, you should remove /etc/rc.d/xdm and 499 /etc/rc.d/xfs from DESTDIR because those files were moved to the xetc 500 set and will appear as extra files for MKX11=no update builds. 501 50220081122: 503 On i386, various kernel options(4) in GENERIC including 504 file systems have been disabled and moved into kernel modules. 505 Before trying a new GENERIC kernel, you have to prepare the 506 following files as well as a new GENERIC kernel: 507 508 - build and install kernel modules from src/sys/modules 509 510 - install the latest bootloader, which will load a module 511 for the file system from which the kernel is loaded automatically 512 513 If you have to load your kernel from a file system which is not of 514 the same type as the root file system, you have to load the necessary 515 file system module manually on the boot prompt or in the boot.cfg file. 516 51720080827: 518 If you built and installed a libc from sources between 519 2008/08/20 and 2008/08/26 you got a broken strtouq(3) 520 which results in false errors reported by lint(1). 521 Since this breaks the libc build itself, manual help is 522 needed -- lint must be disabled temporarily, e.g.: 523 $ (cd lib/libc && make MKLINT=no dependall install) 524 52520080813: 526 MKDEBUG build was broken because the .depend files did not know 527 about .go files. You need to remove all .depend files and rebuild. 528 52920080802: 530 A regression in binary compatibility for pthread_mutex_t has 531 been fixed. Unfortunately, the price is breaking compatibility 532 for -current. 533 534 Threaded programs (using libpthread) and C++ programs (using 535 libstdc++) compiled after 20070907 and before 20080802 need to 536 be recompiled. 537 538 One way to find affected pkgsrc packages: 539 540 $ grep REQUIRES=/usr/lib/libpthread /var/db/pkg/*/+BUILD_INFO 541 $ grep REQUIRES=/usr/lib/libstdc++ /var/db/pkg/*/+BUILD_INFO 542 54320080731: 544 WAPBL (metadata journaling support) has been added, but at this 545 time isn't backwards compatible with pre-WAPBL aware kernels 546 and userland (fsck_ffs in particular). Please make sure you 547 don't use a journaled filesystem with an older kernel/userland, 548 especially an uncleanly mounted journaled filesystem. WAPBL 549 also requires the super block to be in the UFS2 format. You 550 can use fsck_ffs -c 4 to update the superblock format. 551 55220080721: 553 Assembler warnings are now fatal if $WARNS>0 and $NOGCCERROR 554 isn't defined. 555 55620080531: 557 The ioctl number of DRVSUSPENDDEV command on /dev/drvctl changed 558 from 125 (conflicted with DRVCTLCOMMAND) to 129. The drvctl(8) 559 utility needs to be rebuilt and reinstalled as older binaries 560 won't work correctly. The following sequence of commands: 561 562 $ (cd sys/sys/ && nbmake-$arch includes) 563 $ (cd sbin/drvctl/ && nbmake-$arch clean) 564 $ (cd sbin/drvctl/ && nbmake-$arch all) 565 566 leaves new drvctl utility in sbin/drvctl build directory. 567 56820080503: 569 The <bsd.lib.mk> variable MKPRIVATELIB was renamed to LIBISPRIVATE. 570 57120080521: 572 For a while, unprivileged UPDATE builds would fail to 573 succeed at the checkflist stage, complaining that 574 ${DESTDIR}/stand/<arch>/ did not exist. A fix for this 575 problem was committed to share/mk/bsd.kmodule.mk, revision 1.9. 576 If you already hit this problem, update the .mk file, 577 remove ${DESTDIR}/stand/<arch>, and re-run the build. 578 57920080303: 580 Linker warnings are now fatal if $WARNS>0. 581 58220080126: 583 The posix_fadvise system call has been changed from an assembly 584 stub, to a c file that calls an assembly stub. You need to 585 'rm -f posix_fadvise.* .depend' in the libc build directory to 586 avoid using the old assembly stub. 587 58820071209: 589 The acpiec(4) driver has been split into two attachments. If you 590 get ACPI errors before the attachment, please update your kernel 591 configuration file appropriately or see GENERIC for more details. 592 59320071115: 594 The it(4) driver has been renamed to itesio(4) and the old port 595 argument specified in the kernel configuration file is not valid 596 anymore. The itesio(4) driver now uses the Super I/O address port 597 rather than the EC address port. Please update your kernel 598 configuration file appropriately or see GENERIC for more details. 599 60020071028: 601 The pccons(4) driver has been removed from the NetBSD/shark port. 602 You need to update any custom kernel configuration file you have 603 to remove any references to pccons (which includes removing the 604 now useless XSERVER option) and replace them with the correct 605 entries for the wscons driver. See the GENERIC configuration file 606 for more details. 607 60820070913: 609 A latent bug in dhclient/dhcpd that caused it to be unable to 610 enumerate interfaces was fixed. The bug began to cause 611 problems after 20070911 when the kernel's SIOCGIFCONF 612 implementation was repaired. From 20070529 to 20070911 racoon 613 could not enumerate interfaces. (These are noted because 614 normal kernel/userspace version matching hygiene is not 615 sufficient to avoid this problem.) Ensure that both kernel 616 and userland are from after 20070913. 617 61820070703: 619 nbinstall has been renamed ${MACHINE_GNU_ARCH}-install. It 620 calls the target-specific strip program, and the logic to pass 621 down STRIP from make has been removed. This requires a 622 re-installation of tools. 623 62420070422: 625 The way OS emulations lookup filenames inside the emulation root 626 has been changed. Rather than modify the pathname (and copy back 627 to userspace) namei() and lookup() directly check the emulation 628 root. One side effect is that absolute symlinks inside the emulated 629 root file system will be relative to that file system - unless they 630 start /../ this is useful when the emulated root is a real install 631 that has such links. 632 This might affect symlinks that have been added to reference outside 633 the emulated root. 634 63520070412: 636 The pckbc driver on sgimips IP32 has been removed. Use macekbc 637 instead. See the GENERIC32_IP3x kernel configuration for an 638 example. 639 64020070319: 641 src/lib/libc/Makefile revision 1.129 broke libc and ld.elf_so 642 on many platforms due to incorrect flags settings. If you 643 updated and built after about 20070315, do "nbmake-$arch 644 cleandir" in src/lib/libc and src/libexec/ld.elf_so to force a 645 rebuild of object files that might have been built 646 incorrectly, and ensure that you have at least 647 src/lib/libc/Makefile 1.130. 648 64920070210: 650 src/sys/sys/{sa.h,savar.h} were removed. 651 find ${OBJDIR} \( -name .depend -o -name '*.d' \) -print \ 652 | xargs egrep -l '/sa.h|/savar.h' | xargs rm 653 will allow dependencies on those files to get get rebuilt 654 65520070209: 656 The threading model was changed when the newlock2 branch 657 was merged to NetBSD-current. If you boot with a new 658 kernel (version 4.99.10), then you also need a new pthread 659 library (/usr/lib/libpthread.so.0.7). If you boot with 660 an old kernel, then you need the old pthread library 661 (/usr/lib/libpthread.so.0.6). Provided you keep the kernel and 662 the pthread library in sync, old threaded applications should 663 continue to work with an old or new kernel. Note that named(8) 664 is the only threaded application in the base system. 665 66620061214: 667 Following the move of string_to_flags() and flags_to_string() 668 from the bin/ls/ sources to libutil, users doing UPDATE builds 669 will need to do a "make cleandir" in 670 tools/mtree/, tools/makefs/, tools/binstall/, tools/pax/, 671 bin/pax/, bin/ls/, usr.sbin/mtree/, usr.sbin/makefs/, 672 usr.bin/xinstall/, libexec/ftpd/, rescue/, as well 673 as the installation images in distrib/ 674 in order to excise stale references to the old stat_flags.h header 675 file in the ls sources -- stat_flags.h has been removed. 676 67720061108: 678 The configure script used in the src/tools/gcc compiler has been 679 changed to indicate that our libc has ssp support built-in and 680 does not depend on -lssp and -lssp-nonshared. You'll need to 681 make clean in src/tools/gcc first to rebuild the compiler. 682 68320061009: 684 The sysctl variables net.inet{,6}.tcp{,6}.newreno are no longer 685 available. Use net.inet{,6}.tcp{,6}.congctl.selected instead. 686 68720060814: 688 The vt, vidcconsole, kbd, and rpckbd drivers on acorn32 have been 689 withdrawn. Use vidcvideo and pckbd instead. See the GENERIC 690 kernel configuration for an example. X servers from the last 691 few years should cope. 692 69320060703: 694 MPACPI is no more. We always configure PCI interrupts using ACPI 695 if we have an ACPI kernel. The option MPACPI_SCANPCI has been renamed 696 to ACPI_SCANPCI. Thanks to work from fvdl. 697 69820060627: 699 socket(2) has changed, and its system call has been versioned. 700 For userlands with the old version of socket(2), make sure that 701 your kernel has 'options COMPAT_30' set, or else 'bad system call' 702 errors will result. 703 704Hints for a more successful build: 705^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 706 Use build.sh, but do not use its "expert mode": 707 This will automatically build the tools in the 708 correct order, and it will keep the tools and the 709 new build products from interfering with the running 710 system. This will allow you to ignore most of the 711 other advice in this file. 712 Build a new kernel first: 713 This makes sure that any new system calls or features 714 expected by the new userland will be present. This 715 helps to avoid critical errors when upgrading. 716 Use object directories: 717 This helps to keep stale object 718 files from polluting the build if a Makefile "forgets" 719 about one. It also makes it easier to clean up after 720 a build. It's also necessary if you want to use the 721 same source tree for multiple machines. 722 To use object directories with build.sh: 723 a) invoke build.sh with the "-M" or "-O" options. 724 To use object directories without using build.sh: 725 a) cd /usr/src ; make cleandir 726 b) Add "OBJMACHINE=yes" to /etc/mk.conf 727 c) Add "MKOBJDIRS=yes" to /etc/mk.conf 728 d) cd /usr/src ; make build 729 Note that running "make obj" in a directory will create 730 in obj.$MACHINE directory. 731 Build to a DESTDIR: 732 This helps to keep old installed files (especially libraries) 733 from interfering with the new build. 734 To build to a DESTDIR with build.sh, use the "-D" option. 735 To build to a DESTDIR without using build.sh, set the DESTDIR 736 environment variable before running make build. It should be 737 set to the pathname of an initially empty directory. 738 Problems: if you do not use build.sh, you might need to 739 update critical utilities without using DESTDIR since 740 nothing is executed from what is installed in DESTDIR. 741 (See critical utils, below.) 742 Build often: 743 This keeps critical utilities current enough to not choke 744 on any other part of the source tree that depends on up to 745 date functionality. If you use build.sh, you should not have 746 this problem. 747 748What to do if things don't work: 749^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 750When things don't work there are usually a few things that commonly 751should be done. 752 1) make includes 753 This should be done automatically by make build. 754 2) cd share/mk && make install 755 Again, automatically done by make build. 756 757Failsafe rebuild of a small part of the tree: 758^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 759To make sure you rebuild something correctly you want to do 760something like the following: 761 1) Make sure the includes and .mk files are up to date. 762 2) Make sure any program used to build the particular 763 utility is up to date. (yacc, lex, etc...) 764 3) cd ...path/to/util... 765 make cleandir 766 rm ...all obj directories... 767 make cleandir # yes, again 768 make obj 769 make depend && make 770 771Failsafe rebuild of the entire tree: 772^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 773If you really want to make sure the source tree is clean and 774ready for a build try the following. Note that sourcing /etc/mk.conf 775(a make(1) Makefile) in this manner is not right, and will not work 776for anyone who uses any make(1) features in /etc/mk.conf. 777 778---cut here--- 779#!/bin/sh 780. /etc/mk.conf 781 782if [ -z $NETBSDSRCDIR ] ; then 783 NETBSDSRCDIR=/usr/src 784fi 785if [ \! -d $NETBSDSRCDIR ] ; then 786 echo Unable to find sources 787 exit 1 788fi 789find $NETBSDSRCDIR -name \*.o -o -name obj.\* -o -name obj -exec rm \{\} \; 790 791if [ -z $BSDOBJDIR ] ; then 792 BSDOBJDIR=/usr/obj 793fi 794if [ -d $BSDOBJDIR ] ; then 795 rm -rf $BSDOBJDIR 796fi 797 798cd $NETBSDSRCDIR && make cleandir 799 800---cut here--- 801 802Critical utilities: 803^^^^^^^^^^^^^^^^^^^ 804 usr.bin/compile_et 805 usr.bin/make 806 usr.bin/yacc 807 usr.bin/lex 808 usr.bin/xlint 809 usr.bin/config 810 811Other problems and possible solutions: 812^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 813Symptom:Complaints involving a Makefile. 814Fix: Rebuild usr.bin/make: 815 cd usr.bin/make && make && make install 816 Or, a failsafe method if that doesn't work: 817 cd usr.bin/make && cc *.c */*.c -I . -o make && mv make /usr/bin 818 819Fix: Make sure .mk files are up to date. 820 cd share/mk && make install 821 822Symptom:Kernel `config' fails to configure any kernel, including GENERIC. 823Fix: Rebuild usr.bin/config 824 825Symptom: 826Fix: Rebuild usr.bin/yacc 827 828Symptom: 829Fix: Rebuild usr.bin/lex 830 831Symptom: 832Fix: rm /usr/lib/libbfd.a 833 834Symptom:Obsolete intermediate files are used during compilation 835Fix: Try the following sequence of commands in the directory in question. 836 make cleandir; rm `make print-objdir`; make cleandir; make obj 837 (If you built the tree without "make obj" in the past, obsolete files 838 may remain. The command tries to clean everything up) 839 840Symptom:.../sysinst/run.c:xx: warning: initialization from incompatible 841 pointer type 842Fix: Rebuild and install usr.bin/menuc 843 844Symptom:mklocale not found during build in share/locale/ctype 845Fix: Build and install usr.bin/mklocale 846 847Symptom:undefined reference to `__assert13' or `__unsetenv13' 848Fix: Rebuild and install lib/libc 849 850Symptom:usr.bin/config fails to build. 851Fix: Try building with -DMAKE_BOOTSTRAP added to CFLAGS in Makefile. 852 853Symptom:undefined reference to `getprogname' or `setprogname' 854Fix: Rebuild and install lib/libc 855 856Symptom:lint does not understand the '-X' option 857Fix: May need to build & install libs with NOLINT=1 before rebuilding lint 858 859Symptom:Update build fails in src/tools/gcc complaining that a variable 860 (e.g. CPPFLAGS) has changed since the previous run. 861Fix: Run "nbmake-${ARCH} clean" in src/tools/gcc or do a clean build. 862 863Symptom:cvs [update aborted]: cannot open directory /cvsroot/src/...: 864 No such file or directory. 865Cause: If a directory is created by mistake, then it is sometimes 866 deleted from the CVS repository using administrative commands 867 that bypass the normal cvs access controls. If your cvs working tree 868 contains references to a directory that has been deleted on the 869 server in this way, then "cvs update" reports this error. 870Fix: Recursively delete the affected directory from your working tree 871 and try the update again. 872