UPDATING revision 1.272.2.3 1 $NetBSD: UPDATING,v 1.272.2.3 2017/03/20 06:51:32 pgoyette Exp $
2
3 This file (UPDATING) is intended to be a brief reference to recent
4 changes that might cause problems in the build process, and a guide for
5 what to do if something doesn't work.
6
7 For a more detailed description of the recommended way to build NetBSD
8 using build.sh, see the BUILDING file.
9
10 Note that much of the advice in this UPDATING file was written before
11 build.sh existed. Nevertheless, the advice here may be useful for
12 working around specific problems with build.sh.
13
14 Sections are marked with "^^^^^". After the section on "Recent changes"
15 are several sections containing more general information.
16
17 See also: BUILDING, build.sh, Makefile.
18
19 Recent changes:
20 ^^^^^^^^^^^^^^^
21
22 20170211:
23 a new terminfo database has been imported.
24 The structure of it has changed slightly from prior versions and
25 an updated tic tool is required.
26 If you build.sh, don't use -u
27
28 20170207:
29 various arch dependent libc/exect.S files were removed
30 Either remove the obj directories (lib/libc and compat/amd64/i386/lib
31 if it exists) or do a clean build.
32 (This is a bug in the make system, it should be corrected without
33 human intervention, but isn't.)
34
35 20170104:
36 xinput build options have changed.
37 Remove the obj directory (external/mit/xorg/bin/xinput)
38 if you build.sh -u
39
40 20170103:
41 a new version of flex has been imported.
42 Remove the file from obj (external/bsd/flex)
43 if you build.sh -u
44
45 20161014:
46 a new version of OpenSSL has been imported.
47 Remove the files from obj (crypto/external/bsd/openssl)
48 if you build.sh -u
49
50 20161009:
51 a new version of dhcpcd has been imported with slightly changed
52 build infrastructure. When doing a build.sh -u this requires
53 pruning the external/bsd/dhcpcd objdir.
54
55 20160914:
56 i386, amd64, shark, ofppc and macppc have joined shark and x68k
57 ports in using xorg-server 1.18. This requires a clean destdir
58 and a clean objdir.
59
60 20160527:
61 i386 needs a full cleandir or objdir deletion because PIE has
62 been enabled. (see the amd64 entry two down for further info)
63
64 20160418:
65 libedit needs manual removal of all autogenerated files since
66 some of them are not autogenerated anymore. Remember that there
67 might be two copies of libedit if your platform builds "compat".
68
69 20160410:
70 amd64 needs full "make cleandir" or deletion of objdir now that
71 PIE has been enabled for amd64. PIE, or position-independent
72 executables, means all code, including executables and not just
73 shared libraries, is position-independent and hence able to be
74 relocated by ASLR, address space layout randomization.
75
76 The change was made in Makefile variables for compiler and
77 linker flags, for which make(1) does not record dependencies,
78 hence it is unable to detect that all .o files need rebuilding.
79
80 Partial rebuilds with some modified source files will likely
81 fail when linking executables, since the linker refuses to mix
82 position-independent code with position-dependent code in
83 position-independent executables:
84
85 .../x86_64--netbsd/bin/ld: foo.o: relocation R_X86_64_32 against `...' cannot be used when making a shared object; recompile with -fPIC
86
87 20160401:
88 Ports switching to GCC 5.3 will need a full "make cleandir".
89 Some people have found that cleandir is not sufficient, so if
90 in doubt delete the entire object directory tree for gcc.
91
92 20160306:
93 NetBSD's regexp implementation is now part of libnbcompat.
94 Nblex, nbm4, nbpax, nbsed use it and they may crash on
95 non-NetBSD hosts if linked with stale object files produced
96 while they included a non-NetBSD regex.h.
97 In any case, you should "make cleandir" at least these tools
98 before updating your toolchain.
99
100 20160125:
101 Dtrace has been enabled by default on some architectures.
102 When doing an update build, make sure to clean the etc/mtree
103 object directory before starting the build - otherwise the
104 needed directories in destdir will not be created.
105 An easy way to do this is:
106 cd src/etc/mtree && $TOOLDIR/bin/nbmake-$arch cleandir
107
108 20150818:
109 New acpica requires "make cleandir" in src/external/bsd/acpica
110 again.
111
112 20150413:
113 New acpica requires "make cleandir" and reinstalling yacc
114 in /usr/src/external/bsd/byacc and /usr/src/tools/yacc and
115 also "make cleandir" in /usr/src/external/bsd/acpica.
116
117 20150404:
118 Lint changes require a full rebuild of the tool, so make
119 sure to build without -u option to build.sh, or manually
120 do a make cleandir in src/tools/lint1 and
121 src/usr.bin/xlint.
122
123 20150310:
124 Improvements to openssl for arm mean that update builds of
125 the openssl libraries will fail. A make cleandir in
126 external/bsd/openssl/lib is needed
127
128 20141026:
129 A mishap during the import of pppd may cause your corruption
130 in your cvs directory if you happened to do a cvs update
131 during a short period of time. To fix, just remove the
132 directory src/external/bsd/ppp/dist/pppd completely
133 and let cvs restore it on next update.
134
135 20140721:
136 The src/external/mit/lua/src directory was accidentally created
137 and then deleted in the CVS repository. If you get errors like
138
139 cvs [update aborted]: cannot open directory
140 /cvsroot/src/external/mit/lua/src: No such file or directory
141
142 then delete your local copy of that directory tree and try again.
143
144 20140530:
145 ARM eABI switched to DWARF based exception handling. This requires
146 rebuilding all C++ code. It is strongly advised to do a clean build.
147
148 20140131:
149 The new compiler_rt/libc integration moved a few things. It is strongly
150 advised to do a clean build. At least lib/libc, the compat version(s)
151 of libc, libkern, rump and the kernels need to be cleaned.
152
153 20131227:
154 1. The new ntpd runs in a restricted mode to prevent amplification
155 attacks. If you need ntpdc to work you need to explicitly enable
156 mode7 in your config file. Make sure you put the necessary restrict
157 statements to avoid being exposed.
158 2. strncat has moved from lib/libc to common/lib/libc; you might need
159 to make clean in libc
160
161 20131129:
162 The GMP sources were updated, and builds will likely fail without
163 cleaning their build trees for both tools and in-tree, like below.
164
165 20131128:
166 The MPC and MPFR sources were updated, and builds may require their
167 tools and in-tree directories cleaned for successful updates.
168
169 20130605:
170 The kernel option FAST_IPSEC no longer exists, it's been renamed
171 to IPSEC (and the older IPSEC version removed).
172
173 20130605:
174 Previous freetype installations eroneously installed private
175 header files. If you are building against a non-empty $DESTDIR,
176 please remove ${DESTDIR}//usr/X11R7/include/freetype2/freetype/.
177
178 20130531:
179 The xdm update may cause build failure due to xdm.man being
180 in the obj tree. Make sure to ensure any like this:
181 nbmake: nbmake: don't know how to make xdm.man. Stop
182 is fixed by deleting the xdm.man in the obj tree.
183
184 20130530:
185 Updates of many xsrc packages will leave old .pc files around.
186 Best to clean out the xsrc objdir entirely before rebuilds.
187
188 20130301:
189 The removal of netiso requires manual removal of /usr/include/netiso
190 prior to the build and make cleandir in /usr/src/usr.bin/{ktruss,kdump}
191
192 20120726:
193 The update of OpenSSL requires cleaning both the OpenSSL build
194 directory and DESTDIR. *Even non-update builds require cleaning
195 DESTDIR.* Builds done without taking these steps may fail, or in
196 some cases may succeed and install broken OpenSSL libraries that
197 cause third-party software to link incorrectly and/or crash.
198
199 20120507:
200 The database schema for makemandb was changed. You will
201 need to update the database using 'makemandb -f' or wait
202 for the next weekly run to fix it.
203
204 20120319:
205 sys/conf/Makefile.kern.inc has been modified to adjust the
206 size of db_symtab automatically. You need to update dbsym in
207 your $TOOLDIR to build kernels with options SYMTAB_SPACE. If
208 you don't want this behavior, add AUTO_SYMTAB_SPACE=no to your
209 mk.conf.
210
211 20120216:
212 Default for MKCATPAGES changed to NO. Update builds will fail
213 unless DESTDIR is cleaned manually. If you built between 20120207
214 and 20120216, daily and weekly could have created an unreadable
215 /var/db/man.db index for apropos. Running makemandb -f or
216 the next run of weekly will fix it.
217
218 20111227:
219 If you built between 20111225 and 20111227 you need to remove
220 /usr/lib/libpam.so.4* and /usr/lib/security/*.so.4, since the
221 bump has been reverted.
222
223 20111125:
224 The "rnd" pseudodevice has been added to sys/conf/std, which
225 means it should no longer be explicitly listed in kernel
226 configuration files. The line "pseudo-device rnd" should be
227 removed from any custom kernel config files users may have.
228
229 20111119:
230 A problem with the datastructures used by the rndctl(8)
231 utility (pointers in datastructures in an array, making 32->64
232 bit compatibility very painful) has been fixed in a
233 non-backwards-compatible way. If you replace your kernel,
234 replace your rndctl executable too.
235
236 20111001:
237 the prop_*_send_syscall() functions from proplib(3) have been
238 changed and their new version is not backward compatible with the old
239 one. So ensure that all consumers of these functions (currently:
240 quota2 code and its tests) are updated together with the new lib.
241
242 20110817:
243 sparc has been changed to use GCC 4.5.3, so any objdir or
244 DESTDIR for them should be deleted before updating.
245
246 20110806:
247 i386 and amd64 have been changed to use GCC 4.5.3, so any
248 objdir or DESTDIR for them should be deleted before updating.
249
250 20110805:
251 The update to GCC 4.5.3 requires a non-trivial portion of
252 the tree to be cleaned. Best to delete both objdir and
253 DESTDIR before running this update. So far, only the
254 sparc64, mips and powerpc platforms have changed.
255
256 20110803:
257 The layout of external/public-domain/xz has changed. To do an
258 update build you will have to remove the contents of the OBJDIR
259 for external/public-domain/xz/bin by hand as the xz entry there
260 is now a directory.
261
262 20110410:
263 The configuration of src/tools/gcc has changed. To do an
264 update build you have to clean both tools/binutils and
265 tools/gcc by hand.
266
267 20110328:
268 Building the Xorg binary was moved into a subdirectory to fix
269 ordering issues with "make all". It may be necessary to remove
270 the OBJDIR for external/mit/xorg/server/xorg-server/hw/xfree86
271 if your update build fails, as the "Xorg" entry there is now a
272 directory.
273
274 20110121:
275 Assembler files no longer use -traditional-cpp. This can break
276 the build of individual parts of the tree. This is handled
277 correctly by build.sh. Manual builds have to update /usr/share/mk
278 and re-run config(1) for any kernel configurations as needed.
279
280 20101217:
281 The tcpdump(8) program was changed to drop privileges and chroot(2)
282 by default. It may be necessary to manually update passwd(5) and
283 group(5) in order to make the program work with existing setups.
284
285 20101125:
286 The latest changes to setenv(3) dissallow setting environment
287 variables with names that contain '='. Revision 1.18 of env.c
288 assumed that this was allowed. Installing a new libc with an
289 old copy of /usr/bin/env causes env x=1 printenv | grep x= to
290 break which affects the autoconf tests for dependency finding,
291 so building gcc will end up printing:
292 checking dependency style of gcc... none
293 configure: error: no usable dependency style found
294 Fix it by rebuilding and re-installing env.
295
296 20101119:
297 Recent Xorg updates in xsrc/external/mit/ may cause various build
298 or run-time problems. Delete your entire DESTDIR and OBJDIR if you
299 have any build problems with xsrc, or problems with mismatched
300 versions between xorg-server and drivers.
301
302 20100604:
303 The update of ATF to 0.9 causes old tests written in shell to fail
304 unless they are rebuilt. If you are building with MKUPDATE=yes,
305 you need to clean the src/external/bsd/atf/tests/ and the src/tests/
306 trees by hand.
307
308 20100522:
309 Recent Xorg updates in xsrc/external/mit/ will cause various build
310 problems. Delete your entire DESTDIR and OBJDIR if you have any
311 build problems with xsrc.
312
313 20100522:
314 private section of <ctype.h> was splitted, and now mklocale(1)
315 include ctype_local.h, so you have to make cleandir in tools/mklocale.
316
317 20100520:
318 The location of the xkb compiled descriptions has changed. Please
319 remove usr/X11R7/lib/X11/xkb/compiled from your $DESTDIR.
320
321 20100222:
322 The shared objects file extension has been changed from .so to
323 .pico, in order to avoid conflicts with shared libraries names
324 libXX.so. All now stale regular .so files can be removed from
325 your object directories.
326
327 20100204:
328 The termcap database has been removed from the sources,
329 but has not been marked obsolete so it is not removed
330 from the system when upgrading.
331 As such, you will need to remove them from your object
332 and destination directories.
333
334 20091101:
335 After updating, it may be necessary to make the 'cleandir'
336 target in src/tools/yacc/ and in src/usr.bin/yacc/ before a
337 'build.sh -u tools' or 'build.sh -u distribution'. Ditto
338 src/tools/lex/ and src/usr.bin/lex/.
339
340 20091001:
341 On amd64 you must rebuild tools (to get the new binutils)
342 before building a kernel, or the build fails on cpufunc.S.
343
344 20091001:
345 An error will create a ./usr/X11R7/lib/X11/xkb/compiled/xkb
346 symlink, failing the build. Delete the link, and the subdir
347 it is in, and retry your build.
348
349 20090718:
350 libc build changed so that strchr() provides the extra entry
351 point for index(). Update build of libc.a (and libc_pic.a)
352 may fail because the archive contains the unwanted index.o.
353 (Similarly for strrchr() and rindex().)
354
355 20090709:
356 Native Xorg was upgraded again. Builds will probably fail again
357 without a clean objdir, at least for src/external/mit/xorg.
358
359 20090616:
360 Native Xorg was upgraded. Builds will need a clean objdir for
361 src/external/mit/xorg. Upgrading a system from sets will not
362 work properly yet as the /usr/X11R7/lib/X11/xkb/symbols/pc
363 subdirectory has been changed into a file, and this needs to
364 be manually "rm -r"'ed before installing xbase.tgz.
365
366 20090501:
367 Several new functions were added to string.h/libc, and this
368 can cause autoconf problems during the tool build for people
369 who fail to clean out their tools objects properly. If you
370 note messages about stpcpy, stpncpy or strnlen accompanying a
371 failure during the tool build, clean out all your tools
372 objects and start again.
373
374 20090325:
375 The i386 port was switched to i486 default toolchain. This requires
376 cleaning your src/tools directory and $TOOLDIR and rebuilding them.
377
378 20090126:
379 The __posix_fadvise50 system call changed assembly stub type. You
380 need to 'rm -f __posix_fadvise50.*' in the libc build directory
381 to avoid using the old assembly stub.
382
383 20090202:
384 pkg_install now depends on the pkgdb cache for automatic conflict
385 detection. It is recommented to rebuild the cache with
386 ``pkg_admin rebuild''.
387
388 20090110:
389 time_t and dev_t have been bumped to 64 bit quantities. To upgrade:
390 1. Make sure your kernel has COMPAT_50 in it. Build and install.
391 This is needed even in the MODULAR kernel because there is
392 conditionally compiled code in rtsock.c.
393 2. make sure build.sh completes and the binaries in a chroot work
394 before installing.
395 3. If you don't use build.sh and you build directly to root, and
396 your build breaks in the middle, don't despair. Make sure headers
397 are installed properly, and start building libraries first libc
398 and libutil, install them and then continue building all the
399 libraries in src/lib and src/gnu/lib and install them. Once
400 the new libraries are installed, you can restart the build.
401 4. If you compile packages and you notice link time warnings,
402 rebuild the required packages to update their shared libraries.
403 Any package you rebuild will require rebuilding all the packages
404 that depend on it.
405 5. Next time you run pwd_mkdb with the new binary, the file
406 will be upgraded and it will not be backwards compatible.
407 6. The utmpx/wtmpx files (/var/run/utmpx and /var/log/wtmpx, see
408 lastlogx(5)) have been versioned, and there is a heuristic
409 for utmp. You are better off removing the old files after
410 upgrading. The automated clearing of /var/run during
411 boot, and the automated rotating of files in /var/log by
412 newsyslog(8), may mean that you do not have to remove the
413 files manually.
414 7. The optional accounting file (/var/account/acct, see
415 accton(8)) has not been versioned, and will need to be
416 removed. The automatic rotation of the accounting file by
417 /etc/daily limits the bad consequences of failure to remove
418 the file.
419 8. Application software that writes time_t to binary files on
420 disk will break or need attention. Most notably: if you are
421 using PostgreSQL < 8.4, you need to dump your databases,
422 rebuild PostgreSQL with the new time_t, then restore.
423
424 20081219:
425 config(1) has been updated, and one of the files it creates -
426 swapnetbsd.o - has changed format. You need to rebuild config
427 (done automatically by build.sh) and then you need to rerun
428 config on all kernel configuration files before rebuilding those
429 kernels.
430
431 20081205:
432 If you build with MKX11=no, you should remove /etc/rc.d/xdm and
433 /etc/rc.d/xfs from DESTDIR because those files were moved to the xetc
434 set and will appear as extra files for MKX11=no update builds.
435
436 20081122:
437 On i386, various kernel options(4) in GENERIC including
438 file systems have been disabled and moved into kernel modules.
439 Before trying a new GENERIC kernel, you have to prepare the
440 following files as well as a new GENERIC kernel:
441
442 - build and install kernel modules from src/sys/modules
443
444 - install the latest bootloader, which will load a module
445 for the file system from which the kernel is loaded automatically
446
447 If you have to load your kernel from a file system which is not of
448 the same type as the root file system, you have to load the necessary
449 file system module manually on the boot prompt or in the boot.cfg file.
450
451 20080827:
452 If you built and installed a libc from sources between
453 2008/08/20 and 2008/08/26 you got a broken strtouq(3)
454 which results in false errors reported by lint(1).
455 Since this breaks the libc build itself, manual help is
456 needed -- lint must be disabled temporarily, e.g.:
457 $ (cd lib/libc && make MKLINT=no dependall install)
458
459 20080813:
460 MKDEBUG build was broken because the .depend files did not know
461 about .go files. You need to remove all .depend files and rebuild.
462
463 20080802:
464 A regression in binary compatibility for pthread_mutex_t has
465 been fixed. Unfortunately, the price is breaking compatibility
466 for -current.
467
468 Threaded programs (using libpthread) and C++ programs (using
469 libstdc++) compiled after 20070907 and before 20080802 need to
470 be recompiled.
471
472 One way to find affected pkgsrc packages:
473
474 $ grep REQUIRES=/usr/lib/libpthread /var/db/pkg/*/+BUILD_INFO
475 $ grep REQUIRES=/usr/lib/libstdc++ /var/db/pkg/*/+BUILD_INFO
476
477 20080731:
478 WAPBL (metadata journaling support) has been added, but at this
479 time isn't backwards compatible with pre-WAPBL aware kernels
480 and userland (fsck_ffs in particular). Please make sure you
481 don't use a journaled filesystem with an older kernel/userland,
482 especially an uncleanly mounted journaled filesystem. WAPBL
483 also requires the super block to be in the UFS2 format. You
484 can use fsck_ffs -c 4 to update the superblock format.
485
486 20080721:
487 Assembler warnings are now fatal if $WARNS>0 and $NOGCCERROR
488 isn't defined.
489
490 20080531:
491 The ioctl number of DRVSUSPENDDEV command on /dev/drvctl changed
492 from 125 (conflicted with DRVCTLCOMMAND) to 129. The drvctl(8)
493 utility needs to be rebuilt and reinstalled as older binaries
494 won't work correctly. The following sequence of commands:
495
496 $ (cd sys/sys/ && nbmake-$arch includes)
497 $ (cd sbin/drvctl/ && nbmake-$arch clean)
498 $ (cd sbin/drvctl/ && nbmake-$arch all)
499
500 leaves new drvctl utility in sbin/drvctl build directory.
501
502 20080503:
503 The <bsd.lib.mk> variable MKPRIVATELIB was renamed to LIBISPRIVATE.
504
505 20080521:
506 For a while, unprivileged UPDATE builds would fail to
507 succeed at the checkflist stage, complaining that
508 ${DESTDIR}/stand/<arch>/ did not exist. A fix for this
509 problem was committed to share/mk/bsd.kmodule.mk, revision 1.9.
510 If you already hit this problem, update the .mk file,
511 remove ${DESTDIR}/stand/<arch>, and re-run the build.
512
513 20080303:
514 Linker warnings are now fatal if $WARNS>0.
515
516 20080126:
517 The posix_fadvise system call has been changed from an assembly
518 stub, to a c file that calls an assembly stub. You need to
519 'rm -f posix_fadvise.* .depend' in the libc build directory to
520 avoid using the old assembly stub.
521
522 20071209:
523 The acpiec(4) driver has been split into two attachments. If you
524 get ACPI errors before the attachment, please update your kernel
525 configuration file appropriately or see GENERIC for more details.
526
527 20071115:
528 The it(4) driver has been renamed to itesio(4) and the old port
529 argument specified in the kernel configuration file is not valid
530 anymore. The itesio(4) driver now uses the Super I/O address port
531 rather than the EC address port. Please update your kernel
532 configuration file appropriately or see GENERIC for more details.
533
534 20071028:
535 The pccons(4) driver has been removed from the NetBSD/shark port.
536 You need to update any custom kernel configuration file you have
537 to remove any references to pccons (which includes removing the
538 now useless XSERVER option) and replace them with the correct
539 entries for the wscons driver. See the GENERIC configuration file
540 for more details.
541
542 20070913:
543 A latent bug in dhclient/dhcpd that caused it to be unable to
544 enumerate interfaces was fixed. The bug began to cause
545 problems after 20070911 when the kernel's SIOCGIFCONF
546 implementation was repaired. From 20070529 to 20070911 racoon
547 could not enumerate interfaces. (These are noted because
548 normal kernel/userspace version matching hygiene is not
549 sufficient to avoid this problem.) Ensure that both kernel
550 and userland are from after 20070913.
551
552 20070703:
553 nbinstall has been renamed ${MACHINE_GNU_ARCH}-install. It
554 calls the target-specific strip program, and the logic to pass
555 down STRIP from make has been removed. This requires a
556 re-installation of tools.
557
558 20070422:
559 The way OS emulations lookup filenames inside the emulation root
560 has been changed. Rather than modify the pathname (and copy back
561 to userspace) namei() and lookup() directly check the emulation
562 root. One side effect is that absolute symlinks inside the emulated
563 root file system will be relative to that file system - unless they
564 start /../ this is useful when the emulated root is a real install
565 that has such links.
566 This might affect symlinks that have been added to reference outside
567 the emulated root.
568
569 20070412:
570 The pckbc driver on sgimips IP32 has been removed. Use macekbc
571 instead. See the GENERIC32_IP3x kernel configuration for an
572 example.
573
574 20070319:
575 src/lib/libc/Makefile revision 1.129 broke libc and ld.elf_so
576 on many platforms due to incorrect flags settings. If you
577 updated and built after about 20070315, do "nbmake-$arch
578 cleandir" in src/lib/libc and src/libexec/ld.elf_so to force a
579 rebuild of object files that might have been built
580 incorrectly, and ensure that you have at least
581 src/lib/libc/Makefile 1.130.
582
583 20070210:
584 src/sys/sys/{sa.h,savar.h} were removed.
585 find ${OBJDIR} \( -name .depend -o -name '*.d' \) -print \
586 | xargs egrep -l '/sa.h|/savar.h' | xargs rm
587 will allow dependencies on those files to get get rebuilt
588
589 20070209:
590 The threading model was changed when the newlock2 branch
591 was merged to NetBSD-current. If you boot with a new
592 kernel (version 4.99.10), then you also need a new pthread
593 library (/usr/lib/libpthread.so.0.7). If you boot with
594 an old kernel, then you need the old pthread library
595 (/usr/lib/libpthread.so.0.6). Provided you keep the kernel and
596 the pthread library in sync, old threaded applications should
597 continue to work with an old or new kernel. Note that named(8)
598 is the only threaded application in the base system.
599
600 20061214:
601 Following the move of string_to_flags() and flags_to_string()
602 from the bin/ls/ sources to libutil, users doing UPDATE builds
603 will need to do a "make cleandir" in
604 tools/mtree/, tools/makefs/, tools/binstall/, tools/pax/,
605 bin/pax/, bin/ls/, usr.sbin/mtree/, usr.sbin/makefs/,
606 usr.bin/xinstall/, libexec/ftpd/, rescue/, as well
607 as the installation images in distrib/
608 in order to excise stale references to the old stat_flags.h header
609 file in the ls sources -- stat_flags.h has been removed.
610
611 20061108:
612 The configure script used in the src/tools/gcc compiler has been
613 changed to indicate that our libc has ssp support built-in and
614 does not depend on -lssp and -lssp-nonshared. You'll need to
615 make clean in src/tools/gcc first to rebuild the compiler.
616
617 20061009:
618 The sysctl variables net.inet{,6}.tcp{,6}.newreno are no longer
619 available. Use net.inet{,6}.tcp{,6}.congctl.selected instead.
620
621 20060814:
622 The vt, vidcconsole, kbd, and rpckbd drivers on acorn32 have been
623 withdrawn. Use vidcvideo and pckbd instead. See the GENERIC
624 kernel configuration for an example. X servers from the last
625 few years should cope.
626
627 20060703:
628 MPACPI is no more. We always configure PCI interrupts using ACPI
629 if we have an ACPI kernel. The option MPACPI_SCANPCI has been renamed
630 to ACPI_SCANPCI. Thanks to work from fvdl.
631
632 20060627:
633 socket(2) has changed, and its system call has been versioned.
634 For userlands with the old version of socket(2), make sure that
635 your kernel has 'options COMPAT_30' set, or else 'bad system call'
636 errors will result.
637
638 Hints for a more successful build:
639 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
640 Use build.sh, but do not use its "expert mode":
641 This will automatically build the tools in the
642 correct order, and it will keep the tools and the
643 new build products from interfering with the running
644 system. This will allow you to ignore most of the
645 other advice in this file.
646 Build a new kernel first:
647 This makes sure that any new system calls or features
648 expected by the new userland will be present. This
649 helps to avoid critical errors when upgrading.
650 Use object directories:
651 This helps to keep stale object
652 files from polluting the build if a Makefile "forgets"
653 about one. It also makes it easier to clean up after
654 a build. It's also necessary if you want to use the
655 same source tree for multiple machines.
656 To use object directories with build.sh:
657 a) invoke build.sh with the "-M" or "-O" options.
658 To use object directories without using build.sh:
659 a) cd /usr/src ; make cleandir
660 b) Add "OBJMACHINE=yes" to /etc/mk.conf
661 c) Add "MKOBJDIRS=yes" to /etc/mk.conf
662 d) cd /usr/src ; make build
663 Note that running "make obj" in a directory will create
664 in obj.$MACHINE directory.
665 Build to a DESTDIR:
666 This helps to keep old installed files (especially libraries)
667 from interfering with the new build.
668 To build to a DESTDIR with build.sh, use the "-D" option.
669 To build to a DESTDIR without using build.sh, set the DESTDIR
670 environment variable before running make build. It should be
671 set to the pathname of an initially empty directory.
672 Problems: if you do not use build.sh, you might need to
673 update critical utilities without using DESTDIR since
674 nothing is executed from what is installed in DESTDIR.
675 (See critical utils, below.)
676 Build often:
677 This keeps critical utilities current enough to not choke
678 on any other part of the source tree that depends on up to
679 date functionality. If you use build.sh, you should not have
680 this problem.
681
682 What to do if things don't work:
683 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
684 When things don't work there are usually a few things that commonly
685 should be done.
686 1) make includes
687 This should be done automatically by make build.
688 2) cd share/mk && make install
689 Again, automatically done by make build.
690
691 Failsafe rebuild of a small part of the tree:
692 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
693 To make sure you rebuild something correctly you want to do
694 something like the following:
695 1) Make sure the includes and .mk files are up to date.
696 2) Make sure any program used to build the particular
697 utility is up to date. (yacc, lex, etc...)
698 3) cd ...path/to/util...
699 make cleandir
700 rm ...all obj directories...
701 make cleandir # yes, again
702 make obj
703 make depend && make
704
705 Failsafe rebuild of the entire tree:
706 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
707 If you really want to make sure the source tree is clean and
708 ready for a build try the following. Note that sourcing /etc/mk.conf
709 (a make(1) Makefile) in this manner is not right, and will not work
710 for anyone who uses any make(1) features in /etc/mk.conf.
711
712 ---cut here---
713 #!/bin/sh
714 . /etc/mk.conf
715
716 if [ -z $NETBSDSRCDIR ] ; then
717 NETBSDSRCDIR=/usr/src
718 fi
719 if [ \! -d $NETBSDSRCDIR ] ; then
720 echo Unable to find sources
721 exit 1
722 fi
723 find $NETBSDSRCDIR -name \*.o -o -name obj.\* -o -name obj -exec rm \{\} \;
724
725 if [ -z $BSDOBJDIR ] ; then
726 BSDOBJDIR=/usr/obj
727 fi
728 if [ -d $BSDOBJDIR ] ; then
729 rm -rf $BSDOBJDIR
730 fi
731
732 cd $NETBSDSRCDIR && make cleandir
733
734 ---cut here---
735
736 Critical utilities:
737 ^^^^^^^^^^^^^^^^^^^
738 usr.bin/compile_et
739 usr.bin/make
740 usr.bin/yacc
741 usr.bin/lex
742 usr.bin/xlint
743 usr.bin/config
744
745 Other problems and possible solutions:
746 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
747 Symptom:Complaints involving a Makefile.
748 Fix: Rebuild usr.bin/make:
749 cd usr.bin/make && make && make install
750 Or, a failsafe method if that doesn't work:
751 cd usr.bin/make && cc *.c */*.c -I . -o make && mv make /usr/bin
752
753 Fix: Make sure .mk files are up to date.
754 cd share/mk && make install
755
756 Symptom:Kernel `config' fails to configure any kernel, including GENERIC.
757 Fix: Rebuild usr.bin/config
758
759 Symptom:
760 Fix: Rebuild usr.bin/yacc
761
762 Symptom:
763 Fix: Rebuild usr.bin/lex
764
765 Symptom:
766 Fix: rm /usr/lib/libbfd.a
767
768 Symptom:Obsolete intermediate files are used during compilation
769 Fix: Try the following sequence of commands in the directory in question.
770 make cleandir; rm `make print-objdir`; make cleandir; make obj
771 (If you built the tree without "make obj" in the past, obsolete files
772 may remain. The command tries to clean everything up)
773
774 Symptom:.../sysinst/run.c:xx: warning: initialization from incompatible
775 pointer type
776 Fix: Rebuild and install usr.bin/menuc
777
778 Symptom:mklocale not found during build in share/locale/ctype
779 Fix: Build and install usr.bin/mklocale
780
781 Symptom:undefined reference to `__assert13' or `__unsetenv13'
782 Fix: Rebuild and install lib/libc
783
784 Symptom:usr.bin/config fails to build.
785 Fix: Try building with -DMAKE_BOOTSTRAP added to CFLAGS in Makefile.
786
787 Symptom:undefined reference to `getprogname' or `setprogname'
788 Fix: Rebuild and install lib/libc
789
790 Symptom:lint does not understand the '-X' option
791 Fix: May need to build & install libs with NOLINT=1 before rebuilding lint
792
793 Symptom:Update build fails in src/tools/gcc complaining that a variable
794 (e.g. CPPFLAGS) has changed since the previous run.
795 Fix: Run "nbmake-${ARCH} clean" in src/tools/gcc or do a clean build.
796
797 Symptom:cvs [update aborted]: cannot open directory /cvsroot/src/...:
798 No such file or directory.
799 Cause: If a directory is created by mistake, then it is sometimes
800 deleted from the CVS repository using administrative commands
801 that bypass the normal cvs access controls. If your cvs working tree
802 contains references to a directory that has been deleted on the
803 server in this way, then "cvs update" reports this error.
804 Fix: Recursively delete the affected directory from your working tree
805 and try the update again.
806