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