UPDATING revision 1.58
11.58Slukem$NetBSD: UPDATING,v 1.58 2002/04/26 15:54:41 lukem Exp $ 21.1Sabs 31.1SabsThis file is intended to be a brief introduction to the build 41.1Sabsprocess and a reference on what to do if something doesn't work. 51.1Sabs 61.1SabsFor a more detailed description see Makefile. 71.1Sabs 81.1SabsRecent changes: 91.1Sabs^^^^^^^^^^^^^^^ 101.56Slukem 111.56Slukem20020320: 121.56Slukem <bsd.lib.mk> needs a new install(1) for it's "-a cmd" support. 131.57Sitojun build and install at usr.bin/xinstall before the build. 141.56Slukem 151.55Sitojun20020319: 161.55Sitojun raw IPv6 socket now makes strict checking for sa_family and sa_len 171.55Sitojun on send(2) operation. be sure to have sbin/rtsol and usr.sbin/rtsold 181.55Sitojun newer than November 2001 when you upgrade the kernel. 191.55Sitojun 201.54Sitojun20020311: 211.54Sitojun ssh configuration files were moved from /etc to /etc/ssh. Beware 221.54Sitojun if you restart your machine from remote. Note that sshd.conf needs 231.54Sitojun to be changed (due to the use of "/etc" inside). 241.54Sitojun 251.54Sitojun20020223: 261.53Smatt Users of the VAX port will need to rebuild and install gas 271.53Smatt so it deal with the now present register prefix used in all 281.53Smatt the VAX assembly files. 291.53Smatt 301.50Sitojun20020118: 311.50Sitojun 321.50Sitojun ntpd user/group has been added. Need to hand add this in or builds 331.50Sitojun will break as mtree aborts early. 341.50Sitojun 351.50Sitojun Add the following into /etc/group: 361.50Sitojun 371.50Sitojun ntpd:*:15: 381.50Sitojun 391.50Sitojun and the following to /etc/master.passwd (via vipw): 401.50Sitojun 411.50Sitojun ntpd:*:15:15::0:0:Ntpd pseudo-user:/var/chroot/ntpd:/sbin/nologin 421.50Sitojun 431.49Sjmc20011207: 441.49Sjmc 451.49Sjmc If you're attempting to build a snapshot on sparc64 and are getting 461.49Sjmc reloc errors from the toolchain groff binary this means your native 471.49Sjmc toolchain has some broken C++ bits. 481.49Sjmc 491.49Sjmc To fix: 501.49Sjmc 511.49Sjmc Build a new toolchain (i.e. build.sh -t) 521.49Sjmc Use the new toolchain to build and install natively (i.e. /usr/lib) 531.49Sjmc 541.49Sjmc gnu/lib/libgcc 551.51Spooka gnu/lib/libstdc++ 561.49Sjmc 571.49Sjmc After this a snapshot will be able to be built. 581.49Sjmc 591.47Sjmc20011201: 601.47Sjmc In order for a sparc64 build to work you must have a working awk. If 611.47Sjmc you've built and installed a system with the new toolchain up to this 621.52Swiz point you do not have a working awk as its ability to do floating 631.47Sjmc point is broken. 641.47Sjmc 651.47Sjmc To build: 661.47Sjmc 671.47Sjmc remake and install gnu/lib/libgcc 681.47Sjmc remake and install gnu/usr.bin/gawk into /usr/bin (make sure it links 691.48Sjmc against the new libgcc.a) 701.47Sjmc 711.46Sthorpej20011128: 721.46Sthorpej Kernel config information was changed to use defflag in 731.46Sthorpej the various "files" files. Bug fixes to config(8) are 741.46Sthorpej required in order for this to work properly. Make sure 751.46Sthorpej to build and install in usr.sbin/config before attempting 761.46Sthorpej to build a new kernel. 771.46Sthorpej 781.45Syamt20011030: 791.45Syamt libc/locale/wcstod.c now needs new lint(1). Update lint(1) 801.45Syamt before building libc. 811.43Smason 821.44Stv20011029: 831.44Stv The new document BUILDING.mdoc (view with nroff | more, or 841.44Stv see pre-generated .txt and .html versions) describes the build 851.44Stv procedure in great detail. BUILDING, and the USE_NEW_TOOLCHAIN 861.44Stv build process, are intended in the long run to replace this 871.44Stv manual update log. 881.44Stv 891.44Stv Users building a USE_NEW_TOOLCHAIN system should read the 901.44Stv BUILDING document for caveats. Generally, BUILDING supersedes 911.44Stv UPDATING for these systems, as tool updating is taken care of 921.44Stv by the new build system. 931.42Sperry 941.42Sperry20011028: 951.42Sperry src/etc/Makefile now needs install to be able to handle 961.42Sperry symlinks that point to nowhere. A bug in install that 971.42Sperry prevented this was corrected. 981.42Sperry 991.42Sperry Solution: update and reinstall usr.bin/xinstall 1001.42Sperry Better Solution: Use the new toolchain and it will just work 1011.42Sperry for you. 1021.40Slukem 1031.40Slukem20011006: 1041.40Slukem /etc/mtree/NetBSD.dist has been updated to take advantage of 1051.40Slukem absolute path support added to mtree(8). Older mtree(8)s don't 1061.40Slukem understand the format. 1071.40Slukem 1081.40Slukem Solution: update and reinstall usr.sbin/mtree 1091.39Sjmc 1101.39Sjmc20011004: 1111.39Sjmc Crunchgen has been updated to work via reach-over makefiles. Updating 1121.39Sjmc is suggested before running a snapshot build 1131.36Stv 1141.35Sthorpej20010915: 1151.35Sthorpej The new "ubcperf" code committed by Chuck Silvers removed 1161.35Sthorpej a header file, uvm/uvm_vnode.h. There may be stale .depend 1171.35Sthorpej files that still reference this file. 1181.35Sthorpej 1191.35Sthorpej Solution: "make cleandir && make dependall" in affected 1201.35Sthorpej directories. 1211.31Senami 1221.31Senami20010803: 1231.31Senami grep.info is now built from grep.texi using makeinfo. Since it 1241.31Senami requires makeinfo v4.0, you need to install new texinfo before 1251.31Senami building gnu/usr.bin/grep. To install new texinfo, please follow 1261.31Senami the instruction described in 20010726 entry. 1271.30Senami 1281.30Senami20010803: 1291.41Swiz (i386 only): i386 kernel now uses new instructions like 1301.41Swiz `fxsave' which old gas doesn't understand. To build the 1311.52Swiz kernel successfully, you need to build and install new gas 1321.41Swiz (gnu/usr.bin/gas.new), or (temporarily) comment out 1331.41Swiz "options I686_CPU" from your kernel configuration until you 1341.41Swiz rebuilt your userland (and got a new gas). 1351.29Sbjh21 1361.29Sbjh2120010731: 1371.29Sbjh21 Bootloader update on ELF platforms. DDB in kernels from before 1381.29Sbjh21 this will be unable to read symbol tables provided by newer 1391.29Sbjh21 bootloaders. 1401.27Sassar 1411.27Sassar20010726: 1421.27Sassar Texinfo was updated to 4.0. To avoid failures when trying to 1431.28Sassar build the included texinfo files, do: 1441.28Sassar 1451.28Sassar cd src/gnu/usr.bin/texinfo 1461.28Sassar make MKINFO=no dependall install 1471.25Sthorpej 1481.25Sthorpej20010718: 1491.25Sthorpej Enabled correct .init/.fini processing in crt0. The way this 1501.25Sthorpej was done was to change a -I directive to cc(1), which means 1511.25Sthorpej make(1) will have a stale dependency (it will be checking the 1521.25Sthorpej timestamp on the wrong "dot_init.h"). 1531.25Sthorpej 1541.25Sthorpej The symptom you will see is that new programs die with SIGSEGV 1551.25Sthorpej if you have a stale dependency. 1561.25Sthorpej 1571.25Sthorpej Solution: "make cleandir" in both lib/csu and libexec/ld.elf_so 1581.25Sthorpej before starting your build. 1591.26Sthorpej 1601.26Sthorpej20010628: 1611.26Sthorpej A construct was added to uvm_page.h that uncovered a bug 1621.26Sthorpej in lint(1). If you get a warning/error about a non-portable 1631.26Sthorpej bitfield, update your lint(1) before proceeding. 1641.21Sjmc 1651.21Sjmc20010226: 1661.22Sjmc Added named user/group to system. Need to hand add this in or builds 1671.21Sjmc will break as mtree aborts early. 1681.21Sjmc 1691.21Sjmc To work around add by hand: 1701.21Sjmc 1711.21Sjmc named:*:14: 1721.21Sjmc 1731.22Sjmc to /etc/group and add: 1741.22Sjmc 1751.22Sjmc named:*:14:14::0:0:Named pseudo-user:/var/named:/sbin/nologin 1761.22Sjmc 1771.22Sjmc to master.passwd (use vipw for instance if doing by hand). 1781.22Sjmc 1791.22Sjmc Now a make build should progress. 1801.18Sjmc 1811.18Sjmc20010219: 1821.52Swiz get/setprogname() added. Any hostprogs that may use this will need 1831.20Sjmc to be bootstrapped manually until the host system is current. 1841.18Sjmc 1851.18Sjmc Known problems: sys/arch/macppc/stand/fixcoff 1861.19Scgd usr.sbin/config (adding -DMAKE_BOOTSTRAP to 1871.19Scgd CFLAGS and rebuilding should work) 1881.20Sjmc usr.sbin/mdsetimage - Build a static copy if 1891.20Sjmc building a snapshot before fully bootstrapped. 1901.15Schristos 1911.15Schristos20010204: 1921.15Schristos prepare the code to compile with stricter gcc flags. in 1931.15Schristos particular start eliminating redundant declarations. Yacc 1941.15Schristos needs to be installed before make build. 1951.10Schristos 1961.10Schristos20010114: 1971.10Schristos introduce .if commands(target) in make(1). You need to 1981.10Schristos bring everything up-to-date first, then without installing 1991.23Stron anything make and install in usr.bin/make, then proceed 2001.10Schristos with make build. 2011.9Ssommerfe 2021.9Ssommerfe20010101: 2031.9Ssommerfe bsd.subdir.mk committed 20001230 had a bug which caused 2041.9Ssommerfe afterinstall targets to run too soon; update again. 2051.8Ssommerfe 2061.8Ssommerfe20001230: 2071.8Ssommerfe New share/mk files needed to support .WAIT in SUBDIR variables. 2081.8Ssommerfe If you get make errors, 2091.8Ssommerfe (cd share/mk; make install) 2101.8Ssommerfe Also, PRINTOBJDIR has changed and is now used more heavily. 2111.6Sad 2121.6Sad20001019: 2131.7Sad The `ca' device driver has been replaced by `ld'; although the 2141.6Sad major and minor numbers haven't changed, you should update your /dev 2151.6Sad directory. 2161.1Sabs 2171.4Sitojun20000929: 2181.4Sitojun The following make directives are obsoleted. 2191.4Sitojun MKCRYPTO_RSA NOCRYPTO_RSA NOCRYPTO_RC5 NOCRYPTO_IDEA 2201.4Sitojun By default, RSA is built into libcrypto. IDEA and RC5 will not be 2211.16Swiz built into libcrypto. By using MKCRYPTO_{RC5,IDEA}, you can build 2221.4Sitojun additional library libcrypto_{idea,rc5}. 2231.1Sabs 2241.1Sabs 2251.1SabsHints for a more successful build: 2261.1Sabs^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2271.2Smrg Build a new kernel first: 2281.2Smrg This makes sure that any new system calls or features 2291.2Smrg expected by the new userland will be present. This 2301.2Smrg helps to avoid critical errors when upgrading. 2311.1Sabs Use object directories: 2321.1Sabs This helps to keep stale object 2331.1Sabs files from polluting the build if a Makefile "forgets" 2341.1Sabs about one. It also makes it easier to clean up after 2351.1Sabs a build. It's also necessary if you want to use the 2361.1Sabs same source tree for multiple machines. 2371.1Sabs To use object directories: 2381.1Sabs a) cd /usr/src ; make cleandir 2391.2Smrg b) Add "OBJMACHINE=yes" to /etc/mk.conf 2401.2Smrg c) Add "MKOBJDIRS=yes" to /etc/mk.conf 2411.1Sabs d) cd /usr/src ; make build 2421.2Smrg Note that running "make obj" in a directory will create 2431.2Smrg in obj.$MACHINE directory. 2441.1Sabs Build to a DESTDIR: 2451.1Sabs This helps to keep old 2461.1Sabs installed files (especially libraries) from interfering 2471.1Sabs with the new build. 2481.1Sabs To build to a DESTDIR, set the DESTDIR environment 2491.2Smrg variable before running make build. It should be set to 2501.2Smrg the pathname of an initially empty directory. 2511.1Sabs Problems: you might need to update critical utilities 2521.1Sabs without using DESTDIR since nothing is executed 2531.1Sabs from what is installed in DESTDIR. 2541.1Sabs (See critical utils, below) 2551.1Sabs Build often: 2561.1Sabs This keeps critical utilities current enough to not choke 2571.1Sabs on any other part of the source tree that depends on up to 2581.1Sabs date functionality. 2591.1Sabs 2601.1SabsWhat to do if things don't work: 2611.1Sabs^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2621.1SabsWhen things don't work there is usually a few things that commonly 2631.1Sabsshould be done. 2641.1Sabs 1) make includes 2651.1Sabs This should be done automatically by make build. 2661.1Sabs 2) cd share/mk && make install 2671.1Sabs Again, automatically done by make build. 2681.1Sabs 2691.1SabsFailsafe rebuild of a small part of the tree: 2701.1Sabs^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2711.1SabsTo make sure you rebuild something correctly you want to do 2721.1Sabssomething like the following: 2731.1Sabs 1) Make sure the includes and .mk files are up to date. 2741.1Sabs 2) Make sure any program used to build the particular 2751.1Sabs utility is up to date. (yacc, lex, etc...) 2761.1Sabs 3) cd ...path/to/util... 2771.1Sabs make cleandir 2781.1Sabs rm ...all obj directories... 2791.1Sabs make cleandir # yes, again 2801.1Sabs make obj 2811.1Sabs make depend && make 2821.1Sabs 2831.1SabsFailsafe rebuild of the entire tree: 2841.1Sabs^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2851.1SabsIf you really want to make sure the source tree is clean and 2861.2Smrgready for a build try the following. Note that sourcing /etc/mk.conf 2871.2Smrg(a make(1) Makefile) in this manner is not right, and will not work 2881.2Smrgfor anyone who uses any make(1) features in /etc/mk.conf. 2891.1Sabs 2901.1Sabs---cut here--- 2911.1Sabs#!/bin/sh 2921.1Sabs. /etc/mk.conf 2931.1Sabs 2941.58Slukemif [ -z $NETBSDSRCDIR ] ; then 2951.58Slukem NETBSDSRCDIR=/usr/src 2961.1Sabsfi 2971.58Slukemif [ \! -d $NETBSDSRCDIR ] ; then 2981.1Sabs echo Unable to find sources 2991.1Sabs exit 1 3001.1Sabsfi 3011.58Slukemfind $NETBSDSRCDIR -name \*.o -o -name obj.\* -o -name obj -exec rm \{\} \; 3021.1Sabs 3031.1Sabsif [ -z $BSDOBJDIR ] ; then 3041.1Sabs BSDOBJDIR=/usr/obj 3051.1Sabsfi 3061.1Sabsif [ -d $BSDOBJDIR ] ; then 3071.1Sabs rm -rf $BSDOBJDIR 3081.1Sabsfi 3091.1Sabs 3101.58Slukemcd $NETBSDSRCDIR && make cleandir 3111.1Sabs 3121.1Sabs---cut here--- 3131.1Sabs 3141.1SabsCritical utilities: 3151.1Sabs^^^^^^^^^^^^^^^^^^^ 3161.1Sabs gnu/usr.bin/egcs 3171.3Sitojun usr.bin/compile_et 3181.1Sabs usr.bin/make 3191.1Sabs usr.bin/yacc 3201.1Sabs usr.bin/lex 3211.11Slukem usr.bin/xlint 3221.2Smrg usr.sbin/config 3231.1Sabs 3241.34SsimonbOther problems and possible solutions: 3251.1Sabs^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 3261.1SabsSymptom:Unreasonable compiler errors. 3271.1SabsFix: Rebuild gnu/usr.bin/egcs 3281.1Sabs 3291.1SabsSymptom:Complaints involving a Makefile. 3301.17SerhFix: Rebuild usr.bin/make: 3311.17Serh cd usr.bin/make && make && make install 3321.17Serh Or, a failsafe method if that doesn't work: 3331.17Serh cd usr.bin/make && cc *.c */*.c -I . -o make && mv make /usr/bin 3341.17Serh 3351.1SabsFix: Make sure .mk files are up to date. 3361.1Sabs cd share/mk && make install 3371.2Smrg 3381.2SmrgSymptom:Kernel `config' fails to configure any kernel, including GENERIC. 3391.2SmrgFix: Rebuild usr.sbin/config 3401.1Sabs 3411.1SabsSymptom: 3421.1SabsFix: Rebuild usr.bin/yacc 3431.1Sabs 3441.1SabsSymptom: 3451.1SabsFix: Rebuild usr.bin/lex 3461.1Sabs 3471.1SabsSymptom: 3481.1SabsFix: rm /usr/lib/libbfd.a 3491.4Sitojun 3501.4SitojunSymptom:Obsolete intermediate files are used during compilation 3511.4SitojunFix: Try the following sequence of commands in the directory in question. 3521.4Sitojun make cleandir; rm `make print-objdir`; make cleandir; make obj 3531.4Sitojun (If you built the tree without "make obj" in the past, obsolete files 3541.4Sitojun may remain. The command tries to clean everything up) 3551.5Swiz 3561.5SwizSymptom:.../sysinst/run.c:xx: warning: initialization from incompatible pointer type 3571.5SwizFix: Rebuild and install usr.bin/menuc 3581.12Sitojun 3591.12SitojunSymptom:mklocale not found during build in share/locale/ctype 3601.12SitojunFix: Build and install usr.bin/mklocale 3611.13Sdogcow 3621.13SdogcowSymptom:undefined reference to `__assert13' 3631.13SdogcowFix: Rebuild and install lib/libc 3641.13Sdogcow 3651.19ScgdSymptom:usr.sbin/config fails to build. 3661.19ScgdFix: Try building with -DMAKE_BOOTSTRAP added to CFLAGS in Makefile. 3671.13Sdogcow 3681.19ScgdSymptom:undefined reference to `getprogname' or `setprogname' 3691.19ScgdFix: Rebuild and install lib/libc 3701.24Sabs 3711.24SabsSymptom:lint does not understand the '-X' option 3721.24SabsFix: May need to build & install libs with NOLINT=1 before rebuilding lint 373