UPDATING revision 1.69 1 1.69 thorpej $NetBSD: UPDATING,v 1.69 2002/10/04 04:37:06 thorpej Exp $
2 1.1 abs
3 1.1 abs This file is intended to be a brief introduction to the build
4 1.1 abs process and a reference on what to do if something doesn't work.
5 1.1 abs
6 1.1 abs For a more detailed description see Makefile.
7 1.1 abs
8 1.1 abs Recent changes:
9 1.1 abs ^^^^^^^^^^^^^^^
10 1.69 thorpej
11 1.69 thorpej 20021003:
12 1.69 thorpej Several changes have been made to the autoconfiguration
13 1.69 thorpej framework. Users must update and reinstall usr.sbin/config
14 1.69 thorpej before building a new kernel.
15 1.68 lukem
16 1.68 lukem 20020922:
17 1.68 lukem MKDYNAMICROOT=yes enabled by default, which means that
18 1.68 lukem certain shared libraries are installed into /lib, the shared
19 1.68 lukem linker is installed into /libexec, and all programs in /bin
20 1.68 lukem and /sbin are dynamically linked.
21 1.68 lukem If you do not use "make build", you should ensure that
22 1.68 lukem you have the libraries and shared linker in the new locations,
23 1.68 lukem with:
24 1.68 lukem make do-lib-csu do-lib-libc do-lib do-gnu-lib do-ld.elf_so
25 1.67 lukem
26 1.67 lukem 20020917:
27 1.67 lukem USE_NEW_TOOLCHAIN has been replaced with:
28 1.67 lukem - TOOLCHAIN_MISSING -- set to "yes" on platforms for which
29 1.67 lukem there is no working in-tree toolchain (hppa, ns32k, sh5,
30 1.67 lukem x86_64).
31 1.67 lukem - EXTERNAL_TOOLCHAIN -- if defined by the user, points to the
32 1.67 lukem root ofan external toolchain (e.g. /usr/local/gnu). This
33 1.67 lukem enables the cross-build framework even for TOOLCHAIN_MISSING
34 1.67 lukem platforms.
35 1.66 gehenna
36 1.66 gehenna 20020906:
37 1.66 gehenna gehenna-devsw has been merged into the trunk. Need to update and
38 1.66 gehenna reinstall usr.sbin/config before build the kernel.
39 1.65 lukem
40 1.65 lukem 20020822:
41 1.65 lukem Crunched rescue tools (contents of /bin and /sbin, plus others)
42 1.65 lukem are now provided in /rescue.
43 1.65 lukem
44 1.65 lukem To ensure that these are built statically linked (no matter
45 1.65 lukem what the setting of LDSTATIC is), use a crunchgen(1) built
46 1.65 lukem from sources newer than 20020820 (see the next entry).
47 1.65 lukem
48 1.65 lukem 20020820:
49 1.65 lukem crunchgen(1) changed to ensure that the generated program
50 1.65 lukem is statically linked.
51 1.65 lukem
52 1.65 lukem Solution: update and reinstall usr.bin/crunch
53 1.61 itojun
54 1.61 itojun 20020515:
55 1.61 itojun sshd user/group has been added. Need to hand add this in, or sshd
56 1.61 itojun will not let you log in (with default, or UsePrivlegeSeparation=yes)
57 1.61 itojun
58 1.61 itojun Add the following into /etc/group:
59 1.61 itojun
60 1.61 itojun sshd:*:16:
61 1.61 itojun
62 1.61 itojun and the following to /etc/master.passwd (via vipw):
63 1.61 itojun
64 1.63 enami sshd:*:16:16::0:0:& pseudo-user:/var/chroot/sshd:/sbin/nologin
65 1.61 itojun
66 1.62 jdolecek also /var/chroot/sshd directory needs to be present (digged as a part of
67 1.61 itojun build process).
68 1.60 sommerfe
69 1.60 sommerfe 20020426:
70 1.60 sommerfe NBUILDJOBS obsoleted in favor of just using -j.
71 1.59 lukem
72 1.59 lukem 20020426:
73 1.59 lukem etc/postinstall added, which performs various checks for
74 1.59 lukem configuration file updates and changes, and can fix most of
75 1.59 lukem the problems identified.
76 1.59 lukem This should make it much easier to upgrade a system's
77 1.59 lukem configuration from earlier systems (as far back as NetBSD 1.5).
78 1.56 lukem
79 1.56 lukem 20020320:
80 1.56 lukem <bsd.lib.mk> needs a new install(1) for it's "-a cmd" support.
81 1.57 itojun build and install at usr.bin/xinstall before the build.
82 1.56 lukem
83 1.55 itojun 20020319:
84 1.55 itojun raw IPv6 socket now makes strict checking for sa_family and sa_len
85 1.55 itojun on send(2) operation. be sure to have sbin/rtsol and usr.sbin/rtsold
86 1.55 itojun newer than November 2001 when you upgrade the kernel.
87 1.55 itojun
88 1.54 itojun 20020311:
89 1.54 itojun ssh configuration files were moved from /etc to /etc/ssh. Beware
90 1.54 itojun if you restart your machine from remote. Note that sshd.conf needs
91 1.54 itojun to be changed (due to the use of "/etc" inside).
92 1.54 itojun
93 1.54 itojun 20020223:
94 1.53 matt Users of the VAX port will need to rebuild and install gas
95 1.53 matt so it deal with the now present register prefix used in all
96 1.53 matt the VAX assembly files.
97 1.53 matt
98 1.50 itojun 20020118:
99 1.50 itojun
100 1.50 itojun ntpd user/group has been added. Need to hand add this in or builds
101 1.50 itojun will break as mtree aborts early.
102 1.50 itojun
103 1.50 itojun Add the following into /etc/group:
104 1.50 itojun
105 1.50 itojun ntpd:*:15:
106 1.50 itojun
107 1.50 itojun and the following to /etc/master.passwd (via vipw):
108 1.50 itojun
109 1.50 itojun ntpd:*:15:15::0:0:Ntpd pseudo-user:/var/chroot/ntpd:/sbin/nologin
110 1.50 itojun
111 1.49 jmc 20011207:
112 1.49 jmc
113 1.49 jmc If you're attempting to build a snapshot on sparc64 and are getting
114 1.49 jmc reloc errors from the toolchain groff binary this means your native
115 1.49 jmc toolchain has some broken C++ bits.
116 1.49 jmc
117 1.49 jmc To fix:
118 1.49 jmc
119 1.49 jmc Build a new toolchain (i.e. build.sh -t)
120 1.49 jmc Use the new toolchain to build and install natively (i.e. /usr/lib)
121 1.49 jmc
122 1.49 jmc gnu/lib/libgcc
123 1.51 pooka gnu/lib/libstdc++
124 1.49 jmc
125 1.49 jmc After this a snapshot will be able to be built.
126 1.49 jmc
127 1.47 jmc 20011201:
128 1.47 jmc In order for a sparc64 build to work you must have a working awk. If
129 1.47 jmc you've built and installed a system with the new toolchain up to this
130 1.52 wiz point you do not have a working awk as its ability to do floating
131 1.47 jmc point is broken.
132 1.47 jmc
133 1.47 jmc To build:
134 1.47 jmc
135 1.47 jmc remake and install gnu/lib/libgcc
136 1.47 jmc remake and install gnu/usr.bin/gawk into /usr/bin (make sure it links
137 1.48 jmc against the new libgcc.a)
138 1.47 jmc
139 1.46 thorpej 20011128:
140 1.46 thorpej Kernel config information was changed to use defflag in
141 1.46 thorpej the various "files" files. Bug fixes to config(8) are
142 1.46 thorpej required in order for this to work properly. Make sure
143 1.46 thorpej to build and install in usr.sbin/config before attempting
144 1.46 thorpej to build a new kernel.
145 1.46 thorpej
146 1.45 yamt 20011030:
147 1.45 yamt libc/locale/wcstod.c now needs new lint(1). Update lint(1)
148 1.45 yamt before building libc.
149 1.43 mason
150 1.44 tv 20011029:
151 1.44 tv The new document BUILDING.mdoc (view with nroff | more, or
152 1.44 tv see pre-generated .txt and .html versions) describes the build
153 1.44 tv procedure in great detail. BUILDING, and the USE_NEW_TOOLCHAIN
154 1.44 tv build process, are intended in the long run to replace this
155 1.44 tv manual update log.
156 1.44 tv
157 1.44 tv Users building a USE_NEW_TOOLCHAIN system should read the
158 1.44 tv BUILDING document for caveats. Generally, BUILDING supersedes
159 1.44 tv UPDATING for these systems, as tool updating is taken care of
160 1.44 tv by the new build system.
161 1.42 perry
162 1.42 perry 20011028:
163 1.42 perry src/etc/Makefile now needs install to be able to handle
164 1.42 perry symlinks that point to nowhere. A bug in install that
165 1.42 perry prevented this was corrected.
166 1.42 perry
167 1.42 perry Solution: update and reinstall usr.bin/xinstall
168 1.42 perry Better Solution: Use the new toolchain and it will just work
169 1.42 perry for you.
170 1.40 lukem
171 1.40 lukem 20011006:
172 1.40 lukem /etc/mtree/NetBSD.dist has been updated to take advantage of
173 1.40 lukem absolute path support added to mtree(8). Older mtree(8)s don't
174 1.40 lukem understand the format.
175 1.40 lukem
176 1.40 lukem Solution: update and reinstall usr.sbin/mtree
177 1.39 jmc
178 1.39 jmc 20011004:
179 1.39 jmc Crunchgen has been updated to work via reach-over makefiles. Updating
180 1.39 jmc is suggested before running a snapshot build
181 1.36 tv
182 1.35 thorpej 20010915:
183 1.35 thorpej The new "ubcperf" code committed by Chuck Silvers removed
184 1.35 thorpej a header file, uvm/uvm_vnode.h. There may be stale .depend
185 1.35 thorpej files that still reference this file.
186 1.35 thorpej
187 1.35 thorpej Solution: "make cleandir && make dependall" in affected
188 1.35 thorpej directories.
189 1.31 enami
190 1.31 enami 20010803:
191 1.31 enami grep.info is now built from grep.texi using makeinfo. Since it
192 1.31 enami requires makeinfo v4.0, you need to install new texinfo before
193 1.31 enami building gnu/usr.bin/grep. To install new texinfo, please follow
194 1.31 enami the instruction described in 20010726 entry.
195 1.30 enami
196 1.64 sommerfe 20010803:
197 1.41 wiz (i386 only): i386 kernel now uses new instructions like
198 1.41 wiz `fxsave' which old gas doesn't understand. To build the
199 1.64 sommerfe kernel successfully, you need to build and install a new toolchain,
200 1.64 sommerfe (i.e., build.sh -t) or (temporarily) comment out "options I686_CPU"
201 1.64 sommerfe from your kernel configuration until you rebuild your userland.
202 1.64 sommerfe See 20011029 above and BUILDING file in this directory for more information.
203 1.64 sommerfe [updated 20020630 since i386 gas moved when USE_NEW_TOOLCHAIN enabled]
204 1.29 bjh21
205 1.29 bjh21 20010731:
206 1.29 bjh21 Bootloader update on ELF platforms. DDB in kernels from before
207 1.29 bjh21 this will be unable to read symbol tables provided by newer
208 1.29 bjh21 bootloaders.
209 1.27 assar
210 1.27 assar 20010726:
211 1.27 assar Texinfo was updated to 4.0. To avoid failures when trying to
212 1.28 assar build the included texinfo files, do:
213 1.28 assar
214 1.28 assar cd src/gnu/usr.bin/texinfo
215 1.28 assar make MKINFO=no dependall install
216 1.25 thorpej
217 1.25 thorpej 20010718:
218 1.25 thorpej Enabled correct .init/.fini processing in crt0. The way this
219 1.25 thorpej was done was to change a -I directive to cc(1), which means
220 1.25 thorpej make(1) will have a stale dependency (it will be checking the
221 1.25 thorpej timestamp on the wrong "dot_init.h").
222 1.25 thorpej
223 1.25 thorpej The symptom you will see is that new programs die with SIGSEGV
224 1.25 thorpej if you have a stale dependency.
225 1.25 thorpej
226 1.25 thorpej Solution: "make cleandir" in both lib/csu and libexec/ld.elf_so
227 1.25 thorpej before starting your build.
228 1.26 thorpej
229 1.26 thorpej 20010628:
230 1.26 thorpej A construct was added to uvm_page.h that uncovered a bug
231 1.26 thorpej in lint(1). If you get a warning/error about a non-portable
232 1.26 thorpej bitfield, update your lint(1) before proceeding.
233 1.21 jmc
234 1.21 jmc 20010226:
235 1.22 jmc Added named user/group to system. Need to hand add this in or builds
236 1.21 jmc will break as mtree aborts early.
237 1.21 jmc
238 1.21 jmc To work around add by hand:
239 1.21 jmc
240 1.21 jmc named:*:14:
241 1.21 jmc
242 1.22 jmc to /etc/group and add:
243 1.22 jmc
244 1.22 jmc named:*:14:14::0:0:Named pseudo-user:/var/named:/sbin/nologin
245 1.22 jmc
246 1.22 jmc to master.passwd (use vipw for instance if doing by hand).
247 1.22 jmc
248 1.22 jmc Now a make build should progress.
249 1.18 jmc
250 1.18 jmc 20010219:
251 1.52 wiz get/setprogname() added. Any hostprogs that may use this will need
252 1.20 jmc to be bootstrapped manually until the host system is current.
253 1.18 jmc
254 1.18 jmc Known problems: sys/arch/macppc/stand/fixcoff
255 1.19 cgd usr.sbin/config (adding -DMAKE_BOOTSTRAP to
256 1.19 cgd CFLAGS and rebuilding should work)
257 1.20 jmc usr.sbin/mdsetimage - Build a static copy if
258 1.20 jmc building a snapshot before fully bootstrapped.
259 1.15 christos
260 1.15 christos 20010204:
261 1.15 christos prepare the code to compile with stricter gcc flags. in
262 1.15 christos particular start eliminating redundant declarations. Yacc
263 1.15 christos needs to be installed before make build.
264 1.10 christos
265 1.10 christos 20010114:
266 1.10 christos introduce .if commands(target) in make(1). You need to
267 1.10 christos bring everything up-to-date first, then without installing
268 1.23 tron anything make and install in usr.bin/make, then proceed
269 1.10 christos with make build.
270 1.9 sommerfe
271 1.9 sommerfe 20010101:
272 1.9 sommerfe bsd.subdir.mk committed 20001230 had a bug which caused
273 1.9 sommerfe afterinstall targets to run too soon; update again.
274 1.8 sommerfe
275 1.8 sommerfe 20001230:
276 1.8 sommerfe New share/mk files needed to support .WAIT in SUBDIR variables.
277 1.8 sommerfe If you get make errors,
278 1.8 sommerfe (cd share/mk; make install)
279 1.8 sommerfe Also, PRINTOBJDIR has changed and is now used more heavily.
280 1.6 ad
281 1.6 ad 20001019:
282 1.7 ad The `ca' device driver has been replaced by `ld'; although the
283 1.6 ad major and minor numbers haven't changed, you should update your /dev
284 1.6 ad directory.
285 1.1 abs
286 1.4 itojun 20000929:
287 1.4 itojun The following make directives are obsoleted.
288 1.4 itojun MKCRYPTO_RSA NOCRYPTO_RSA NOCRYPTO_RC5 NOCRYPTO_IDEA
289 1.4 itojun By default, RSA is built into libcrypto. IDEA and RC5 will not be
290 1.16 wiz built into libcrypto. By using MKCRYPTO_{RC5,IDEA}, you can build
291 1.4 itojun additional library libcrypto_{idea,rc5}.
292 1.1 abs
293 1.1 abs
294 1.1 abs Hints for a more successful build:
295 1.1 abs ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
296 1.2 mrg Build a new kernel first:
297 1.2 mrg This makes sure that any new system calls or features
298 1.2 mrg expected by the new userland will be present. This
299 1.2 mrg helps to avoid critical errors when upgrading.
300 1.1 abs Use object directories:
301 1.1 abs This helps to keep stale object
302 1.1 abs files from polluting the build if a Makefile "forgets"
303 1.1 abs about one. It also makes it easier to clean up after
304 1.1 abs a build. It's also necessary if you want to use the
305 1.1 abs same source tree for multiple machines.
306 1.1 abs To use object directories:
307 1.1 abs a) cd /usr/src ; make cleandir
308 1.2 mrg b) Add "OBJMACHINE=yes" to /etc/mk.conf
309 1.2 mrg c) Add "MKOBJDIRS=yes" to /etc/mk.conf
310 1.1 abs d) cd /usr/src ; make build
311 1.2 mrg Note that running "make obj" in a directory will create
312 1.2 mrg in obj.$MACHINE directory.
313 1.1 abs Build to a DESTDIR:
314 1.1 abs This helps to keep old
315 1.1 abs installed files (especially libraries) from interfering
316 1.1 abs with the new build.
317 1.1 abs To build to a DESTDIR, set the DESTDIR environment
318 1.2 mrg variable before running make build. It should be set to
319 1.2 mrg the pathname of an initially empty directory.
320 1.1 abs Problems: you might need to update critical utilities
321 1.1 abs without using DESTDIR since nothing is executed
322 1.1 abs from what is installed in DESTDIR.
323 1.1 abs (See critical utils, below)
324 1.1 abs Build often:
325 1.1 abs This keeps critical utilities current enough to not choke
326 1.1 abs on any other part of the source tree that depends on up to
327 1.1 abs date functionality.
328 1.1 abs
329 1.1 abs What to do if things don't work:
330 1.1 abs ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
331 1.1 abs When things don't work there is usually a few things that commonly
332 1.1 abs should be done.
333 1.1 abs 1) make includes
334 1.1 abs This should be done automatically by make build.
335 1.1 abs 2) cd share/mk && make install
336 1.1 abs Again, automatically done by make build.
337 1.1 abs
338 1.1 abs Failsafe rebuild of a small part of the tree:
339 1.1 abs ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
340 1.1 abs To make sure you rebuild something correctly you want to do
341 1.1 abs something like the following:
342 1.1 abs 1) Make sure the includes and .mk files are up to date.
343 1.1 abs 2) Make sure any program used to build the particular
344 1.1 abs utility is up to date. (yacc, lex, etc...)
345 1.1 abs 3) cd ...path/to/util...
346 1.1 abs make cleandir
347 1.1 abs rm ...all obj directories...
348 1.1 abs make cleandir # yes, again
349 1.1 abs make obj
350 1.1 abs make depend && make
351 1.1 abs
352 1.1 abs Failsafe rebuild of the entire tree:
353 1.1 abs ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
354 1.1 abs If you really want to make sure the source tree is clean and
355 1.2 mrg ready for a build try the following. Note that sourcing /etc/mk.conf
356 1.2 mrg (a make(1) Makefile) in this manner is not right, and will not work
357 1.2 mrg for anyone who uses any make(1) features in /etc/mk.conf.
358 1.1 abs
359 1.1 abs ---cut here---
360 1.1 abs #!/bin/sh
361 1.1 abs . /etc/mk.conf
362 1.1 abs
363 1.58 lukem if [ -z $NETBSDSRCDIR ] ; then
364 1.58 lukem NETBSDSRCDIR=/usr/src
365 1.1 abs fi
366 1.58 lukem if [ \! -d $NETBSDSRCDIR ] ; then
367 1.1 abs echo Unable to find sources
368 1.1 abs exit 1
369 1.1 abs fi
370 1.58 lukem find $NETBSDSRCDIR -name \*.o -o -name obj.\* -o -name obj -exec rm \{\} \;
371 1.1 abs
372 1.1 abs if [ -z $BSDOBJDIR ] ; then
373 1.1 abs BSDOBJDIR=/usr/obj
374 1.1 abs fi
375 1.1 abs if [ -d $BSDOBJDIR ] ; then
376 1.1 abs rm -rf $BSDOBJDIR
377 1.1 abs fi
378 1.1 abs
379 1.58 lukem cd $NETBSDSRCDIR && make cleandir
380 1.1 abs
381 1.1 abs ---cut here---
382 1.1 abs
383 1.1 abs Critical utilities:
384 1.1 abs ^^^^^^^^^^^^^^^^^^^
385 1.1 abs gnu/usr.bin/egcs
386 1.3 itojun usr.bin/compile_et
387 1.1 abs usr.bin/make
388 1.1 abs usr.bin/yacc
389 1.1 abs usr.bin/lex
390 1.11 lukem usr.bin/xlint
391 1.2 mrg usr.sbin/config
392 1.1 abs
393 1.34 simonb Other problems and possible solutions:
394 1.1 abs ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
395 1.1 abs Symptom:Unreasonable compiler errors.
396 1.1 abs Fix: Rebuild gnu/usr.bin/egcs
397 1.1 abs
398 1.1 abs Symptom:Complaints involving a Makefile.
399 1.17 erh Fix: Rebuild usr.bin/make:
400 1.17 erh cd usr.bin/make && make && make install
401 1.17 erh Or, a failsafe method if that doesn't work:
402 1.17 erh cd usr.bin/make && cc *.c */*.c -I . -o make && mv make /usr/bin
403 1.17 erh
404 1.1 abs Fix: Make sure .mk files are up to date.
405 1.1 abs cd share/mk && make install
406 1.2 mrg
407 1.2 mrg Symptom:Kernel `config' fails to configure any kernel, including GENERIC.
408 1.2 mrg Fix: Rebuild usr.sbin/config
409 1.1 abs
410 1.1 abs Symptom:
411 1.1 abs Fix: Rebuild usr.bin/yacc
412 1.1 abs
413 1.1 abs Symptom:
414 1.1 abs Fix: Rebuild usr.bin/lex
415 1.1 abs
416 1.1 abs Symptom:
417 1.1 abs Fix: rm /usr/lib/libbfd.a
418 1.4 itojun
419 1.4 itojun Symptom:Obsolete intermediate files are used during compilation
420 1.4 itojun Fix: Try the following sequence of commands in the directory in question.
421 1.4 itojun make cleandir; rm `make print-objdir`; make cleandir; make obj
422 1.4 itojun (If you built the tree without "make obj" in the past, obsolete files
423 1.4 itojun may remain. The command tries to clean everything up)
424 1.5 wiz
425 1.5 wiz Symptom:.../sysinst/run.c:xx: warning: initialization from incompatible pointer type
426 1.5 wiz Fix: Rebuild and install usr.bin/menuc
427 1.12 itojun
428 1.12 itojun Symptom:mklocale not found during build in share/locale/ctype
429 1.12 itojun Fix: Build and install usr.bin/mklocale
430 1.13 dogcow
431 1.13 dogcow Symptom:undefined reference to `__assert13'
432 1.13 dogcow Fix: Rebuild and install lib/libc
433 1.13 dogcow
434 1.19 cgd Symptom:usr.sbin/config fails to build.
435 1.19 cgd Fix: Try building with -DMAKE_BOOTSTRAP added to CFLAGS in Makefile.
436 1.13 dogcow
437 1.19 cgd Symptom:undefined reference to `getprogname' or `setprogname'
438 1.19 cgd Fix: Rebuild and install lib/libc
439 1.24 abs
440 1.24 abs Symptom:lint does not understand the '-X' option
441 1.24 abs Fix: May need to build & install libs with NOLINT=1 before rebuilding lint
442