UPDATING revision 1.51
11.51Spooka$NetBSD: UPDATING,v 1.51 2002/02/23 11:06:53 pooka 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.50Sitojun20020118: 111.50Sitojun 121.50Sitojun ntpd user/group has been added. Need to hand add this in or builds 131.50Sitojun will break as mtree aborts early. 141.50Sitojun 151.50Sitojun Add the following into /etc/group: 161.50Sitojun 171.50Sitojun ntpd:*:15: 181.50Sitojun 191.50Sitojun and the following to /etc/master.passwd (via vipw): 201.50Sitojun 211.50Sitojun ntpd:*:15:15::0:0:Ntpd pseudo-user:/var/chroot/ntpd:/sbin/nologin 221.50Sitojun 231.49Sjmc20011207: 241.49Sjmc 251.49Sjmc If you're attempting to build a snapshot on sparc64 and are getting 261.49Sjmc reloc errors from the toolchain groff binary this means your native 271.49Sjmc toolchain has some broken C++ bits. 281.49Sjmc 291.49Sjmc To fix: 301.49Sjmc 311.49Sjmc Build a new toolchain (i.e. build.sh -t) 321.49Sjmc Use the new toolchain to build and install natively (i.e. /usr/lib) 331.49Sjmc 341.49Sjmc gnu/lib/libgcc 351.51Spooka gnu/lib/libstdc++ 361.49Sjmc 371.49Sjmc After this a snapshot will be able to be built. 381.49Sjmc 391.47Sjmc20011201: 401.47Sjmc In order for a sparc64 build to work you must have a working awk. If 411.47Sjmc you've built and installed a system with the new toolchain up to this 421.47Sjmc point you do not have a working awk as it's abililty to do floating 431.47Sjmc point is broken. 441.47Sjmc 451.47Sjmc To build: 461.47Sjmc 471.47Sjmc remake and install gnu/lib/libgcc 481.47Sjmc remake and install gnu/usr.bin/gawk into /usr/bin (make sure it links 491.48Sjmc against the new libgcc.a) 501.47Sjmc 511.46Sthorpej20011128: 521.46Sthorpej Kernel config information was changed to use defflag in 531.46Sthorpej the various "files" files. Bug fixes to config(8) are 541.46Sthorpej required in order for this to work properly. Make sure 551.46Sthorpej to build and install in usr.sbin/config before attempting 561.46Sthorpej to build a new kernel. 571.46Sthorpej 581.45Syamt20011030: 591.45Syamt libc/locale/wcstod.c now needs new lint(1). Update lint(1) 601.45Syamt before building libc. 611.43Smason 621.44Stv20011029: 631.44Stv The new document BUILDING.mdoc (view with nroff | more, or 641.44Stv see pre-generated .txt and .html versions) describes the build 651.44Stv procedure in great detail. BUILDING, and the USE_NEW_TOOLCHAIN 661.44Stv build process, are intended in the long run to replace this 671.44Stv manual update log. 681.44Stv 691.44Stv Users building a USE_NEW_TOOLCHAIN system should read the 701.44Stv BUILDING document for caveats. Generally, BUILDING supersedes 711.44Stv UPDATING for these systems, as tool updating is taken care of 721.44Stv by the new build system. 731.42Sperry 741.42Sperry20011028: 751.42Sperry src/etc/Makefile now needs install to be able to handle 761.42Sperry symlinks that point to nowhere. A bug in install that 771.42Sperry prevented this was corrected. 781.42Sperry 791.42Sperry Solution: update and reinstall usr.bin/xinstall 801.42Sperry Better Solution: Use the new toolchain and it will just work 811.42Sperry for you. 821.40Slukem 831.40Slukem20011006: 841.40Slukem /etc/mtree/NetBSD.dist has been updated to take advantage of 851.40Slukem absolute path support added to mtree(8). Older mtree(8)s don't 861.40Slukem understand the format. 871.40Slukem 881.40Slukem Solution: update and reinstall usr.sbin/mtree 891.39Sjmc 901.39Sjmc20011004: 911.39Sjmc Crunchgen has been updated to work via reach-over makefiles. Updating 921.39Sjmc is suggested before running a snapshot build 931.36Stv 941.35Sthorpej20010915: 951.35Sthorpej The new "ubcperf" code committed by Chuck Silvers removed 961.35Sthorpej a header file, uvm/uvm_vnode.h. There may be stale .depend 971.35Sthorpej files that still reference this file. 981.35Sthorpej 991.35Sthorpej Solution: "make cleandir && make dependall" in affected 1001.35Sthorpej directories. 1011.31Senami 1021.31Senami20010803: 1031.31Senami grep.info is now built from grep.texi using makeinfo. Since it 1041.31Senami requires makeinfo v4.0, you need to install new texinfo before 1051.31Senami building gnu/usr.bin/grep. To install new texinfo, please follow 1061.31Senami the instruction described in 20010726 entry. 1071.30Senami 1081.30Senami20010803: 1091.41Swiz (i386 only): i386 kernel now uses new instructions like 1101.41Swiz `fxsave' which old gas doesn't understand. To build the 1111.41Swiz kernel successfuly, you need to build and install new gas 1121.41Swiz (gnu/usr.bin/gas.new), or (temporarily) comment out 1131.41Swiz "options I686_CPU" from your kernel configuration until you 1141.41Swiz rebuilt your userland (and got a new gas). 1151.29Sbjh21 1161.29Sbjh2120010731: 1171.29Sbjh21 Bootloader update on ELF platforms. DDB in kernels from before 1181.29Sbjh21 this will be unable to read symbol tables provided by newer 1191.29Sbjh21 bootloaders. 1201.27Sassar 1211.27Sassar20010726: 1221.27Sassar Texinfo was updated to 4.0. To avoid failures when trying to 1231.28Sassar build the included texinfo files, do: 1241.28Sassar 1251.28Sassar cd src/gnu/usr.bin/texinfo 1261.28Sassar make MKINFO=no dependall install 1271.25Sthorpej 1281.25Sthorpej20010718: 1291.25Sthorpej Enabled correct .init/.fini processing in crt0. The way this 1301.25Sthorpej was done was to change a -I directive to cc(1), which means 1311.25Sthorpej make(1) will have a stale dependency (it will be checking the 1321.25Sthorpej timestamp on the wrong "dot_init.h"). 1331.25Sthorpej 1341.25Sthorpej The symptom you will see is that new programs die with SIGSEGV 1351.25Sthorpej if you have a stale dependency. 1361.25Sthorpej 1371.25Sthorpej Solution: "make cleandir" in both lib/csu and libexec/ld.elf_so 1381.25Sthorpej before starting your build. 1391.26Sthorpej 1401.26Sthorpej20010628: 1411.26Sthorpej A construct was added to uvm_page.h that uncovered a bug 1421.26Sthorpej in lint(1). If you get a warning/error about a non-portable 1431.26Sthorpej bitfield, update your lint(1) before proceeding. 1441.21Sjmc 1451.21Sjmc20010226: 1461.22Sjmc Added named user/group to system. Need to hand add this in or builds 1471.21Sjmc will break as mtree aborts early. 1481.21Sjmc 1491.21Sjmc To work around add by hand: 1501.21Sjmc 1511.21Sjmc named:*:14: 1521.21Sjmc 1531.22Sjmc to /etc/group and add: 1541.22Sjmc 1551.22Sjmc named:*:14:14::0:0:Named pseudo-user:/var/named:/sbin/nologin 1561.22Sjmc 1571.22Sjmc to master.passwd (use vipw for instance if doing by hand). 1581.22Sjmc 1591.22Sjmc Now a make build should progress. 1601.18Sjmc 1611.18Sjmc20010219: 1621.18Sjmc get/setprogname() added. Any hostprog's that may use this will need 1631.20Sjmc to be bootstrapped manually until the host system is current. 1641.18Sjmc 1651.18Sjmc Known problems: sys/arch/macppc/stand/fixcoff 1661.19Scgd usr.sbin/config (adding -DMAKE_BOOTSTRAP to 1671.19Scgd CFLAGS and rebuilding should work) 1681.20Sjmc usr.sbin/mdsetimage - Build a static copy if 1691.20Sjmc building a snapshot before fully bootstrapped. 1701.15Schristos 1711.15Schristos20010204: 1721.15Schristos prepare the code to compile with stricter gcc flags. in 1731.15Schristos particular start eliminating redundant declarations. Yacc 1741.15Schristos needs to be installed before make build. 1751.10Schristos 1761.10Schristos20010114: 1771.10Schristos introduce .if commands(target) in make(1). You need to 1781.10Schristos bring everything up-to-date first, then without installing 1791.23Stron anything make and install in usr.bin/make, then proceed 1801.10Schristos with make build. 1811.9Ssommerfe 1821.9Ssommerfe20010101: 1831.9Ssommerfe bsd.subdir.mk committed 20001230 had a bug which caused 1841.9Ssommerfe afterinstall targets to run too soon; update again. 1851.8Ssommerfe 1861.8Ssommerfe20001230: 1871.8Ssommerfe New share/mk files needed to support .WAIT in SUBDIR variables. 1881.8Ssommerfe If you get make errors, 1891.8Ssommerfe (cd share/mk; make install) 1901.8Ssommerfe Also, PRINTOBJDIR has changed and is now used more heavily. 1911.6Sad 1921.6Sad20001019: 1931.7Sad The `ca' device driver has been replaced by `ld'; although the 1941.6Sad major and minor numbers haven't changed, you should update your /dev 1951.6Sad directory. 1961.1Sabs 1971.4Sitojun20000929: 1981.4Sitojun The following make directives are obsoleted. 1991.4Sitojun MKCRYPTO_RSA NOCRYPTO_RSA NOCRYPTO_RC5 NOCRYPTO_IDEA 2001.4Sitojun By default, RSA is built into libcrypto. IDEA and RC5 will not be 2011.16Swiz built into libcrypto. By using MKCRYPTO_{RC5,IDEA}, you can build 2021.4Sitojun additional library libcrypto_{idea,rc5}. 2031.1Sabs 2041.1Sabs 2051.1SabsHints for a more successful build: 2061.1Sabs^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2071.2Smrg Build a new kernel first: 2081.2Smrg This makes sure that any new system calls or features 2091.2Smrg expected by the new userland will be present. This 2101.2Smrg helps to avoid critical errors when upgrading. 2111.1Sabs Use object directories: 2121.1Sabs This helps to keep stale object 2131.1Sabs files from polluting the build if a Makefile "forgets" 2141.1Sabs about one. It also makes it easier to clean up after 2151.1Sabs a build. It's also necessary if you want to use the 2161.1Sabs same source tree for multiple machines. 2171.1Sabs To use object directories: 2181.1Sabs a) cd /usr/src ; make cleandir 2191.2Smrg b) Add "OBJMACHINE=yes" to /etc/mk.conf 2201.2Smrg c) Add "MKOBJDIRS=yes" to /etc/mk.conf 2211.1Sabs d) cd /usr/src ; make build 2221.2Smrg Note that running "make obj" in a directory will create 2231.2Smrg in obj.$MACHINE directory. 2241.1Sabs Build to a DESTDIR: 2251.1Sabs This helps to keep old 2261.1Sabs installed files (especially libraries) from interfering 2271.1Sabs with the new build. 2281.1Sabs To build to a DESTDIR, set the DESTDIR environment 2291.2Smrg variable before running make build. It should be set to 2301.2Smrg the pathname of an initially empty directory. 2311.1Sabs Problems: you might need to update critical utilities 2321.1Sabs without using DESTDIR since nothing is executed 2331.1Sabs from what is installed in DESTDIR. 2341.1Sabs (See critical utils, below) 2351.1Sabs Build often: 2361.1Sabs This keeps critical utilities current enough to not choke 2371.1Sabs on any other part of the source tree that depends on up to 2381.1Sabs date functionality. 2391.1Sabs 2401.1SabsWhat to do if things don't work: 2411.1Sabs^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2421.1SabsWhen things don't work there is usually a few things that commonly 2431.1Sabsshould be done. 2441.1Sabs 1) make includes 2451.1Sabs This should be done automatically by make build. 2461.1Sabs 2) cd share/mk && make install 2471.1Sabs Again, automatically done by make build. 2481.1Sabs 2491.1SabsFailsafe rebuild of a small part of the tree: 2501.1Sabs^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2511.1SabsTo make sure you rebuild something correctly you want to do 2521.1Sabssomething like the following: 2531.1Sabs 1) Make sure the includes and .mk files are up to date. 2541.1Sabs 2) Make sure any program used to build the particular 2551.1Sabs utility is up to date. (yacc, lex, etc...) 2561.1Sabs 3) cd ...path/to/util... 2571.1Sabs make cleandir 2581.1Sabs rm ...all obj directories... 2591.1Sabs make cleandir # yes, again 2601.1Sabs make obj 2611.1Sabs make depend && make 2621.1Sabs 2631.1SabsFailsafe rebuild of the entire tree: 2641.1Sabs^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2651.1SabsIf you really want to make sure the source tree is clean and 2661.2Smrgready for a build try the following. Note that sourcing /etc/mk.conf 2671.2Smrg(a make(1) Makefile) in this manner is not right, and will not work 2681.2Smrgfor anyone who uses any make(1) features in /etc/mk.conf. 2691.1Sabs 2701.1Sabs---cut here--- 2711.1Sabs#!/bin/sh 2721.1Sabs. /etc/mk.conf 2731.1Sabs 2741.1Sabsif [ -z $BSDSRCDIR ] ; then 2751.1Sabs BSDSRCDIR=/usr/src 2761.1Sabsfi 2771.1Sabsif [ \! -d $BSDSRCDIR ] ; then 2781.1Sabs echo Unable to find sources 2791.1Sabs exit 1 2801.1Sabsfi 2811.1Sabsfind $BSDSRCDIR -name \*.o -o -name obj.\* -o -name obj -exec rm \{\} \; 2821.1Sabs 2831.1Sabsif [ -z $BSDOBJDIR ] ; then 2841.1Sabs BSDOBJDIR=/usr/obj 2851.1Sabsfi 2861.1Sabsif [ -d $BSDOBJDIR ] ; then 2871.1Sabs rm -rf $BSDOBJDIR 2881.1Sabsfi 2891.1Sabs 2901.1Sabscd $BSDSRCDIR && make cleandir 2911.1Sabs 2921.1Sabs---cut here--- 2931.1Sabs 2941.1SabsCritical utilities: 2951.1Sabs^^^^^^^^^^^^^^^^^^^ 2961.1Sabs gnu/usr.bin/egcs 2971.3Sitojun usr.bin/compile_et 2981.1Sabs usr.bin/make 2991.1Sabs usr.bin/yacc 3001.1Sabs usr.bin/lex 3011.11Slukem usr.bin/xlint 3021.2Smrg usr.sbin/config 3031.1Sabs 3041.34SsimonbOther problems and possible solutions: 3051.1Sabs^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 3061.1SabsSymptom:Unreasonable compiler errors. 3071.1SabsFix: Rebuild gnu/usr.bin/egcs 3081.1Sabs 3091.1SabsSymptom:Complaints involving a Makefile. 3101.17SerhFix: Rebuild usr.bin/make: 3111.17Serh cd usr.bin/make && make && make install 3121.17Serh Or, a failsafe method if that doesn't work: 3131.17Serh cd usr.bin/make && cc *.c */*.c -I . -o make && mv make /usr/bin 3141.17Serh 3151.1SabsFix: Make sure .mk files are up to date. 3161.1Sabs cd share/mk && make install 3171.2Smrg 3181.2SmrgSymptom:Kernel `config' fails to configure any kernel, including GENERIC. 3191.2SmrgFix: Rebuild usr.sbin/config 3201.1Sabs 3211.1SabsSymptom: 3221.1SabsFix: Rebuild usr.bin/yacc 3231.1Sabs 3241.1SabsSymptom: 3251.1SabsFix: Rebuild usr.bin/lex 3261.1Sabs 3271.1SabsSymptom: 3281.1SabsFix: rm /usr/lib/libbfd.a 3291.4Sitojun 3301.4SitojunSymptom:Obsolete intermediate files are used during compilation 3311.4SitojunFix: Try the following sequence of commands in the directory in question. 3321.4Sitojun make cleandir; rm `make print-objdir`; make cleandir; make obj 3331.4Sitojun (If you built the tree without "make obj" in the past, obsolete files 3341.4Sitojun may remain. The command tries to clean everything up) 3351.5Swiz 3361.5SwizSymptom:.../sysinst/run.c:xx: warning: initialization from incompatible pointer type 3371.5SwizFix: Rebuild and install usr.bin/menuc 3381.12Sitojun 3391.12SitojunSymptom:mklocale not found during build in share/locale/ctype 3401.12SitojunFix: Build and install usr.bin/mklocale 3411.13Sdogcow 3421.13SdogcowSymptom:undefined reference to `__assert13' 3431.13SdogcowFix: Rebuild and install lib/libc 3441.13Sdogcow 3451.19ScgdSymptom:usr.sbin/config fails to build. 3461.19ScgdFix: Try building with -DMAKE_BOOTSTRAP added to CFLAGS in Makefile. 3471.13Sdogcow 3481.19ScgdSymptom:undefined reference to `getprogname' or `setprogname' 3491.19ScgdFix: Rebuild and install lib/libc 3501.24Sabs 3511.24SabsSymptom:lint does not understand the '-X' option 3521.24SabsFix: May need to build & install libs with NOLINT=1 before rebuilding lint 353