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