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