UPDATING revision 1.85 1 1.85 atatat $NetBSD: UPDATING,v 1.85 2003/04/02 18:01:53 atatat 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.85 atatat
11 1.85 atatat 20030324:
12 1.85 atatat sendmail version 8.12.8 was imported. Since sendmail is
13 1.85 atatat now setgid to the smmsp group, and runs in "collection"
14 1.85 atatat mode for most common activities, there is a new config
15 1.85 atatat file called submit.cf that needs to live in /etc/mail.
16 1.85 atatat The generic submit.cf sample in /usr/share/sendmail/cf
17 1.85 atatat is named netbsd-msp.cf. Upgrading your regular sendmail
18 1.85 atatat configuration file is also strongly advised.
19 1.85 atatat
20 1.85 atatat See the section named "MESSAGE SUBMISSION PROGRAM" in
21 1.85 atatat the updated /usr/share/sendmail/README file for more
22 1.85 atatat information.
23 1.82 wiz
24 1.82 wiz 20030117:
25 1.82 wiz Texinfo was updated to 4.3. To avoid failures when trying to
26 1.82 wiz build the included texinfo files, do:
27 1.82 wiz
28 1.82 wiz cd src/gnu/usr.bin/texinfo
29 1.82 wiz make MKINFO=no dependall install
30 1.81 lukem
31 1.81 lukem 20021223:
32 1.81 lukem The METALOG format changed slightly, to remove the leading
33 1.81 lukem "${DESTDIR}" from path names.
34 1.81 lukem This only affects people building with UNPRIVED.
35 1.81 lukem For complete safety, remove the DESTDIR entirely and
36 1.81 lukem update tools/mtree, before running make build.
37 1.80 lukem
38 1.80 lukem 20021219:
39 1.80 lukem install(1) had a '-N dbdir' option added, to specify an
40 1.80 lukem alternate location to look up users & groups (instead
41 1.80 lukem of the host system passwd(5) and group(5) databases).
42 1.80 lukem
43 1.80 lukem The build system was modified to take advantage of
44 1.80 lukem this option (using ${NETBSDSRCDIR}/etc), so if you
45 1.83 kei use USETOOLS==no, you may have to rebuild and
46 1.80 lukem reinstall usr.bin/xinstall first.
47 1.78 lukem
48 1.78 lukem 20021130:
49 1.78 lukem fparseln(3) moved from libutil to libc.
50 1.78 lukem If building to DESTDIR=/, reinstall the includes
51 1.78 lukem and rebuild libc:
52 1.78 lukem make includes
53 1.78 lukem make do-lib-libc
54 1.78 lukem If using build.sh, "cd tools/compat && make clean"
55 1.78 lukem before rebuilding the tools.
56 1.77 lukem
57 1.77 lukem 20021126:
58 1.77 lukem The mk.conf(5) variable SYS_INCLUDE has been deprecated,
59 1.77 lukem including the optional "SYS_INCLUDE=symlinks" support.
60 1.77 lukem All header files, including <sys/*.h> are copied into
61 1.77 lukem /usr/include.
62 1.76 thorpej
63 1.76 thorpej 20021121:
64 1.76 thorpej The C run-time support files crtbegin.o and crtend.o
65 1.76 thorpej (and their companions crtbeginS.o and crtendS.o) were
66 1.76 thorpej split up, with new crti.o and crtn.o files resulting.
67 1.76 thorpej This means that libtool needs to be rebuilt once the
68 1.76 thorpej new libraries are installed. The process of rebuilding
69 1.76 thorpej libtool will cause it to automatically notice the new
70 1.76 thorpej required files, but it *must* be rebuilt in order to
71 1.76 thorpej do this.
72 1.76 thorpej
73 1.76 thorpej An out-of-date libtool will result in shared libraries
74 1.76 thorpej which lack _init() and _fini() routines, which means that
75 1.76 thorpej their global contructors/destructors will not be invoked.
76 1.75 thorpej
77 1.75 thorpej 20021121:
78 1.75 thorpej A bug related to how ARM ELF objects were tagged has been
79 1.75 thorpej corrected.
80 1.75 thorpej
81 1.75 thorpej NetBSD ARM ELF uses the soft-VFP floating point model by
82 1.75 thorpej default. However, the assembler lacked support for marking
83 1.75 thorpej objects as using the VFP floating point format, and the
84 1.79 wiz compiler was not properly passing the flag indicating "soft-VFP"
85 1.75 thorpej to the assembler.
86 1.75 thorpej
87 1.75 thorpej Unfortunately, this means that the linker will now consider
88 1.75 thorpej old (i.e. not marked "softvfp") NetBSD ARM ELF objects to be
89 1.75 thorpej incompatible with new (properly marked) objects.
90 1.75 thorpej
91 1.75 thorpej The problem will only manifest itself if you attempt to compile
92 1.75 thorpej a new program using the fixed toolchain, and link that program
93 1.75 thorpej against old libraries which do not have the proper "softvfp"
94 1.75 thorpej markings. ALL OF YOUR EXISTING BINARIES AND SHARED LIBRARIES
95 1.75 thorpej WILL CONTINUE TO WORK PROPERLY.
96 1.75 thorpej
97 1.75 thorpej The only work-around for the problem is to recompile all of
98 1.75 thorpej the libraries on the system. The easiest way to do this for
99 1.79 wiz system libraries is to install a binary snapshot; they are
100 1.75 thorpej generally available on releng.netbsd.org. Any packages you
101 1.75 thorpej have installed which supply libraries will have to be recompiled
102 1.75 thorpej if you wish to link new programs against those libraries.
103 1.75 thorpej
104 1.75 thorpej If you have questions about this matter, please contact
105 1.75 thorpej port-arm (a] netbsd.org.
106 1.73 provos
107 1.73 provos 20021011:
108 1.73 provos Systrace has been improved to support privilege elevation.
109 1.73 provos Updating the kernel requires the userland part of systrace
110 1.79 wiz to be rebuilt.
111 1.72 thorpej
112 1.72 thorpej 20021010:
113 1.72 thorpej The config(8) grammar was changed to allow options to register
114 1.72 thorpej dependencies on attributes, as well as other options. Users
115 1.72 thorpej must update and reinstall usr.sbin/config before building a new
116 1.72 thorpej kernel.
117 1.70 thorpej
118 1.70 thorpej 20021009:
119 1.70 thorpej A new attribute dependency syntax was introduced to config(8),
120 1.70 thorpej which is now used by the SCSI configuration description. Users
121 1.71 wiz must update and reinstall usr.sbin/config before building a new
122 1.70 thorpej kernel.
123 1.69 thorpej
124 1.69 thorpej 20021003:
125 1.69 thorpej Several changes have been made to the autoconfiguration
126 1.69 thorpej framework. Users must update and reinstall usr.sbin/config
127 1.69 thorpej before building a new kernel.
128 1.74 jschauma
129 1.74 jschauma 20021001:
130 1.74 jschauma The i386mp branch has been merged. To compile a kernel, users
131 1.74 jschauma will need to add the option 'cpu* at mainbus?' to their configuration
132 1.74 jschauma file. Multiprocessor kernels will need
133 1.74 jschauma ioapic* at mainbus? apid ?
134 1.74 jschauma options MULTIPROCESSOR
135 1.74 jschauma options COM_MPLOCK
136 1.68 lukem
137 1.68 lukem 20020922:
138 1.68 lukem MKDYNAMICROOT=yes enabled by default, which means that
139 1.68 lukem certain shared libraries are installed into /lib, the shared
140 1.68 lukem linker is installed into /libexec, and all programs in /bin
141 1.68 lukem and /sbin are dynamically linked.
142 1.68 lukem If you do not use "make build", you should ensure that
143 1.68 lukem you have the libraries and shared linker in the new locations,
144 1.68 lukem with:
145 1.68 lukem make do-lib-csu do-lib-libc do-lib do-gnu-lib do-ld.elf_so
146 1.67 lukem
147 1.67 lukem 20020917:
148 1.67 lukem USE_NEW_TOOLCHAIN has been replaced with:
149 1.67 lukem - TOOLCHAIN_MISSING -- set to "yes" on platforms for which
150 1.67 lukem there is no working in-tree toolchain (hppa, ns32k, sh5,
151 1.67 lukem x86_64).
152 1.67 lukem - EXTERNAL_TOOLCHAIN -- if defined by the user, points to the
153 1.79 wiz root of an external toolchain (e.g. /usr/local/gnu). This
154 1.67 lukem enables the cross-build framework even for TOOLCHAIN_MISSING
155 1.67 lukem platforms.
156 1.66 gehenna
157 1.66 gehenna 20020906:
158 1.66 gehenna gehenna-devsw has been merged into the trunk. Need to update and
159 1.79 wiz reinstall usr.sbin/config before building the kernel.
160 1.65 lukem
161 1.65 lukem 20020822:
162 1.65 lukem Crunched rescue tools (contents of /bin and /sbin, plus others)
163 1.65 lukem are now provided in /rescue.
164 1.65 lukem
165 1.65 lukem To ensure that these are built statically linked (no matter
166 1.65 lukem what the setting of LDSTATIC is), use a crunchgen(1) built
167 1.65 lukem from sources newer than 20020820 (see the next entry).
168 1.65 lukem
169 1.65 lukem 20020820:
170 1.65 lukem crunchgen(1) changed to ensure that the generated program
171 1.65 lukem is statically linked.
172 1.65 lukem
173 1.65 lukem Solution: update and reinstall usr.bin/crunch
174 1.84 grant
175 1.84 grant 20020605:
176 1.84 grant smmsp user/group has been added for sendmail.
177 1.84 grant
178 1.84 grant Add the following into /etc/group:
179 1.84 grant
180 1.84 grant smmsp:*:17:
181 1.84 grant
182 1.84 grant and the following to /etc/master.passwd (via vipw):
183 1.84 grant
184 1.84 grant smmsp:*:17:17::0:0:Sendmail Message Submission Program:/nonexistent:/sbin/nologin
185 1.61 itojun
186 1.61 itojun 20020515:
187 1.61 itojun sshd user/group has been added. Need to hand add this in, or sshd
188 1.61 itojun will not let you log in (with default, or UsePrivlegeSeparation=yes)
189 1.61 itojun
190 1.61 itojun Add the following into /etc/group:
191 1.61 itojun
192 1.61 itojun sshd:*:16:
193 1.61 itojun
194 1.61 itojun and the following to /etc/master.passwd (via vipw):
195 1.61 itojun
196 1.63 enami sshd:*:16:16::0:0:& pseudo-user:/var/chroot/sshd:/sbin/nologin
197 1.61 itojun
198 1.79 wiz Also /var/chroot/sshd directory needs to be present (digged as part of
199 1.79 wiz the build process).
200 1.60 sommerfe
201 1.60 sommerfe 20020426:
202 1.60 sommerfe NBUILDJOBS obsoleted in favor of just using -j.
203 1.59 lukem
204 1.59 lukem 20020426:
205 1.59 lukem etc/postinstall added, which performs various checks for
206 1.59 lukem configuration file updates and changes, and can fix most of
207 1.59 lukem the problems identified.
208 1.59 lukem This should make it much easier to upgrade a system's
209 1.59 lukem configuration from earlier systems (as far back as NetBSD 1.5).
210 1.56 lukem
211 1.56 lukem 20020320:
212 1.79 wiz <bsd.lib.mk> needs a new install(1) for its "-a cmd" support.
213 1.79 wiz Build and install at usr.bin/xinstall before the build.
214 1.56 lukem
215 1.55 itojun 20020319:
216 1.79 wiz Raw IPv6 socket now makes strict checking for sa_family and sa_len
217 1.79 wiz on send(2) operation. Be sure to have sbin/rtsol and usr.sbin/rtsold
218 1.55 itojun newer than November 2001 when you upgrade the kernel.
219 1.55 itojun
220 1.54 itojun 20020311:
221 1.54 itojun ssh configuration files were moved from /etc to /etc/ssh. Beware
222 1.54 itojun if you restart your machine from remote. Note that sshd.conf needs
223 1.54 itojun to be changed (due to the use of "/etc" inside).
224 1.54 itojun
225 1.54 itojun 20020223:
226 1.53 matt Users of the VAX port will need to rebuild and install gas
227 1.53 matt so it deal with the now present register prefix used in all
228 1.53 matt the VAX assembly files.
229 1.53 matt
230 1.50 itojun 20020118:
231 1.50 itojun ntpd user/group has been added. Need to hand add this in or builds
232 1.50 itojun will break as mtree aborts early.
233 1.50 itojun
234 1.50 itojun Add the following into /etc/group:
235 1.50 itojun
236 1.50 itojun ntpd:*:15:
237 1.50 itojun
238 1.50 itojun and the following to /etc/master.passwd (via vipw):
239 1.50 itojun
240 1.50 itojun ntpd:*:15:15::0:0:Ntpd pseudo-user:/var/chroot/ntpd:/sbin/nologin
241 1.50 itojun
242 1.49 jmc 20011207:
243 1.49 jmc If you're attempting to build a snapshot on sparc64 and are getting
244 1.49 jmc reloc errors from the toolchain groff binary this means your native
245 1.49 jmc toolchain has some broken C++ bits.
246 1.49 jmc
247 1.49 jmc To fix:
248 1.49 jmc
249 1.49 jmc Build a new toolchain (i.e. build.sh -t)
250 1.49 jmc Use the new toolchain to build and install natively (i.e. /usr/lib)
251 1.49 jmc
252 1.49 jmc gnu/lib/libgcc
253 1.51 pooka gnu/lib/libstdc++
254 1.49 jmc
255 1.49 jmc After this a snapshot will be able to be built.
256 1.49 jmc
257 1.47 jmc 20011201:
258 1.47 jmc In order for a sparc64 build to work you must have a working awk. If
259 1.47 jmc you've built and installed a system with the new toolchain up to this
260 1.52 wiz point you do not have a working awk as its ability to do floating
261 1.47 jmc point is broken.
262 1.47 jmc
263 1.47 jmc To build:
264 1.47 jmc
265 1.47 jmc remake and install gnu/lib/libgcc
266 1.47 jmc remake and install gnu/usr.bin/gawk into /usr/bin (make sure it links
267 1.48 jmc against the new libgcc.a)
268 1.47 jmc
269 1.46 thorpej 20011128:
270 1.46 thorpej Kernel config information was changed to use defflag in
271 1.46 thorpej the various "files" files. Bug fixes to config(8) are
272 1.46 thorpej required in order for this to work properly. Make sure
273 1.46 thorpej to build and install in usr.sbin/config before attempting
274 1.46 thorpej to build a new kernel.
275 1.46 thorpej
276 1.45 yamt 20011030:
277 1.45 yamt libc/locale/wcstod.c now needs new lint(1). Update lint(1)
278 1.45 yamt before building libc.
279 1.43 mason
280 1.44 tv 20011029:
281 1.44 tv The new document BUILDING.mdoc (view with nroff | more, or
282 1.44 tv see pre-generated .txt and .html versions) describes the build
283 1.44 tv procedure in great detail. BUILDING, and the USE_NEW_TOOLCHAIN
284 1.44 tv build process, are intended in the long run to replace this
285 1.44 tv manual update log.
286 1.44 tv
287 1.44 tv Users building a USE_NEW_TOOLCHAIN system should read the
288 1.44 tv BUILDING document for caveats. Generally, BUILDING supersedes
289 1.44 tv UPDATING for these systems, as tool updating is taken care of
290 1.44 tv by the new build system.
291 1.42 perry
292 1.42 perry 20011028:
293 1.42 perry src/etc/Makefile now needs install to be able to handle
294 1.42 perry symlinks that point to nowhere. A bug in install that
295 1.42 perry prevented this was corrected.
296 1.42 perry
297 1.42 perry Solution: update and reinstall usr.bin/xinstall
298 1.42 perry Better Solution: Use the new toolchain and it will just work
299 1.42 perry for you.
300 1.40 lukem
301 1.40 lukem 20011006:
302 1.40 lukem /etc/mtree/NetBSD.dist has been updated to take advantage of
303 1.40 lukem absolute path support added to mtree(8). Older mtree(8)s don't
304 1.40 lukem understand the format.
305 1.40 lukem
306 1.40 lukem Solution: update and reinstall usr.sbin/mtree
307 1.39 jmc
308 1.39 jmc 20011004:
309 1.39 jmc Crunchgen has been updated to work via reach-over makefiles. Updating
310 1.39 jmc is suggested before running a snapshot build
311 1.36 tv
312 1.35 thorpej 20010915:
313 1.35 thorpej The new "ubcperf" code committed by Chuck Silvers removed
314 1.35 thorpej a header file, uvm/uvm_vnode.h. There may be stale .depend
315 1.35 thorpej files that still reference this file.
316 1.35 thorpej
317 1.35 thorpej Solution: "make cleandir && make dependall" in affected
318 1.35 thorpej directories.
319 1.31 enami
320 1.31 enami 20010803:
321 1.31 enami grep.info is now built from grep.texi using makeinfo. Since it
322 1.31 enami requires makeinfo v4.0, you need to install new texinfo before
323 1.31 enami building gnu/usr.bin/grep. To install new texinfo, please follow
324 1.31 enami the instruction described in 20010726 entry.
325 1.30 enami
326 1.64 sommerfe 20010803:
327 1.41 wiz (i386 only): i386 kernel now uses new instructions like
328 1.41 wiz `fxsave' which old gas doesn't understand. To build the
329 1.64 sommerfe kernel successfully, you need to build and install a new toolchain,
330 1.64 sommerfe (i.e., build.sh -t) or (temporarily) comment out "options I686_CPU"
331 1.64 sommerfe from your kernel configuration until you rebuild your userland.
332 1.64 sommerfe See 20011029 above and BUILDING file in this directory for more information.
333 1.64 sommerfe [updated 20020630 since i386 gas moved when USE_NEW_TOOLCHAIN enabled]
334 1.29 bjh21
335 1.29 bjh21 20010731:
336 1.29 bjh21 Bootloader update on ELF platforms. DDB in kernels from before
337 1.29 bjh21 this will be unable to read symbol tables provided by newer
338 1.29 bjh21 bootloaders.
339 1.27 assar
340 1.27 assar 20010726:
341 1.27 assar Texinfo was updated to 4.0. To avoid failures when trying to
342 1.28 assar build the included texinfo files, do:
343 1.28 assar
344 1.28 assar cd src/gnu/usr.bin/texinfo
345 1.28 assar make MKINFO=no dependall install
346 1.25 thorpej
347 1.25 thorpej 20010718:
348 1.25 thorpej Enabled correct .init/.fini processing in crt0. The way this
349 1.25 thorpej was done was to change a -I directive to cc(1), which means
350 1.25 thorpej make(1) will have a stale dependency (it will be checking the
351 1.25 thorpej timestamp on the wrong "dot_init.h").
352 1.25 thorpej
353 1.25 thorpej The symptom you will see is that new programs die with SIGSEGV
354 1.25 thorpej if you have a stale dependency.
355 1.25 thorpej
356 1.25 thorpej Solution: "make cleandir" in both lib/csu and libexec/ld.elf_so
357 1.25 thorpej before starting your build.
358 1.26 thorpej
359 1.26 thorpej 20010628:
360 1.26 thorpej A construct was added to uvm_page.h that uncovered a bug
361 1.26 thorpej in lint(1). If you get a warning/error about a non-portable
362 1.26 thorpej bitfield, update your lint(1) before proceeding.
363 1.21 jmc
364 1.21 jmc 20010226:
365 1.22 jmc Added named user/group to system. Need to hand add this in or builds
366 1.21 jmc will break as mtree aborts early.
367 1.21 jmc
368 1.21 jmc To work around add by hand:
369 1.21 jmc
370 1.21 jmc named:*:14:
371 1.21 jmc
372 1.22 jmc to /etc/group and add:
373 1.22 jmc
374 1.22 jmc named:*:14:14::0:0:Named pseudo-user:/var/named:/sbin/nologin
375 1.22 jmc
376 1.22 jmc to master.passwd (use vipw for instance if doing by hand).
377 1.22 jmc
378 1.22 jmc Now a make build should progress.
379 1.18 jmc
380 1.18 jmc 20010219:
381 1.52 wiz get/setprogname() added. Any hostprogs that may use this will need
382 1.20 jmc to be bootstrapped manually until the host system is current.
383 1.18 jmc
384 1.18 jmc Known problems: sys/arch/macppc/stand/fixcoff
385 1.19 cgd usr.sbin/config (adding -DMAKE_BOOTSTRAP to
386 1.19 cgd CFLAGS and rebuilding should work)
387 1.20 jmc usr.sbin/mdsetimage - Build a static copy if
388 1.20 jmc building a snapshot before fully bootstrapped.
389 1.15 christos
390 1.15 christos 20010204:
391 1.15 christos prepare the code to compile with stricter gcc flags. in
392 1.15 christos particular start eliminating redundant declarations. Yacc
393 1.15 christos needs to be installed before make build.
394 1.10 christos
395 1.10 christos 20010114:
396 1.10 christos introduce .if commands(target) in make(1). You need to
397 1.10 christos bring everything up-to-date first, then without installing
398 1.23 tron anything make and install in usr.bin/make, then proceed
399 1.10 christos with make build.
400 1.9 sommerfe
401 1.9 sommerfe 20010101:
402 1.9 sommerfe bsd.subdir.mk committed 20001230 had a bug which caused
403 1.9 sommerfe afterinstall targets to run too soon; update again.
404 1.8 sommerfe
405 1.8 sommerfe 20001230:
406 1.8 sommerfe New share/mk files needed to support .WAIT in SUBDIR variables.
407 1.8 sommerfe If you get make errors,
408 1.8 sommerfe (cd share/mk; make install)
409 1.8 sommerfe Also, PRINTOBJDIR has changed and is now used more heavily.
410 1.6 ad
411 1.6 ad 20001019:
412 1.7 ad The `ca' device driver has been replaced by `ld'; although the
413 1.6 ad major and minor numbers haven't changed, you should update your /dev
414 1.6 ad directory.
415 1.1 abs
416 1.4 itojun 20000929:
417 1.4 itojun The following make directives are obsoleted.
418 1.4 itojun MKCRYPTO_RSA NOCRYPTO_RSA NOCRYPTO_RC5 NOCRYPTO_IDEA
419 1.4 itojun By default, RSA is built into libcrypto. IDEA and RC5 will not be
420 1.16 wiz built into libcrypto. By using MKCRYPTO_{RC5,IDEA}, you can build
421 1.4 itojun additional library libcrypto_{idea,rc5}.
422 1.1 abs
423 1.1 abs
424 1.1 abs Hints for a more successful build:
425 1.1 abs ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
426 1.2 mrg Build a new kernel first:
427 1.2 mrg This makes sure that any new system calls or features
428 1.2 mrg expected by the new userland will be present. This
429 1.2 mrg helps to avoid critical errors when upgrading.
430 1.1 abs Use object directories:
431 1.1 abs This helps to keep stale object
432 1.1 abs files from polluting the build if a Makefile "forgets"
433 1.1 abs about one. It also makes it easier to clean up after
434 1.1 abs a build. It's also necessary if you want to use the
435 1.1 abs same source tree for multiple machines.
436 1.1 abs To use object directories:
437 1.1 abs a) cd /usr/src ; make cleandir
438 1.2 mrg b) Add "OBJMACHINE=yes" to /etc/mk.conf
439 1.2 mrg c) Add "MKOBJDIRS=yes" to /etc/mk.conf
440 1.1 abs d) cd /usr/src ; make build
441 1.2 mrg Note that running "make obj" in a directory will create
442 1.2 mrg in obj.$MACHINE directory.
443 1.1 abs Build to a DESTDIR:
444 1.1 abs This helps to keep old
445 1.1 abs installed files (especially libraries) from interfering
446 1.1 abs with the new build.
447 1.1 abs To build to a DESTDIR, set the DESTDIR environment
448 1.2 mrg variable before running make build. It should be set to
449 1.2 mrg the pathname of an initially empty directory.
450 1.1 abs Problems: you might need to update critical utilities
451 1.1 abs without using DESTDIR since nothing is executed
452 1.1 abs from what is installed in DESTDIR.
453 1.1 abs (See critical utils, below)
454 1.1 abs Build often:
455 1.1 abs This keeps critical utilities current enough to not choke
456 1.1 abs on any other part of the source tree that depends on up to
457 1.1 abs date functionality.
458 1.1 abs
459 1.1 abs What to do if things don't work:
460 1.1 abs ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
461 1.1 abs When things don't work there is usually a few things that commonly
462 1.1 abs should be done.
463 1.1 abs 1) make includes
464 1.1 abs This should be done automatically by make build.
465 1.1 abs 2) cd share/mk && make install
466 1.1 abs Again, automatically done by make build.
467 1.1 abs
468 1.1 abs Failsafe rebuild of a small part of the tree:
469 1.1 abs ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
470 1.1 abs To make sure you rebuild something correctly you want to do
471 1.1 abs something like the following:
472 1.1 abs 1) Make sure the includes and .mk files are up to date.
473 1.1 abs 2) Make sure any program used to build the particular
474 1.1 abs utility is up to date. (yacc, lex, etc...)
475 1.1 abs 3) cd ...path/to/util...
476 1.1 abs make cleandir
477 1.1 abs rm ...all obj directories...
478 1.1 abs make cleandir # yes, again
479 1.1 abs make obj
480 1.1 abs make depend && make
481 1.1 abs
482 1.1 abs Failsafe rebuild of the entire tree:
483 1.1 abs ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
484 1.1 abs If you really want to make sure the source tree is clean and
485 1.2 mrg ready for a build try the following. Note that sourcing /etc/mk.conf
486 1.2 mrg (a make(1) Makefile) in this manner is not right, and will not work
487 1.2 mrg for anyone who uses any make(1) features in /etc/mk.conf.
488 1.1 abs
489 1.1 abs ---cut here---
490 1.1 abs #!/bin/sh
491 1.1 abs . /etc/mk.conf
492 1.1 abs
493 1.58 lukem if [ -z $NETBSDSRCDIR ] ; then
494 1.58 lukem NETBSDSRCDIR=/usr/src
495 1.1 abs fi
496 1.58 lukem if [ \! -d $NETBSDSRCDIR ] ; then
497 1.1 abs echo Unable to find sources
498 1.1 abs exit 1
499 1.1 abs fi
500 1.58 lukem find $NETBSDSRCDIR -name \*.o -o -name obj.\* -o -name obj -exec rm \{\} \;
501 1.1 abs
502 1.1 abs if [ -z $BSDOBJDIR ] ; then
503 1.1 abs BSDOBJDIR=/usr/obj
504 1.1 abs fi
505 1.1 abs if [ -d $BSDOBJDIR ] ; then
506 1.1 abs rm -rf $BSDOBJDIR
507 1.1 abs fi
508 1.1 abs
509 1.58 lukem cd $NETBSDSRCDIR && make cleandir
510 1.1 abs
511 1.1 abs ---cut here---
512 1.1 abs
513 1.1 abs Critical utilities:
514 1.1 abs ^^^^^^^^^^^^^^^^^^^
515 1.1 abs gnu/usr.bin/egcs
516 1.3 itojun usr.bin/compile_et
517 1.1 abs usr.bin/make
518 1.1 abs usr.bin/yacc
519 1.1 abs usr.bin/lex
520 1.11 lukem usr.bin/xlint
521 1.2 mrg usr.sbin/config
522 1.1 abs
523 1.34 simonb Other problems and possible solutions:
524 1.1 abs ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
525 1.1 abs Symptom:Unreasonable compiler errors.
526 1.1 abs Fix: Rebuild gnu/usr.bin/egcs
527 1.1 abs
528 1.1 abs Symptom:Complaints involving a Makefile.
529 1.17 erh Fix: Rebuild usr.bin/make:
530 1.17 erh cd usr.bin/make && make && make install
531 1.17 erh Or, a failsafe method if that doesn't work:
532 1.17 erh cd usr.bin/make && cc *.c */*.c -I . -o make && mv make /usr/bin
533 1.17 erh
534 1.1 abs Fix: Make sure .mk files are up to date.
535 1.1 abs cd share/mk && make install
536 1.2 mrg
537 1.2 mrg Symptom:Kernel `config' fails to configure any kernel, including GENERIC.
538 1.2 mrg Fix: Rebuild usr.sbin/config
539 1.1 abs
540 1.1 abs Symptom:
541 1.1 abs Fix: Rebuild usr.bin/yacc
542 1.1 abs
543 1.1 abs Symptom:
544 1.1 abs Fix: Rebuild usr.bin/lex
545 1.1 abs
546 1.1 abs Symptom:
547 1.1 abs Fix: rm /usr/lib/libbfd.a
548 1.4 itojun
549 1.4 itojun Symptom:Obsolete intermediate files are used during compilation
550 1.4 itojun Fix: Try the following sequence of commands in the directory in question.
551 1.4 itojun make cleandir; rm `make print-objdir`; make cleandir; make obj
552 1.4 itojun (If you built the tree without "make obj" in the past, obsolete files
553 1.4 itojun may remain. The command tries to clean everything up)
554 1.5 wiz
555 1.5 wiz Symptom:.../sysinst/run.c:xx: warning: initialization from incompatible pointer type
556 1.5 wiz Fix: Rebuild and install usr.bin/menuc
557 1.12 itojun
558 1.12 itojun Symptom:mklocale not found during build in share/locale/ctype
559 1.12 itojun Fix: Build and install usr.bin/mklocale
560 1.13 dogcow
561 1.13 dogcow Symptom:undefined reference to `__assert13'
562 1.13 dogcow Fix: Rebuild and install lib/libc
563 1.13 dogcow
564 1.19 cgd Symptom:usr.sbin/config fails to build.
565 1.19 cgd Fix: Try building with -DMAKE_BOOTSTRAP added to CFLAGS in Makefile.
566 1.13 dogcow
567 1.19 cgd Symptom:undefined reference to `getprogname' or `setprogname'
568 1.19 cgd Fix: Rebuild and install lib/libc
569 1.24 abs
570 1.24 abs Symptom:lint does not understand the '-X' option
571 1.24 abs Fix: May need to build & install libs with NOLINT=1 before rebuilding lint
572