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