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