UPDATING revision 1.114
1$NetBSD: UPDATING,v 1.114 2004/03/26 17:48:13 jmc Exp $ 2 3This file is intended to be a brief introduction to the build 4process and a reference on what to do if something doesn't work. 5 6For a more detailed description see Makefile. 7 8Recent changes: 9^^^^^^^^^^^^^^^ 10 1120040326: 12 13 The method by which athhal-elf.o gets pulled into i386 kernel builds 14 has been changed. The file is now stored as a uuencode file in CVS 15 and the generated Makefile will use the new .uue rules from bsd.file.mk 16 to build it. 17 18 This means you must have the latest bsd.files.mk installed when 19 building a kernel without USETOOLS=yes. 20 2120040318: 22 A bug in the cgd(4) blowfish code was corrected, without 23 provision of backwards compatibility, after several public 24 notices over several months. Users of cgd with blowfish cipher 25 ONLY must dump their data before updating their kernels, and 26 recreate cgd's and restore data using the new kernel. See 27 (recent message to current-users, URL when mail-index has updated) 28 2920040313: 30 On acorn32, the opms and qms drivers have been withdrawn, and 31 the old wsqms driver is now called qms. Kernel config files 32 will need updating. See the ones in sys/arch/acorn32/conf 33 for examples. 34 3520040125: 36 On acorn32, the beep and sysbeep devices are no longer 37 needed, and will need to be deleted from kernel configuration 38 files. 39 4020040109: 41 Compatibility for old ffs superblock layouts has been 42 added, and the restrictive fsck checks have been reenabled 43 when using those layouts. If you have been using -current 44 since 20030402, you may find that fsck again signals fatal 45 superblock mismatches. To repair, make sure you have 46 an updated fsck_ffs and then you can use fsck_ffs -b 16 -c 4 47 to complete the filesystem upgrade. A message has 48 been added to the kernel which should detect this problem. 49 See the following discussion for more information: 50 http://mail-index.NetBSD.org/current-users/2004/01/11/0022.html 51 5220031203: 53 New binutils builds may fail due to old dependencies. 54 It's necessary to "make cleandir" to ensure that 55 the dependencies will be rebuilt correctly. 56 5720031111: 58 A newer mkdep is needed. Error noting that is 59 cc: Ambiguous abbreviation -- 60 6120031008: 62 /usr/include/sys/disklabel_mbr.h was removed. 63 It's necessary to "make cleandir" to ensure that 64 the dependencies will be rebuilt correctly. 65 6620031007: 67 A sign exension bug was fixed which set all the high bits 68 of our newly expanded ffs fs_flags. This should only 69 affect users who installed or upgraded in September of 2003. 70 A small utility program was posted to tech-kern which 71 should fix this problem, and a warning message was added 72 to the kernel which should discover and warn about it. See 73 http://mail-index.NetBSD.org/tech-kern/2003/10/07/0005.html 74 7520030906: 76 With the addition of siginfo support the old signal trampoline 77 code has been deprecated to COMPAT_16. Make sure that your running 78 kernel has COMPAT_16 enabled before building userland. 79 8020030801: 81 With the new openssl, there is some header and library shuffling. 82 rm -f /usr/include/des.h /usr/include/kerberosIV/* /lib/libdes* \ 83 /usr/lib/libdes* before building. 84 8520030703: 86 Texinfo was updated to 4.6. To avoid failures when trying to 87 build the included texinfo files, do: 88 89 cd src/gnu/usr.bin/texinfo 90 make MKINFO=no dependall install 91 9220030630: 93 Groff was updated to 1.19; it's probably necessary to do 94 cd share/mk && make install 95 cd src/gnu/usr.bin/groff 96 make MKMAN=no dependall install 97 (untested). 98 9920030516: 100 Due to bugs in the export handling code, invalid export lines 101 were accepted before and caused the kernel to panic when 102 mountd got restarted because it freed memory that had already 103 been freed. This has been fixed and the kernel checks 104 export addresses very strictly. If you upgrade your kernel, 105 make sure you also upgrade mountd, because if your export 106 file contains lines with an old inet4 address syntax (i.e. 107 a.b.c or a.b or a), they will get rejected by the new kernel. 108 10920030402: 110 The superblock layout for FFS was changed. If you have 1.6 111 fsck binaries, they will signal a fatal superblock mismatch 112 with the first alternate, because they compare too many 113 fields (even ones that aren't useful). If possible, upgrade 114 your fsck_ffs binary before using a new kernel. 115 None of this signals actual filesystem damage. 116 11720030324: 118 sendmail version 8.12.8 was imported. Since sendmail is 119 now setgid to the smmsp group, and runs in "collection" 120 mode for most common activities, there is a new config 121 file called submit.cf that needs to live in /etc/mail. 122 The generic submit.cf sample in /usr/share/sendmail/cf 123 is named netbsd-msp.cf. Upgrading your regular sendmail 124 configuration file is also strongly advised. 125 126 See the section named "MESSAGE SUBMISSION PROGRAM" in 127 the updated /usr/share/sendmail/README file for more 128 information. 129 13020030117: 131 Texinfo was updated to 4.3. To avoid failures when trying to 132 build the included texinfo files, do: 133 134 cd src/gnu/usr.bin/texinfo 135 make MKINFO=no dependall install 136 13720021223: 138 The METALOG format changed slightly, to remove the leading 139 "${DESTDIR}" from path names. 140 This only affects people building with UNPRIVED. 141 For complete safety, remove the DESTDIR entirely and 142 update tools/mtree, before running make build. 143 14420021219: 145 CVS repository layout was changed. See the following for details 146 if you are using (anonymous) cvs to update your tree. 147 148 http://mail-index.NetBSD.org/netbsd-announce/2002/12/19/0000.html 149 15020021219: 151 install(1) had a '-N dbdir' option added, to specify an 152 alternate location to look up users & groups (instead 153 of the host system passwd(5) and group(5) databases). 154 155 The build system was modified to take advantage of 156 this option (using ${NETBSDSRCDIR}/etc), so if you 157 use USETOOLS==no, you may have to rebuild and 158 reinstall usr.bin/xinstall first. 159 16020021130: 161 fparseln(3) moved from libutil to libc. 162 If building to DESTDIR=/, reinstall the includes 163 and rebuild libc: 164 make includes 165 make do-lib-libc 166 If using build.sh, "cd tools/compat && make clean" 167 before rebuilding the tools. 168 16920021126: 170 The mk.conf(5) variable SYS_INCLUDE has been deprecated, 171 including the optional "SYS_INCLUDE=symlinks" support. 172 All header files, including <sys/*.h> are copied into 173 /usr/include. 174 17520021121: 176 The C run-time support files crtbegin.o and crtend.o 177 (and their companions crtbeginS.o and crtendS.o) were 178 split up, with new crti.o and crtn.o files resulting. 179 This means that libtool needs to be rebuilt once the 180 new libraries are installed. The process of rebuilding 181 libtool will cause it to automatically notice the new 182 required files, but it *must* be rebuilt in order to 183 do this. 184 185 An out-of-date libtool will result in shared libraries 186 which lack _init() and _fini() routines, which means that 187 their global contructors/destructors will not be invoked. 188 18920021121: 190 A bug related to how ARM ELF objects were tagged has been 191 corrected. 192 193 NetBSD ARM ELF uses the soft-VFP floating point model by 194 default. However, the assembler lacked support for marking 195 objects as using the VFP floating point format, and the 196 compiler was not properly passing the flag indicating "soft-VFP" 197 to the assembler. 198 199 Unfortunately, this means that the linker will now consider 200 old (i.e. not marked "softvfp") NetBSD ARM ELF objects to be 201 incompatible with new (properly marked) objects. 202 203 The problem will only manifest itself if you attempt to compile 204 a new program using the fixed toolchain, and link that program 205 against old libraries which do not have the proper "softvfp" 206 markings. ALL OF YOUR EXISTING BINARIES AND SHARED LIBRARIES 207 WILL CONTINUE TO WORK PROPERLY. 208 209 The only work-around for the problem is to recompile all of 210 the libraries on the system. The easiest way to do this for 211 system libraries is to install a binary snapshot; they are 212 generally available on releng.NetBSD.org. Any packages you 213 have installed which supply libraries will have to be recompiled 214 if you wish to link new programs against those libraries. 215 216 If you have questions about this matter, please contact 217 port-arm@NetBSD.org. 218 21920021011: 220 Systrace has been improved to support privilege elevation. 221 Updating the kernel requires the userland part of systrace 222 to be rebuilt. 223 22420021010: 225 The config(8) grammar was changed to allow options to register 226 dependencies on attributes, as well as other options. Users 227 must update and reinstall usr.sbin/config before building a new 228 kernel. 229 23020021009: 231 A new attribute dependency syntax was introduced to config(8), 232 which is now used by the SCSI configuration description. Users 233 must update and reinstall usr.sbin/config before building a new 234 kernel. 235 23620021003: 237 Several changes have been made to the autoconfiguration 238 framework. Users must update and reinstall usr.sbin/config 239 before building a new kernel. 240 24120021001: 242 The i386mp branch has been merged. To compile a kernel, users 243 will need to add the option 'cpu* at mainbus?' to their configuration 244 file. Multiprocessor kernels will need 245 ioapic* at mainbus? apid ? 246 options MULTIPROCESSOR 247 options COM_MPLOCK 248 24920020922: 250 MKDYNAMICROOT=yes enabled by default, which means that 251 certain shared libraries are installed into /lib, the shared 252 linker is installed into /libexec, and all programs in /bin 253 and /sbin are dynamically linked. 254 If you do not use "make build", you should ensure that 255 you have the libraries and shared linker in the new locations, 256 with: 257 make do-lib-csu do-lib-libc do-lib do-gnu-lib do-ld.elf_so 258 25920020917: 260 USE_NEW_TOOLCHAIN has been replaced with: 261 - TOOLCHAIN_MISSING -- set to "yes" on platforms for which 262 there is no working in-tree toolchain (hppa, ns32k, sh5, 263 x86_64). 264 - EXTERNAL_TOOLCHAIN -- if defined by the user, points to the 265 root of an external toolchain (e.g. /usr/local/gnu). This 266 enables the cross-build framework even for TOOLCHAIN_MISSING 267 platforms. 268 26920020906: 270 gehenna-devsw has been merged into the trunk. Need to update and 271 reinstall usr.sbin/config before building the kernel. 272 27320020822: 274 Crunched rescue tools (contents of /bin and /sbin, plus others) 275 are now provided in /rescue. 276 277 To ensure that these are built statically linked (no matter 278 what the setting of LDSTATIC is), use a crunchgen(1) built 279 from sources newer than 20020820 (see the next entry). 280 28120020820: 282 crunchgen(1) changed to ensure that the generated program 283 is statically linked. 284 285 Solution: update and reinstall usr.bin/crunch 286 28720020605: 288 smmsp user/group has been added for sendmail. 289 290 Add the following into /etc/group: 291 292 smmsp:*:17: 293 294 and the following to /etc/master.passwd (via vipw): 295 296 smmsp:*:17:17::0:0:Sendmail Message Submission Program:/nonexistent:/sbin/nologin 297 29820020515: 299 sshd user/group has been added. Need to hand add this in, or sshd 300 will not let you log in (with default, or UsePrivlegeSeparation=yes) 301 302 Add the following into /etc/group: 303 304 sshd:*:16: 305 306 and the following to /etc/master.passwd (via vipw): 307 308 sshd:*:16:16::0:0:& pseudo-user:/var/chroot/sshd:/sbin/nologin 309 310 Also /var/chroot/sshd directory needs to be present (digged as part of 311 the build process). 312 31320020426: 314 NBUILDJOBS obsoleted in favor of just using -j. 315 31620020426: 317 etc/postinstall added, which performs various checks for 318 configuration file updates and changes, and can fix most of 319 the problems identified. 320 This should make it much easier to upgrade a system's 321 configuration from earlier systems (as far back as NetBSD 1.5). 322 32320020320: 324 <bsd.lib.mk> needs a new install(1) for its "-a cmd" support. 325 Build and install at usr.bin/xinstall before the build. 326 32720020319: 328 Raw IPv6 socket now makes strict checking for sa_family and sa_len 329 on send(2) operation. Be sure to have sbin/rtsol and usr.sbin/rtsold 330 newer than November 2001 when you upgrade the kernel. 331 33220020311: 333 ssh configuration files were moved from /etc to /etc/ssh. Beware 334 if you restart your machine from remote. Note that sshd.conf needs 335 to be changed (due to the use of "/etc" inside). 336 33720020223: 338 Users of the VAX port will need to rebuild and install gas 339 so it deal with the now present register prefix used in all 340 the VAX assembly files. 341 34220020118: 343 ntpd user/group has been added. Need to hand add this in or builds 344 will break as mtree aborts early. 345 346 Add the following into /etc/group: 347 348 ntpd:*:15: 349 350 and the following to /etc/master.passwd (via vipw): 351 352 ntpd:*:15:15::0:0:Ntpd pseudo-user:/var/chroot/ntpd:/sbin/nologin 353 35420011207: 355 If you're attempting to build a snapshot on sparc64 and are getting 356 reloc errors from the toolchain groff binary this means your native 357 toolchain has some broken C++ bits. 358 359 To fix: 360 361 Build a new toolchain (i.e. build.sh -t) 362 Use the new toolchain to build and install natively (i.e. /usr/lib) 363 364 gnu/lib/libgcc 365 gnu/lib/libstdc++ 366 367 After this a snapshot will be able to be built. 368 36920011201: 370 In order for a sparc64 build to work you must have a working awk. If 371 you've built and installed a system with the new toolchain up to this 372 point you do not have a working awk as its ability to do floating 373 point is broken. 374 375 To build: 376 377 remake and install gnu/lib/libgcc 378 remake and install gnu/usr.bin/gawk into /usr/bin (make sure it links 379 against the new libgcc.a) 380 38120011128: 382 Kernel config information was changed to use defflag in 383 the various "files" files. Bug fixes to config(8) are 384 required in order for this to work properly. Make sure 385 to build and install in usr.sbin/config before attempting 386 to build a new kernel. 387 38820011030: 389 libc/locale/wcstod.c now needs new lint(1). Update lint(1) 390 before building libc. 391 39220011029: 393 The new document BUILDING.mdoc (view with nroff | more, or 394 see pre-generated .txt and .html versions) describes the build 395 procedure in great detail. BUILDING, and the USE_NEW_TOOLCHAIN 396 build process, are intended in the long run to replace this 397 manual update log. 398 399 Users building a USE_NEW_TOOLCHAIN system should read the 400 BUILDING document for caveats. Generally, BUILDING supersedes 401 UPDATING for these systems, as tool updating is taken care of 402 by the new build system. 403 40420011028: 405 src/etc/Makefile now needs install to be able to handle 406 symlinks that point to nowhere. A bug in install that 407 prevented this was corrected. 408 409 Solution: update and reinstall usr.bin/xinstall 410 Better Solution: Use the new toolchain and it will just work 411 for you. 412 41320011006: 414 /etc/mtree/NetBSD.dist has been updated to take advantage of 415 absolute path support added to mtree(8). Older mtree(8)s don't 416 understand the format. 417 418 Solution: update and reinstall usr.sbin/mtree 419 42020011004: 421 Crunchgen has been updated to work via reach-over makefiles. Updating 422 is suggested before running a snapshot build 423 42420010915: 425 The new "ubcperf" code committed by Chuck Silvers removed 426 a header file, uvm/uvm_vnode.h. There may be stale .depend 427 files that still reference this file. 428 429 Solution: "make cleandir && make dependall" in affected 430 directories. 431 43220010803: 433 grep.info is now built from grep.texi using makeinfo. Since it 434 requires makeinfo v4.0, you need to install new texinfo before 435 building gnu/usr.bin/grep. To install new texinfo, please follow 436 the instruction described in 20010726 entry. 437 43820010803: 439 (i386 only): i386 kernel now uses new instructions like 440 `fxsave' which old gas doesn't understand. To build the 441 kernel successfully, you need to build and install a new toolchain, 442 (i.e., build.sh -t) or (temporarily) comment out "options I686_CPU" 443 from your kernel configuration until you rebuild your userland. 444 See 20011029 above and BUILDING file in this directory for more information. 445 [updated 20020630 since i386 gas moved when USE_NEW_TOOLCHAIN enabled] 446 44720010731: 448 Bootloader update on ELF platforms. DDB in kernels from before 449 this will be unable to read symbol tables provided by newer 450 bootloaders. 451 45220010726: 453 Texinfo was updated to 4.0. To avoid failures when trying to 454 build the included texinfo files, do: 455 456 cd src/gnu/usr.bin/texinfo 457 make MKINFO=no dependall install 458 45920010718: 460 Enabled correct .init/.fini processing in crt0. The way this 461 was done was to change a -I directive to cc(1), which means 462 make(1) will have a stale dependency (it will be checking the 463 timestamp on the wrong "dot_init.h"). 464 465 The symptom you will see is that new programs die with SIGSEGV 466 if you have a stale dependency. 467 468 Solution: "make cleandir" in both lib/csu and libexec/ld.elf_so 469 before starting your build. 470 47120010628: 472 A construct was added to uvm_page.h that uncovered a bug 473 in lint(1). If you get a warning/error about a non-portable 474 bitfield, update your lint(1) before proceeding. 475 47620010226: 477 Added named user/group to system. Need to hand add this in or builds 478 will break as mtree aborts early. 479 480 To work around add by hand: 481 482 named:*:14: 483 484 to /etc/group and add: 485 486 named:*:14:14::0:0:Named pseudo-user:/var/named:/sbin/nologin 487 488 to master.passwd (use vipw for instance if doing by hand). 489 490 Now a make build should progress. 491 49220010219: 493 get/setprogname() added. Any hostprogs that may use this will need 494 to be bootstrapped manually until the host system is current. 495 496 Known problems: sys/arch/macppc/stand/fixcoff 497 usr.sbin/config (adding -DMAKE_BOOTSTRAP to 498 CFLAGS and rebuilding should work) 499 usr.sbin/mdsetimage - Build a static copy if 500 building a snapshot before fully bootstrapped. 501 50220010204: 503 prepare the code to compile with stricter gcc flags. in 504 particular start eliminating redundant declarations. Yacc 505 needs to be installed before make build. 506 50720010114: 508 introduce .if commands(target) in make(1). You need to 509 bring everything up-to-date first, then without installing 510 anything make and install in usr.bin/make, then proceed 511 with make build. 512 51320010101: 514 bsd.subdir.mk committed 20001230 had a bug which caused 515 afterinstall targets to run too soon; update again. 516 51720001230: 518 New share/mk files needed to support .WAIT in SUBDIR variables. 519 If you get make errors, 520 (cd share/mk; make install) 521 Also, PRINTOBJDIR has changed and is now used more heavily. 522 52320001019: 524 The `ca' device driver has been replaced by `ld'; although the 525 major and minor numbers haven't changed, you should update your /dev 526 directory. 527 52820000929: 529 The following make directives are obsoleted. 530 MKCRYPTO_RSA NOCRYPTO_RSA NOCRYPTO_RC5 NOCRYPTO_IDEA 531 By default, RSA is built into libcrypto. IDEA and RC5 will not be 532 built into libcrypto. By using MKCRYPTO_{RC5,IDEA}, you can build 533 additional library libcrypto_{idea,rc5}. 534 535 536Hints for a more successful build: 537^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 538 Build a new kernel first: 539 This makes sure that any new system calls or features 540 expected by the new userland will be present. This 541 helps to avoid critical errors when upgrading. 542 Use object directories: 543 This helps to keep stale object 544 files from polluting the build if a Makefile "forgets" 545 about one. It also makes it easier to clean up after 546 a build. It's also necessary if you want to use the 547 same source tree for multiple machines. 548 To use object directories: 549 a) cd /usr/src ; make cleandir 550 b) Add "OBJMACHINE=yes" to /etc/mk.conf 551 c) Add "MKOBJDIRS=yes" to /etc/mk.conf 552 d) cd /usr/src ; make build 553 Note that running "make obj" in a directory will create 554 in obj.$MACHINE directory. 555 Build to a DESTDIR: 556 This helps to keep old 557 installed files (especially libraries) from interfering 558 with the new build. 559 To build to a DESTDIR, set the DESTDIR environment 560 variable before running make build. It should be set to 561 the pathname of an initially empty directory. 562 Problems: you might need to update critical utilities 563 without using DESTDIR since nothing is executed 564 from what is installed in DESTDIR. 565 (See critical utils, below) 566 Build often: 567 This keeps critical utilities current enough to not choke 568 on any other part of the source tree that depends on up to 569 date functionality. 570 571What to do if things don't work: 572^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 573When things don't work there is usually a few things that commonly 574should be done. 575 1) make includes 576 This should be done automatically by make build. 577 2) cd share/mk && make install 578 Again, automatically done by make build. 579 580Failsafe rebuild of a small part of the tree: 581^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 582To make sure you rebuild something correctly you want to do 583something like the following: 584 1) Make sure the includes and .mk files are up to date. 585 2) Make sure any program used to build the particular 586 utility is up to date. (yacc, lex, etc...) 587 3) cd ...path/to/util... 588 make cleandir 589 rm ...all obj directories... 590 make cleandir # yes, again 591 make obj 592 make depend && make 593 594Failsafe rebuild of the entire tree: 595^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 596If you really want to make sure the source tree is clean and 597ready for a build try the following. Note that sourcing /etc/mk.conf 598(a make(1) Makefile) in this manner is not right, and will not work 599for anyone who uses any make(1) features in /etc/mk.conf. 600 601---cut here--- 602#!/bin/sh 603. /etc/mk.conf 604 605if [ -z $NETBSDSRCDIR ] ; then 606 NETBSDSRCDIR=/usr/src 607fi 608if [ \! -d $NETBSDSRCDIR ] ; then 609 echo Unable to find sources 610 exit 1 611fi 612find $NETBSDSRCDIR -name \*.o -o -name obj.\* -o -name obj -exec rm \{\} \; 613 614if [ -z $BSDOBJDIR ] ; then 615 BSDOBJDIR=/usr/obj 616fi 617if [ -d $BSDOBJDIR ] ; then 618 rm -rf $BSDOBJDIR 619fi 620 621cd $NETBSDSRCDIR && make cleandir 622 623---cut here--- 624 625Critical utilities: 626^^^^^^^^^^^^^^^^^^^ 627 gnu/usr.bin/egcs 628 usr.bin/compile_et 629 usr.bin/make 630 usr.bin/yacc 631 usr.bin/lex 632 usr.bin/xlint 633 usr.sbin/config 634 635Other problems and possible solutions: 636^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 637Symptom:Unreasonable compiler errors. 638Fix: Rebuild gnu/usr.bin/egcs 639 640Symptom:Complaints involving a Makefile. 641Fix: Rebuild usr.bin/make: 642 cd usr.bin/make && make && make install 643 Or, a failsafe method if that doesn't work: 644 cd usr.bin/make && cc *.c */*.c -I . -o make && mv make /usr/bin 645 646Fix: Make sure .mk files are up to date. 647 cd share/mk && make install 648 649Symptom:Kernel `config' fails to configure any kernel, including GENERIC. 650Fix: Rebuild usr.sbin/config 651 652Symptom: 653Fix: Rebuild usr.bin/yacc 654 655Symptom: 656Fix: Rebuild usr.bin/lex 657 658Symptom: 659Fix: rm /usr/lib/libbfd.a 660 661Symptom:Obsolete intermediate files are used during compilation 662Fix: Try the following sequence of commands in the directory in question. 663 make cleandir; rm `make print-objdir`; make cleandir; make obj 664 (If you built the tree without "make obj" in the past, obsolete files 665 may remain. The command tries to clean everything up) 666 667Symptom:.../sysinst/run.c:xx: warning: initialization from incompatible pointer type 668Fix: Rebuild and install usr.bin/menuc 669 670Symptom:mklocale not found during build in share/locale/ctype 671Fix: Build and install usr.bin/mklocale 672 673Symptom:undefined reference to `__assert13' or `__unsetenv13' 674Fix: Rebuild and install lib/libc 675 676Symptom:usr.sbin/config fails to build. 677Fix: Try building with -DMAKE_BOOTSTRAP added to CFLAGS in Makefile. 678 679Symptom:undefined reference to `getprogname' or `setprogname' 680Fix: Rebuild and install lib/libc 681 682Symptom:lint does not understand the '-X' option 683Fix: May need to build & install libs with NOLINT=1 before rebuilding lint 684