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