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