UPDATING revision 1.43 1 1.43 mason $NetBSD: UPDATING,v 1.43 2001/10/29 01:53:56 mason 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.42 perry Note that users of the new toolchain in many instances will not
9 1.42 perry experience the problems listed below because their host tools are
10 1.42 perry automatically generated for them.
11 1.42 perry
12 1.1 abs Recent changes:
13 1.1 abs ^^^^^^^^^^^^^^^
14 1.43 mason
15 1.43 mason 20011028:
16 1.43 mason /usr/src/build.sh exists as of 2001.10.19. From the cvs log:
17 1.43 mason
18 1.43 mason "Script to automate bootstrapping a build on any host platform.
19 1.43 mason Creates a bmake (rebuilds, if necessary) and invokes that to
20 1.43 mason start the build."
21 1.43 mason
22 1.43 mason This should, incidentally, allow 1.5.x hosts to build -current
23 1.43 mason using the new toolchain, on USE_NEW_TOOLCHAIN-enabled platforms.
24 1.42 perry
25 1.42 perry 20011028:
26 1.42 perry src/etc/Makefile now needs install to be able to handle
27 1.42 perry symlinks that point to nowhere. A bug in install that
28 1.42 perry prevented this was corrected.
29 1.42 perry
30 1.42 perry Solution: update and reinstall usr.bin/xinstall
31 1.42 perry Better Solution: Use the new toolchain and it will just work
32 1.42 perry for you.
33 1.40 lukem
34 1.40 lukem 20011006:
35 1.40 lukem /etc/mtree/NetBSD.dist has been updated to take advantage of
36 1.40 lukem absolute path support added to mtree(8). Older mtree(8)s don't
37 1.40 lukem understand the format.
38 1.40 lukem
39 1.40 lukem Solution: update and reinstall usr.sbin/mtree
40 1.39 jmc
41 1.39 jmc 20011004:
42 1.39 jmc
43 1.39 jmc Crunchgen has been updated to work via reach-over makefiles. Updating
44 1.39 jmc is suggested before running a snapshot build
45 1.36 tv
46 1.36 tv 20010922:
47 1.36 tv The new toolchain is enabled on i386. This new build method
48 1.38 tron is intended to make all the upgrade issues elsewhere in UPDATING
49 1.36 tv obsolete (stay tuned...).
50 1.36 tv
51 1.37 kristerw i386 platform builds must now set TOOLDIR in mk.conf or the
52 1.36 tv environment in order to build the system. This is a pathname
53 1.36 tv where host build tools will be installed, and must NOT be
54 1.36 tv the same as src/tools.
55 1.36 tv
56 1.36 tv (Optionally, USETOOLS=no can be set in the environment if you
57 1.36 tv wish to avoid using the separate host toolchain for building a
58 1.36 tv subtree. Otherwise, this will default to "yes" automatically.)
59 1.35 thorpej
60 1.35 thorpej 20010915:
61 1.35 thorpej The new "ubcperf" code committed by Chuck Silvers removed
62 1.35 thorpej a header file, uvm/uvm_vnode.h. There may be stale .depend
63 1.35 thorpej files that still reference this file.
64 1.35 thorpej
65 1.35 thorpej Solution: "make cleandir && make dependall" in affected
66 1.35 thorpej directories.
67 1.31 enami
68 1.31 enami 20010803:
69 1.31 enami grep.info is now built from grep.texi using makeinfo. Since it
70 1.31 enami requires makeinfo v4.0, you need to install new texinfo before
71 1.31 enami building gnu/usr.bin/grep. To install new texinfo, please follow
72 1.31 enami the instruction described in 20010726 entry.
73 1.30 enami
74 1.30 enami 20010803:
75 1.41 wiz (i386 only): i386 kernel now uses new instructions like
76 1.41 wiz `fxsave' which old gas doesn't understand. To build the
77 1.41 wiz kernel successfuly, you need to build and install new gas
78 1.41 wiz (gnu/usr.bin/gas.new), or (temporarily) comment out
79 1.41 wiz "options I686_CPU" from your kernel configuration until you
80 1.41 wiz rebuilt your userland (and got a new gas).
81 1.29 bjh21
82 1.29 bjh21 20010731:
83 1.29 bjh21 Bootloader update on ELF platforms. DDB in kernels from before
84 1.29 bjh21 this will be unable to read symbol tables provided by newer
85 1.29 bjh21 bootloaders.
86 1.27 assar
87 1.27 assar 20010726:
88 1.27 assar Texinfo was updated to 4.0. To avoid failures when trying to
89 1.28 assar build the included texinfo files, do:
90 1.28 assar
91 1.28 assar cd src/gnu/usr.bin/texinfo
92 1.28 assar make MKINFO=no dependall install
93 1.25 thorpej
94 1.25 thorpej 20010718:
95 1.25 thorpej
96 1.25 thorpej Enabled correct .init/.fini processing in crt0. The way this
97 1.25 thorpej was done was to change a -I directive to cc(1), which means
98 1.25 thorpej make(1) will have a stale dependency (it will be checking the
99 1.25 thorpej timestamp on the wrong "dot_init.h").
100 1.25 thorpej
101 1.25 thorpej The symptom you will see is that new programs die with SIGSEGV
102 1.25 thorpej if you have a stale dependency.
103 1.25 thorpej
104 1.25 thorpej Solution: "make cleandir" in both lib/csu and libexec/ld.elf_so
105 1.25 thorpej before starting your build.
106 1.26 thorpej
107 1.26 thorpej 20010628:
108 1.26 thorpej
109 1.26 thorpej A construct was added to uvm_page.h that uncovered a bug
110 1.26 thorpej in lint(1). If you get a warning/error about a non-portable
111 1.26 thorpej bitfield, update your lint(1) before proceeding.
112 1.21 jmc
113 1.21 jmc 20010226:
114 1.21 jmc
115 1.22 jmc Added named user/group to system. Need to hand add this in or builds
116 1.21 jmc will break as mtree aborts early.
117 1.21 jmc
118 1.21 jmc To work around add by hand:
119 1.21 jmc
120 1.21 jmc named:*:14:
121 1.21 jmc
122 1.22 jmc to /etc/group and add:
123 1.22 jmc
124 1.22 jmc named:*:14:14::0:0:Named pseudo-user:/var/named:/sbin/nologin
125 1.22 jmc
126 1.22 jmc to master.passwd (use vipw for instance if doing by hand).
127 1.22 jmc
128 1.22 jmc Now a make build should progress.
129 1.18 jmc
130 1.18 jmc 20010219:
131 1.18 jmc get/setprogname() added. Any hostprog's that may use this will need
132 1.20 jmc to be bootstrapped manually until the host system is current.
133 1.18 jmc
134 1.18 jmc Known problems: sys/arch/macppc/stand/fixcoff
135 1.19 cgd usr.sbin/config (adding -DMAKE_BOOTSTRAP to
136 1.19 cgd CFLAGS and rebuilding should work)
137 1.20 jmc usr.sbin/mdsetimage - Build a static copy if
138 1.20 jmc building a snapshot before fully bootstrapped.
139 1.15 christos
140 1.15 christos 20010204:
141 1.15 christos prepare the code to compile with stricter gcc flags. in
142 1.15 christos particular start eliminating redundant declarations. Yacc
143 1.15 christos needs to be installed before make build.
144 1.10 christos
145 1.10 christos 20010114:
146 1.10 christos introduce .if commands(target) in make(1). You need to
147 1.10 christos bring everything up-to-date first, then without installing
148 1.23 tron anything make and install in usr.bin/make, then proceed
149 1.10 christos with make build.
150 1.9 sommerfe
151 1.9 sommerfe 20010101:
152 1.9 sommerfe bsd.subdir.mk committed 20001230 had a bug which caused
153 1.9 sommerfe afterinstall targets to run too soon; update again.
154 1.8 sommerfe
155 1.8 sommerfe 20001230:
156 1.8 sommerfe New share/mk files needed to support .WAIT in SUBDIR variables.
157 1.8 sommerfe If you get make errors,
158 1.8 sommerfe (cd share/mk; make install)
159 1.8 sommerfe Also, PRINTOBJDIR has changed and is now used more heavily.
160 1.6 ad
161 1.6 ad 20001019:
162 1.7 ad The `ca' device driver has been replaced by `ld'; although the
163 1.6 ad major and minor numbers haven't changed, you should update your /dev
164 1.6 ad directory.
165 1.1 abs
166 1.4 itojun 20000929:
167 1.4 itojun The following make directives are obsoleted.
168 1.4 itojun MKCRYPTO_RSA NOCRYPTO_RSA NOCRYPTO_RC5 NOCRYPTO_IDEA
169 1.4 itojun By default, RSA is built into libcrypto. IDEA and RC5 will not be
170 1.16 wiz built into libcrypto. By using MKCRYPTO_{RC5,IDEA}, you can build
171 1.4 itojun additional library libcrypto_{idea,rc5}.
172 1.4 itojun
173 1.1 abs 20000623:
174 1.1 abs MKCRYPTO and friends added to share/mk/bsd.own.mk.
175 1.1 abs 'cd share/mk ; make install' needed before make build.
176 1.1 abs
177 1.1 abs
178 1.1 abs Hints for a more successful build:
179 1.1 abs ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
180 1.2 mrg Build a new kernel first:
181 1.2 mrg This makes sure that any new system calls or features
182 1.2 mrg expected by the new userland will be present. This
183 1.2 mrg helps to avoid critical errors when upgrading.
184 1.1 abs Use object directories:
185 1.1 abs This helps to keep stale object
186 1.1 abs files from polluting the build if a Makefile "forgets"
187 1.1 abs about one. It also makes it easier to clean up after
188 1.1 abs a build. It's also necessary if you want to use the
189 1.1 abs same source tree for multiple machines.
190 1.1 abs To use object directories:
191 1.1 abs a) cd /usr/src ; make cleandir
192 1.2 mrg b) Add "OBJMACHINE=yes" to /etc/mk.conf
193 1.2 mrg c) Add "MKOBJDIRS=yes" to /etc/mk.conf
194 1.1 abs d) cd /usr/src ; make build
195 1.2 mrg Note that running "make obj" in a directory will create
196 1.2 mrg in obj.$MACHINE directory.
197 1.1 abs Build to a DESTDIR:
198 1.1 abs This helps to keep old
199 1.1 abs installed files (especially libraries) from interfering
200 1.1 abs with the new build.
201 1.1 abs To build to a DESTDIR, set the DESTDIR environment
202 1.2 mrg variable before running make build. It should be set to
203 1.2 mrg the pathname of an initially empty directory.
204 1.1 abs Problems: you might need to update critical utilities
205 1.1 abs without using DESTDIR since nothing is executed
206 1.1 abs from what is installed in DESTDIR.
207 1.1 abs (See critical utils, below)
208 1.1 abs Build often:
209 1.1 abs This keeps critical utilities current enough to not choke
210 1.1 abs on any other part of the source tree that depends on up to
211 1.1 abs date functionality.
212 1.1 abs
213 1.1 abs What to do if things don't work:
214 1.1 abs ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
215 1.1 abs When things don't work there is usually a few things that commonly
216 1.1 abs should be done.
217 1.1 abs 1) make includes
218 1.1 abs This should be done automatically by make build.
219 1.1 abs 2) cd share/mk && make install
220 1.1 abs Again, automatically done by make build.
221 1.1 abs
222 1.1 abs Failsafe rebuild of a small part of the tree:
223 1.1 abs ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
224 1.1 abs To make sure you rebuild something correctly you want to do
225 1.1 abs something like the following:
226 1.1 abs 1) Make sure the includes and .mk files are up to date.
227 1.1 abs 2) Make sure any program used to build the particular
228 1.1 abs utility is up to date. (yacc, lex, etc...)
229 1.1 abs 3) cd ...path/to/util...
230 1.1 abs make cleandir
231 1.1 abs rm ...all obj directories...
232 1.1 abs make cleandir # yes, again
233 1.1 abs make obj
234 1.1 abs make depend && make
235 1.1 abs
236 1.1 abs Failsafe rebuild of the entire tree:
237 1.1 abs ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
238 1.1 abs If you really want to make sure the source tree is clean and
239 1.2 mrg ready for a build try the following. Note that sourcing /etc/mk.conf
240 1.2 mrg (a make(1) Makefile) in this manner is not right, and will not work
241 1.2 mrg for anyone who uses any make(1) features in /etc/mk.conf.
242 1.1 abs
243 1.1 abs ---cut here---
244 1.1 abs #!/bin/sh
245 1.1 abs . /etc/mk.conf
246 1.1 abs
247 1.1 abs if [ -z $BSDSRCDIR ] ; then
248 1.1 abs BSDSRCDIR=/usr/src
249 1.1 abs fi
250 1.1 abs if [ \! -d $BSDSRCDIR ] ; then
251 1.1 abs echo Unable to find sources
252 1.1 abs exit 1
253 1.1 abs fi
254 1.1 abs find $BSDSRCDIR -name \*.o -o -name obj.\* -o -name obj -exec rm \{\} \;
255 1.1 abs
256 1.1 abs if [ -z $BSDOBJDIR ] ; then
257 1.1 abs BSDOBJDIR=/usr/obj
258 1.1 abs fi
259 1.1 abs if [ -d $BSDOBJDIR ] ; then
260 1.1 abs rm -rf $BSDOBJDIR
261 1.1 abs fi
262 1.1 abs
263 1.1 abs cd $BSDSRCDIR && make cleandir
264 1.1 abs
265 1.1 abs ---cut here---
266 1.1 abs
267 1.1 abs Critical utilities:
268 1.1 abs ^^^^^^^^^^^^^^^^^^^
269 1.1 abs gnu/usr.bin/egcs
270 1.3 itojun usr.bin/compile_et
271 1.1 abs usr.bin/make
272 1.1 abs usr.bin/yacc
273 1.1 abs usr.bin/lex
274 1.11 lukem usr.bin/xlint
275 1.2 mrg usr.sbin/config
276 1.1 abs
277 1.34 simonb Other problems and possible solutions:
278 1.1 abs ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
279 1.1 abs Symptom:Unreasonable compiler errors.
280 1.1 abs Fix: Rebuild gnu/usr.bin/egcs
281 1.1 abs
282 1.1 abs Symptom:Complaints involving a Makefile.
283 1.17 erh Fix: Rebuild usr.bin/make:
284 1.17 erh cd usr.bin/make && make && make install
285 1.17 erh Or, a failsafe method if that doesn't work:
286 1.17 erh cd usr.bin/make && cc *.c */*.c -I . -o make && mv make /usr/bin
287 1.17 erh
288 1.1 abs Fix: Make sure .mk files are up to date.
289 1.1 abs cd share/mk && make install
290 1.2 mrg
291 1.2 mrg Symptom:Kernel `config' fails to configure any kernel, including GENERIC.
292 1.2 mrg Fix: Rebuild usr.sbin/config
293 1.1 abs
294 1.1 abs Symptom:
295 1.1 abs Fix: Rebuild usr.bin/yacc
296 1.1 abs
297 1.1 abs Symptom:
298 1.1 abs Fix: Rebuild usr.bin/lex
299 1.1 abs
300 1.1 abs Symptom:
301 1.1 abs Fix: rm /usr/lib/libbfd.a
302 1.4 itojun
303 1.4 itojun Symptom:Obsolete intermediate files are used during compilation
304 1.4 itojun Fix: Try the following sequence of commands in the directory in question.
305 1.4 itojun make cleandir; rm `make print-objdir`; make cleandir; make obj
306 1.4 itojun (If you built the tree without "make obj" in the past, obsolete files
307 1.4 itojun may remain. The command tries to clean everything up)
308 1.5 wiz
309 1.5 wiz Symptom:.../sysinst/run.c:xx: warning: initialization from incompatible pointer type
310 1.5 wiz Fix: Rebuild and install usr.bin/menuc
311 1.12 itojun
312 1.12 itojun Symptom:mklocale not found during build in share/locale/ctype
313 1.12 itojun Fix: Build and install usr.bin/mklocale
314 1.13 dogcow
315 1.13 dogcow Symptom:undefined reference to `__assert13'
316 1.13 dogcow Fix: Rebuild and install lib/libc
317 1.13 dogcow
318 1.19 cgd Symptom:usr.sbin/config fails to build.
319 1.19 cgd Fix: Try building with -DMAKE_BOOTSTRAP added to CFLAGS in Makefile.
320 1.13 dogcow
321 1.19 cgd Symptom:undefined reference to `getprogname' or `setprogname'
322 1.19 cgd Fix: Rebuild and install lib/libc
323 1.24 abs
324 1.24 abs Symptom:lint does not understand the '-X' option
325 1.24 abs Fix: May need to build & install libs with NOLINT=1 before rebuilding lint
326