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