Annotation of src/UPDATING, Revision 1.185
1.185 ! jmcneill 1: $NetBSD: UPDATING,v 1.184 2009/01/11 03:20:31 christos Exp $
1.1 abs 2:
1.123 jmc 3: This file (UPDATING) is intended to be a brief reference to recent
4: changes that might cause problems in the build process, and a guide for
5: what to do if something doesn't work.
1.1 abs 6:
1.123 jmc 7: For a more detailed description of the recommended way to build NetBSD
8: using build.sh, see the BUILDING file.
9:
10: Note that much of the advice in this UPDATING file was written before
11: build.sh existed. Nevertheless, the advice here may be useful for
12: working around specific problems with build.sh.
13:
14: See also: BUILDING, build.sh, Makefile.
1.1 abs 15:
16: Recent changes:
17: ^^^^^^^^^^^^^^^
1.138 lukem 18:
1.184 christos 19: 20090110:
20: time_t and dev_t have been bumped to 64 bit quantities. To upgrade:
21: 1. Make sure your kernel has COMPAT_50 in it. Build and install.
22: 2. make sure build.sh completes and the binaries in a chroot work
23: before installing.
24: 3. If you don't use build.sh and you build directly to root, and
25: your build breaks in the middle, don't dispair. Make sure headers
26: are installed properly, and start building libraries first libc
27: and libutil, install them and then continue building all the
28: libraries in src/lib and src/gnu/lib and install them. Once
29: the new libraries are installed, you can restart the build.
30: 4. If you compile packages and you notice link time warnings,
31: you'll need to bump them and rebuild them.
1.185 ! jmcneill 32:
1.183 pgoyette 33: 20081219:
34: config(1) has been updated, and one of the files it creates -
35: swapnetbsd.o - has changed format. You need to rebuild config
36: (done automatically by build.sh) and then you need to rerun
37: config on all kernel configuration files before rebuilding those
38: kernels.
39:
1.181 cube 40: 20081205:
41: If you build with MKX11=no, you should remove /etc/rc.d/xdm and
42: /etc/rc.d/xfs from DESTDIR because those files were moved to the xetc
43: set and will appear as extra files for MKX11=no update builds.
1.178 lukem 44:
1.179 tsutsui 45: 20081122:
1.182 tsutsui 46: On i386, various kernel options(4) in GENERIC including
1.180 wiz 47: file systems have been disabled and moved into kernel modules.
48: Before trying a new GENERIC kernel, you have to prepare the
1.179 tsutsui 49: following files as well as a new GENERIC kernel:
50:
51: - build and install kernel modules from src/sys/modules
52:
53: - install the latest bootloader, which will load a module
1.180 wiz 54: for the file system from which the kernel is loaded automatically
1.179 tsutsui 55:
1.180 wiz 56: If you have to load your kernel from a file system which is not of
57: the same type as the root file system, you have to load the necessary
58: file system module manually on the boot prompt or in the boot.cfg file.
1.179 tsutsui 59:
1.178 lukem 60: 20080827:
61: If you built and installed a libc from sources between
62: 2008/08/20 and 2008/08/26 you got a broken strtouq(3)
63: which results in false errors reported by lint(1).
64: Since this breaks the libc build itself, manual help is
1.180 wiz 65: needed -- lint must be disabled temporarily, e.g.:
1.178 lukem 66: $ (cd lib/libc && make MKLINT=no dependall install)
67:
1.177 christos 68: 20080813:
69: MKDEBUG build was broken because the .depend files did not know
70: about .go files. You need to remove all .depend files and rebuild.
71:
1.175 simonb 72: 20080731:
73: WAPBL (metadata journaling support) has been added, but at this
74: time isn't backwards compatible with pre-WAPBL aware kernels
75: and userland (fsck_ffs in particular). Please make sure you
76: don't use a journaled filesystem with an older kernel/userland,
1.176 simonb 77: especially an uncleanly mounted journaled filesystem. WAPBL
78: also requires the super block to be in the UFS2 format. You
79: can use fsck_ffs -c 4 to update the superblock format.
1.175 simonb 80:
1.174 lukem 81: 20080721:
82: Assembler warnings are now fatal if $WARNS>0 and $NOGCCERROR
83: isn't defined.
84:
1.173 freza 85: 20080531:
86: The ioctl number of DRVSUSPENDDEV command on /dev/drvctl changed
87: from 125 (conflicted with DRVCTLCOMMAND) to 129. The drvctl(8)
88: utility needs to be rebuilt and reinstalled as older binaries
89: won't work correctly. The following sequence of commands:
90:
91: $ (cd sys/sys/ && nbmake-$arch includes)
92: $ (cd sbin/drvctl/ && nbmake-$arch clean)
93: $ (cd sbin/drvctl/ && nbmake-$arch all)
94:
95: leaves new drvctl utility in sbin/drvctl build directory.
96:
1.172 lukem 97: 20080503:
98: The <bsd.lib.mk> variable MKPRIVATELIB was renamed to LIBISPRIVATE.
99:
1.171 he 100: 20080521:
101: For a while, unprivileged UPDATE builds would fail to
102: succeed at the checkflist stage, complaining that
103: ${DESTDIR}/stand/<arch>/ did not exist. A fix for this
104: problem was committed to share/mk/bsd.kmodule.mk, revision 1.9.
105: If you already hit this problem, update the .mk file,
106: remove ${DESTDIR}/stand/<arch>, and re-run the build.
107:
1.174 lukem 108: 20080303:
109: Linker warnings are now fatal if $WARNS>0.
110:
1.170 christos 111: 20080126:
112: The posix_fadvise system call has been changed from an assembly
113: stub, to a c file that calls an assembly stub. You need to
114: 'rm -f posix_fadvise.* .depend' in the libc build directory to
115: avoid using the old assembly stub.
116:
1.168 joerg 117: 20071209:
118: The acpiec(4) driver has been split into two attachments. If you
119: get ACPI errors before the attachment, please update your kernel
1.169 wiz 120: configuration file appropriately or see GENERIC for more details.
1.168 joerg 121:
1.166 xtraeme 122: 20071115:
123: The it(4) driver has been renamed to itesio(4) and the old port
124: argument specified in the kernel configuration file is not valid
125: anymore. The itesio(4) driver now uses the Super I/O address port
126: rather than the EC address port. Please update your kernel
1.167 wiz 127: configuration file appropriately or see GENERIC for more details.
1.166 xtraeme 128:
1.165 jmmv 129: 20071028:
130: The pccons(4) driver has been removed from the NetBSD/shark port.
131: You need to update any custom kernel configuration file you have
132: to remove any references to pccons (which includes removing the
133: now useless XSERVER option) and replace them with the correct
134: entries for the wscons driver. See the GENERIC configuration file
135: for more details.
136:
1.164 gdt 137: 20070913:
138: A latent bug in dhclient/dhcpd that caused it to be unable to
139: enumerate interfaces was fixed. The bug began to cause
140: problems after 20070911 when the kernel's SIOCGIFCONF
141: implementation was repaired. From 20070529 to 20070911 racoon
142: could not enumerate interfaces. (These are noted because
143: normal kernel/userspace version matching hygiene is not
144: sufficient to avoid this problem.) Ensure that both kernel
145: and userland are from after 20070913.
146:
1.163 joerg 147: 20070703:
148: nbinstall has been renamed as it calls the target specific and
149: the logic to pass down STRIP from mk been removed. This forces
150: a re-installation of tools.
151:
1.161 dsl 152: 20070422:
153: The way OS emulations lookup filenames inside the emulation root
154: has been changed. Rather than modify the pathname (and copy back
155: to userspace) namei() and lookup() directly check the emulation
156: root. One side effect is that absolute symlinks inside the emulated
1.167 wiz 157: root file system will be relative to that file system - unless they
1.161 dsl 158: start /../ this is useful when the emulated root is a real install
159: that has such links.
160: This might affect symlinks that have been added to reference outside
161: the emulated root.
162:
1.160 jmcneill 163: 20070412:
164: The pckbc driver on sgimips IP32 has been removed. Use macekbc
165: instead. See the GENERIC32_IP3x kernel configuration for an
166: example.
167:
1.159 gdt 168: 20070319:
169: src/lib/libc/Makefile revision 1.129 broke libc and ld.elf_so
170: on many platforms due to incorrect flags settings. If you
171: updated and built after about 20070315, do "nbmake-$arch
172: cleandir" in src/lib/libc and src/libexec/ld.elf_so to force a
173: rebuild of object files that might have been built
174: incorrectly, and ensure that you have at least
175: src/lib/libc/Makefile 1.130.
176:
1.158 dbj 177: 20070210:
178: src/sys/sys/{sa.h,savar.h} were removed.
179: find ${OBJDIR} \( -name .depend -o -name '*.d' \) -print \
180: | xargs egrep -l '/sa.h|/savar.h' | xargs rm
181: will allow dependencies on those files to get get rebuilt
182:
1.157 apb 183: 20070209:
184: The threading model was changed when the newlock2 branch
185: was merged to NetBSD-current. If you boot with a new
186: kernel (version 4.99.10), then you also need a new pthread
187: library (/usr/lib/libpthread.so.0.7). If you boot with
188: an old kernel, then you need the old pthread library
189: (/usr/lib/libpthread.so.0.6). Provided you keep the kernel and
190: the pthread library in sync, old threaded applications should
191: continue to work with an old or new kernel. Note that named(8)
192: is the only threaded application in the base system.
193:
1.154 he 194: 20061214:
195: Following the move of string_to_flags() and flags_to_string()
196: from the bin/ls/ sources to libutil, users doing UPDATE builds
197: will need to do a "make cleandir" in
198: tools/mtree/, tools/makefs/, tools/binstall/, tools/pax/,
199: bin/pax/, bin/ls/, usr.sbin/mtree/, usr.sbin/makefs/,
1.156 he 200: usr.bin/xinstall/, libexec/ftpd/, rescue/, as well
201: as the installation images in distrib/
1.154 he 202: in order to excise stale references to the old stat_flags.h header
203: file in the ls sources -- stat_flags.h has been removed.
204:
1.152 christos 205: 20061108:
206: The configure script used in the src/tools/gcc compiler has been
207: changed to indicate that our libc has ssp support built-in and
208: does not depend on -lssp and -lssp-nonshared. You'll need to
209: make clean in src/tools/gcc first to rebuild the compiler.
210:
1.151 rpaulo 211: 20061009:
212: The sysctl variables net.inet{,6}.tcp{,6}.newreno are no longer
213: available. Use net.inet{,6}.tcp{,6}.congctl.selected instead.
214:
1.150 bjh21 215: 20060814:
216: The vt, vidcconsole, kbd, and rpckbd drivers on acorn32 have been
217: withdrawn. Use vidcvideo and pckbd instead. See the GENERIC
218: kernel configuration for an example. X servers from the last
219: few years should cope.
220:
1.149 christos 221: 20060703:
222: MPACPI is no more. We always configure PCI interrupts using ACPI
223: if we have an ACPI kernel. The option MPACPI_SCANPCI has been renamed
224: to ACPI_SCANPCI. Thanks to work from fvdl.
225:
1.148 dogcow 226: 20060627:
227: socket(2) has changed, and its system call has been versioned.
228: For userlands with the old version of socket(2), make sure that
229: your kernel has 'options COMPAT_30' set, or else 'bad system call'
230: errors will result.
231:
1.1 abs 232: Hints for a more successful build:
233: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1.123 jmc 234: Use build.sh, but do not use its "expert mode":
1.132 jmmv 235: This will automatically build the tools in the
1.123 jmc 236: correct order, and it will keep the tools and the
237: new build products from interfering with the running
238: system. This will allow you to ignore most of the
239: other advice in this file.
1.2 mrg 240: Build a new kernel first:
241: This makes sure that any new system calls or features
242: expected by the new userland will be present. This
243: helps to avoid critical errors when upgrading.
1.1 abs 244: Use object directories:
245: This helps to keep stale object
246: files from polluting the build if a Makefile "forgets"
247: about one. It also makes it easier to clean up after
248: a build. It's also necessary if you want to use the
249: same source tree for multiple machines.
1.123 jmc 250: To use object directories with build.sh:
251: a) invoke build.sh with the "-M" or "-O" options.
252: To use object directories without using build.sh:
1.1 abs 253: a) cd /usr/src ; make cleandir
1.2 mrg 254: b) Add "OBJMACHINE=yes" to /etc/mk.conf
255: c) Add "MKOBJDIRS=yes" to /etc/mk.conf
1.1 abs 256: d) cd /usr/src ; make build
1.2 mrg 257: Note that running "make obj" in a directory will create
258: in obj.$MACHINE directory.
1.1 abs 259: Build to a DESTDIR:
1.123 jmc 260: This helps to keep old installed files (especially libraries)
261: from interfering with the new build.
262: To build to a DESTDIR with build.sh, use the "-D" option.
263: To build to a DESTDIR without using build.sh, set the DESTDIR
264: environment variable before running make build. It should be
265: set to the pathname of an initially empty directory.
266: Problems: if you do not use build.sh, you might need to
267: update critical utilities without using DESTDIR since
268: nothing is executed from what is installed in DESTDIR.
269: (See critical utils, below.)
1.1 abs 270: Build often:
271: This keeps critical utilities current enough to not choke
272: on any other part of the source tree that depends on up to
1.123 jmc 273: date functionality. If you use build.sh, you should not have
274: this problem.
1.1 abs 275:
276: What to do if things don't work:
277: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
278: When things don't work there is usually a few things that commonly
279: should be done.
280: 1) make includes
281: This should be done automatically by make build.
282: 2) cd share/mk && make install
283: Again, automatically done by make build.
284:
285: Failsafe rebuild of a small part of the tree:
286: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
287: To make sure you rebuild something correctly you want to do
288: something like the following:
289: 1) Make sure the includes and .mk files are up to date.
290: 2) Make sure any program used to build the particular
291: utility is up to date. (yacc, lex, etc...)
292: 3) cd ...path/to/util...
293: make cleandir
294: rm ...all obj directories...
295: make cleandir # yes, again
296: make obj
297: make depend && make
298:
299: Failsafe rebuild of the entire tree:
300: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
301: If you really want to make sure the source tree is clean and
1.2 mrg 302: ready for a build try the following. Note that sourcing /etc/mk.conf
303: (a make(1) Makefile) in this manner is not right, and will not work
304: for anyone who uses any make(1) features in /etc/mk.conf.
1.1 abs 305:
306: ---cut here---
307: #!/bin/sh
308: . /etc/mk.conf
309:
1.58 lukem 310: if [ -z $NETBSDSRCDIR ] ; then
311: NETBSDSRCDIR=/usr/src
1.1 abs 312: fi
1.58 lukem 313: if [ \! -d $NETBSDSRCDIR ] ; then
1.1 abs 314: echo Unable to find sources
315: exit 1
316: fi
1.58 lukem 317: find $NETBSDSRCDIR -name \*.o -o -name obj.\* -o -name obj -exec rm \{\} \;
1.1 abs 318:
319: if [ -z $BSDOBJDIR ] ; then
320: BSDOBJDIR=/usr/obj
321: fi
322: if [ -d $BSDOBJDIR ] ; then
323: rm -rf $BSDOBJDIR
324: fi
325:
1.58 lukem 326: cd $NETBSDSRCDIR && make cleandir
1.1 abs 327:
328: ---cut here---
329:
330: Critical utilities:
331: ^^^^^^^^^^^^^^^^^^^
1.3 itojun 332: usr.bin/compile_et
1.1 abs 333: usr.bin/make
334: usr.bin/yacc
335: usr.bin/lex
1.11 lukem 336: usr.bin/xlint
1.142 drochner 337: usr.bin/config
1.1 abs 338:
1.34 simonb 339: Other problems and possible solutions:
1.1 abs 340: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
341: Symptom:Complaints involving a Makefile.
1.17 erh 342: Fix: Rebuild usr.bin/make:
343: cd usr.bin/make && make && make install
1.111 simonb 344: Or, a failsafe method if that doesn't work:
1.17 erh 345: cd usr.bin/make && cc *.c */*.c -I . -o make && mv make /usr/bin
346:
1.1 abs 347: Fix: Make sure .mk files are up to date.
348: cd share/mk && make install
1.2 mrg 349:
350: Symptom:Kernel `config' fails to configure any kernel, including GENERIC.
1.142 drochner 351: Fix: Rebuild usr.bin/config
1.1 abs 352:
353: Symptom:
354: Fix: Rebuild usr.bin/yacc
355:
356: Symptom:
357: Fix: Rebuild usr.bin/lex
358:
359: Symptom:
360: Fix: rm /usr/lib/libbfd.a
1.4 itojun 361:
362: Symptom:Obsolete intermediate files are used during compilation
363: Fix: Try the following sequence of commands in the directory in question.
364: make cleandir; rm `make print-objdir`; make cleandir; make obj
365: (If you built the tree without "make obj" in the past, obsolete files
366: may remain. The command tries to clean everything up)
1.5 wiz 367:
368: Symptom:.../sysinst/run.c:xx: warning: initialization from incompatible pointer type
369: Fix: Rebuild and install usr.bin/menuc
1.12 itojun 370:
371: Symptom:mklocale not found during build in share/locale/ctype
372: Fix: Build and install usr.bin/mklocale
1.13 dogcow 373:
1.86 kleink 374: Symptom:undefined reference to `__assert13' or `__unsetenv13'
1.13 dogcow 375: Fix: Rebuild and install lib/libc
376:
1.142 drochner 377: Symptom:usr.bin/config fails to build.
1.19 cgd 378: Fix: Try building with -DMAKE_BOOTSTRAP added to CFLAGS in Makefile.
1.13 dogcow 379:
1.19 cgd 380: Symptom:undefined reference to `getprogname' or `setprogname'
381: Fix: Rebuild and install lib/libc
1.24 abs 382:
383: Symptom:lint does not understand the '-X' option
384: Fix: May need to build & install libs with NOLINT=1 before rebuilding lint
CVSweb <webmaster@jp.NetBSD.org>