Remove ISA NICs. Anyone still using these on amd64 can build their
[freebsd.git] / UPDATING
1 Updating Information for FreeBSD current users.
2
3 This file is maintained and copyrighted by M. Warner Losh <imp@freebsd.org>.
4 See end of file for further details.  For commonly done items, please see the
5 COMMON ITEMS: section later in the file.  These instructions assume that you
6 basically know what you are doing.  If not, then please consult the FreeBSD
7 handbook:
8
9     http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html
10
11 Items affecting the ports and packages system can be found in
12 /usr/ports/UPDATING.  Please read that file before running portupgrade.
13
14 NOTE: FreeBSD has switched from gcc to clang. If you have trouble bootstrapping
15 from older versions of FreeBSD, try WITHOUT_CLANG and WITH_GCC to bootstrap to
16 the tip of head, and then rebuild without this option. The bootstrap process from
17 older version of current across the gcc/clang cutover is a bit fragile.
18
19 NOTE TO PEOPLE WHO THINK THAT FreeBSD 11.x IS SLOW:
20         FreeBSD 11.x has many debugging features turned on, in both the kernel
21         and userland.  These features attempt to detect incorrect use of
22         system primitives, and encourage loud failure through extra sanity
23         checking and fail stop semantics.  They also substantially impact
24         system performance.  If you want to do performance measurement,
25         benchmarking, and optimization, you'll want to turn them off.  This
26         includes various WITNESS- related kernel options, INVARIANTS, malloc
27         debugging flags in userland, and various verbose features in the
28         kernel.  Many developers choose to disable these features on build
29         machines to maximize performance.  (To completely disable malloc
30         debugging, define MALLOC_PRODUCTION in /etc/make.conf, or to merely
31         disable the most expensive debugging functionality run
32         "ln -s 'abort:false,junk:false' /etc/malloc.conf".)
33
34 20150118:
35         Clang and llvm have been upgraded to 3.5.1 release.  This is a bugfix
36         only release, no new features have been added.  Please see the 20141231
37         entry below for information about prerequisites and upgrading, if you
38         are not already using 3.5.0.
39
40 20150107:
41         ELF tools addr2line, elfcopy (strip), nm, size, and strings are now
42         taken from the ELF Tool Chain project rather than GNU binutils. They
43         should be drop-in replacements, with the addition of arm64 support.
44         The WITHOUT_ELFTOOLCHAIN_TOOLS= knob may be used to obtain the
45         binutils tools, if necessary.
46
47 20150105:
48         The default Unbound configuration now enables remote control
49         using a local socket.  Users who have already enabled the
50         local_unbound service should regenerate their configuration
51         by running "service local_unbound setup" as root.
52         
53 20150102:
54         The GNU texinfo and GNU info pages have been removed.
55         To be able to view GNU info pages please install texinfo from ports.
56
57 20141231:
58         Clang, llvm and lldb have been upgraded to 3.5.0 release.
59
60         As of this release, a prerequisite for building clang, llvm and lldb is
61         a C++11 capable compiler and C++11 standard library.  This means that to
62         be able to successfully build the cross-tools stage of buildworld, with
63         clang as the bootstrap compiler, your system compiler or cross compiler
64         should either be clang 3.3 or later, or gcc 4.8 or later, and your
65         system C++ library should be libc++, or libdstdc++ from gcc 4.8 or
66         later.
67
68         On any standard FreeBSD 10.x or 11.x installation, where clang and
69         libc++ are on by default (that is, on x86 or arm), this should work out
70         of the box.
71
72         On 9.x installations where clang is enabled by default, e.g. on x86 and
73         powerpc, libc++ will not be enabled by default, so libc++ should be
74         built (with clang) and installed first.  If both clang and libc++ are
75         missing, build clang first, then use it to build libc++.
76
77         On 8.x and earlier installations, upgrade to 9.x first, and then follow
78         the instructions for 9.x above.
79
80         Sparc64 and mips users are unaffected, as they still use gcc 4.2.1 by
81         default, and do not build clang.
82
83         Many embedded systems are resource constrained, and will not be able to
84         build clang in a reasonable time, or in some cases at all.  In those
85         cases, cross building bootable systems on amd64 is a workaround.
86
87         This new version of clang introduces a number of new warnings, of which
88         the following are most likely to appear:
89
90         -Wabsolute-value
91
92         This warns in two cases, for both C and C++:
93         * When the code is trying to take the absolute value of an unsigned
94           quantity, which is effectively a no-op, and almost never what was
95           intended.  The code should be fixed, if at all possible.  If you are
96           sure that the unsigned quantity can be safely cast to signed, without
97           loss of information or undefined behavior, you can add an explicit
98           cast, or disable the warning.
99
100         * When the code is trying to take an absolute value, but the called
101           abs() variant is for the wrong type, which can lead to truncation.
102           If you want to disable the warning instead of fixing the code, please
103           make sure that truncation will not occur, or it might lead to unwanted
104           side-effects.
105
106         -Wtautological-undefined-compare and
107         -Wundefined-bool-conversion
108
109         These warn when C++ code is trying to compare 'this' against NULL, while
110         'this' should never be NULL in well-defined C++ code.  However, there is
111         some legacy (pre C++11) code out there, which actively abuses this
112         feature, which was less strictly defined in previous C++ versions.
113
114         Squid and openjdk do this, for example.  The warning can be turned off
115         for C++98 and earlier, but compiling the code in C++11 mode might result
116         in unexpected behavior; for example, the parts of the program that are
117         unreachable could be optimized away.
118
119 20141222:
120         The old NFS client and server (kernel options NFSCLIENT, NFSSERVER)
121         kernel sources have been removed. The .h files remain, since some
122         utilities include them. This will need to be fixed later.
123         If "mount -t oldnfs ..." is attempted, it will fail.
124         If the "-o" option on mountd(8), nfsd(8) or nfsstat(1) is used,
125         the utilities will report errors.
126
127 20141121:
128         The handling of LOCAL_LIB_DIRS has been altered to skip addition of
129         directories to top level SUBDIR variable when their parent
130         directory is included in LOCAL_DIRS.  Users with build systems with
131         such hierarchies and without SUBDIR entries in the parent
132         directory Makefiles should add them or add the directories to
133         LOCAL_DIRS.
134
135 20141109:
136         faith(4) and faithd(8) have been removed from the base system. Faith
137         has been obsolete for a very long time.
138
139 20141104:
140         vt(4), the new console driver, is enabled by default. It brings
141         support for Unicode and double-width characters, as well as
142         support for UEFI and integration with the KMS kernel video
143         drivers.
144
145         You may need to update your console settings in /etc/rc.conf,
146         most probably the keymap. During boot, /etc/rc.d/syscons will
147         indicate what you need to do.
148
149         vt(4) still has issues and lacks some features compared to
150         syscons(4). See the wiki for up-to-date information:
151           https://wiki.freebsd.org/Newcons
152
153         If you want to keep using syscons(4), you can do so by adding
154         the following line to /boot/loader.conf:
155           kern.vty=sc
156
157 20141102:
158         pjdfstest has been integrated into kyua as an opt-in test suite.
159         Please see share/doc/pjdfstest/README for more details on how to
160         execute it.
161
162 20141009:
163         gperf has been removed from the base system for architectures
164         that use clang. Ports that require gperf will obtain it from the
165         devel/gperf port.
166
167 20140923:
168         pjdfstest has been moved from tools/regression/pjdfstest to
169         contrib/pjdfstest .
170
171 20140922:
172         At svn r271982, The default linux compat kernel ABI has been adjusted
173         to 2.6.18 in support of the linux-c6 compat ports infrastructure
174         update.  If you wish to continue using the linux-f10 compat ports,
175         add compat.linux.osrelease=2.6.16 to your local sysctl.conf.  Users are
176         encouraged to update their linux-compat packages to linux-c6 during
177         their next update cycle.
178
179 20140729:
180         The ofwfb driver, used to provide a graphics console on PowerPC when
181         using vt(4), no longer allows mmap() of all physical memory. This
182         will prevent Xorg on PowerPC with some ATI graphics cards from
183         initializing properly unless x11-servers/xorg-server is updated to
184         1.12.4_8 or newer.
185
186 20140723:
187         The xdev targets have been converted to using TARGET and
188         TARGET_ARCH instead of XDEV and XDEV_ARCH.
189
190 20140719:
191         The default unbound configuration has been modified to address
192         issues with reverse lookups on networks that use private
193         address ranges.  If you use the local_unbound service, run
194         "service local_unbound setup" as root to regenerate your
195         configuration, then "service local_unbound reload" to load the
196         new configuration.
197
198 20140709:
199         The GNU texinfo and GNU info pages are not built and installed
200         anymore, WITH_INFO knob has been added to allow to built and install
201         them again.
202         UPDATE: see 20150102 entry on texinfo's removal
203
204 20140708:
205         The GNU readline library is now an INTERNALLIB - that is, it is
206         statically linked into consumers (GDB and variants) in the base
207         system, and the shared library is no longer installed.  The
208         devel/readline port is available for third party software that
209         requires readline.
210
211 20140702:
212         The Itanium architecture (ia64) has been removed from the list of
213         known architectures. This is the first step in the removal of the
214         architecture.
215
216 20140701:
217         Commit r268115 has added NFSv4.1 server support, merged from
218         projects/nfsv4.1-server.  Since this includes changes to the
219         internal interfaces between the NFS related modules, a full
220         build of the kernel and modules will be necessary.
221         __FreeBSD_version has been bumped.
222
223 20140629:
224         The WITHOUT_VT_SUPPORT kernel config knob has been renamed
225         WITHOUT_VT.  (The other _SUPPORT knobs have a consistent meaning
226         which differs from the behaviour controlled by this knob.)
227
228 20140619:
229         Maximal length of the serial number in CTL was increased from 16 to
230         64 chars, that breaks ABI.  All CTL-related tools, such as ctladm
231         and ctld, need to be rebuilt to work with a new kernel.
232
233 20140606:
234         The libatf-c and libatf-c++ major versions were downgraded to 0 and
235         1 respectively to match the upstream numbers.  They were out of
236         sync because, when they were originally added to FreeBSD, the
237         upstream versions were not respected.  These libraries are private
238         and not yet built by default, so renumbering them should be a
239         non-issue.  However, unclean source trees will yield broken test
240         programs once the operator executes "make delete-old-libs" after a
241         "make installworld".
242
243         Additionally, the atf-sh binary was made private by moving it into
244         /usr/libexec/.  Already-built shell test programs will keep the
245         path to the old binary so they will break after "make delete-old"
246         is run.
247
248         If you are using WITH_TESTS=yes (not the default), wipe the object
249         tree and rebuild from scratch to prevent spurious test failures.
250         This is only needed once: the misnumbered libraries and misplaced
251         binaries have been added to OptionalObsoleteFiles.inc so they will
252         be removed during a clean upgrade.
253
254 20140512:
255         Clang and llvm have been upgraded to 3.4.1 release.
256
257 20140508:
258         We bogusly installed src.opts.mk in /usr/share/mk. This file should
259         be removed to avoid issues in the future (and has been added to
260         ObsoleteFiles.inc).
261
262 20140505:
263         /etc/src.conf now affects only builds of the FreeBSD src tree. In the
264         past, it affected all builds that used the bsd.*.mk files. The old
265         behavior was a bug, but people may have relied upon it. To get this
266         behavior back, you can .include /etc/src.conf from /etc/make.conf
267         (which is still global and isn't changed). This also changes the
268         behavior of incremental builds inside the tree of individual
269         directories. Set MAKESYSPATH to ".../share/mk" to do that.
270         Although this has survived make universe and some upgrade scenarios,
271         other upgrade scenarios may have broken. At least one form of
272         temporary breakage was fixed with MAKESYSPATH settings for buildworld
273         as well... In cases where MAKESYSPATH isn't working with this
274         setting, you'll need to set it to the full path to your tree.
275
276         One side effect of all this cleaning up is that bsd.compiler.mk
277         is no longer implicitly included by bsd.own.mk. If you wish to
278         use COMPILER_TYPE, you must now explicitly include bsd.compiler.mk
279         as well.
280
281 20140430:
282         The lindev device has been removed since /dev/full has been made a
283         standard device.  __FreeBSD_version has been bumped.
284
285 20140418:
286         The YES_HESIOD knob has been removed. It has been obsolete for
287         a decade. Please move to using WITH_HESIOD instead or your builds
288         will silently lack HESIOD.
289
290 20140405:
291         The uart(4) driver has been changed with respect to its handling
292         of the low-level console. Previously the uart(4) driver prevented
293         any process from changing the baudrate or the CLOCAL and HUPCL
294         control flags. By removing the restrictions, operators can make
295         changes to the serial console port without having to reboot.
296         However, when getty(8) is started on the serial device that is
297         associated with the low-level console, a misconfigured terminal
298         line in /etc/ttys will now have a real impact.
299         Before upgrading the kernel, make sure that /etc/ttys has the
300         serial console device configured as 3wire without baudrate to
301         preserve the previous behaviour. E.g:
302             ttyu0  "/usr/libexec/getty 3wire"  vt100  on  secure
303
304 20140306:
305         Support for libwrap (TCP wrappers) in rpcbind was disabled by default
306         to improve performance.  To re-enable it, if needed, run rpcbind
307         with command line option -W.
308
309 20140226:
310         Switched back to the GPL dtc compiler due to updates in the upstream
311         dts files not being supported by the BSDL dtc compiler. You will need
312         to rebuild your kernel toolchain to pick up the new compiler. Core dumps
313         may result while building dtb files during a kernel build if you fail
314         to do so. Set WITHOUT_GPL_DTC if you require the BSDL compiler.
315
316 20140216:
317         Clang and llvm have been upgraded to 3.4 release.
318
319 20140216:
320         The nve(4) driver has been removed.  Please use the nfe(4) driver
321         for NVIDIA nForce MCP Ethernet adapters instead.
322
323 20140212:
324         An ABI incompatibility crept into the libc++ 3.4 import in r261283.
325         This could cause certain C++ applications using shared libraries built
326         against the previous version of libc++ to crash.  The incompatibility
327         has now been fixed, but any C++ applications or shared libraries built
328         between r261283 and r261801 should be recompiled.
329
330 20140204:
331         OpenSSH will now ignore errors caused by kernel lacking of Capsicum
332         capability mode support.  Please note that enabling the feature in
333         kernel is still highly recommended.
334
335 20140131:
336         OpenSSH is now built with sandbox support, and will use sandbox as
337         the default privilege separation method.  This requires Capsicum
338         capability mode support in kernel.
339
340 20140128:
341         The libelf and libdwarf libraries have been updated to newer
342         versions from upstream. Shared library version numbers for
343         these two libraries were bumped. Any ports or binaries
344         requiring these two libraries should be recompiled.
345         __FreeBSD_version is bumped to 1100006.
346
347 20140110:
348         If a Makefile in a tests/ directory was auto-generating a Kyuafile
349         instead of providing an explicit one, this would prevent such
350         Makefile from providing its own Kyuafile in the future during
351         NO_CLEAN builds.  This has been fixed in the Makefiles but manual
352         intervention is needed to clean an objdir if you use NO_CLEAN:
353           # find /usr/obj -name Kyuafile | xargs rm -f
354
355 20131213:
356         The behavior of gss_pseudo_random() for the krb5 mechanism
357         has changed, for applications requesting a longer random string
358         than produced by the underlying enctype's pseudo-random() function.
359         In particular, the random string produced from a session key of
360         enctype aes256-cts-hmac-sha1-96 or aes256-cts-hmac-sha1-96 will
361         be different at the 17th octet and later, after this change.
362         The counter used in the PRF+ construction is now encoded as a
363         big-endian integer in accordance with RFC 4402.
364         __FreeBSD_version is bumped to 1100004.
365
366 20131108:
367         The WITHOUT_ATF build knob has been removed and its functionality
368         has been subsumed into the more generic WITHOUT_TESTS.  If you were
369         using the former to disable the build of the ATF libraries, you
370         should change your settings to use the latter.
371
372 20131025:
373         The default version of mtree is nmtree which is obtained from
374         NetBSD.  The output is generally the same, but may vary
375         slightly.  If you found you need identical output adding
376         "-F freebsd9" to the command line should do the trick.  For the
377         time being, the old mtree is available as fmtree.
378
379 20131014:
380         libbsdyml has been renamed to libyaml and moved to /usr/lib/private.
381         This will break ports-mgmt/pkg. Rebuild the port, or upgrade to pkg
382         1.1.4_8 and verify bsdyml not linked in, before running "make
383         delete-old-libs":
384           # make -C /usr/ports/ports-mgmt/pkg build deinstall install clean
385           or
386           # pkg install pkg; ldd /usr/local/sbin/pkg | grep bsdyml
387
388 20131010:
389         The rc.d/jail script has been updated to support jail(8)
390         configuration file.  The "jail_<jname>_*" rc.conf(5) variables
391         for per-jail configuration are automatically converted to
392         /var/run/jail.<jname>.conf before the jail(8) utility is invoked.
393         This is transparently backward compatible.  See below about some
394         incompatibilities and rc.conf(5) manual page for more details.
395
396         These variables are now deprecated in favor of jail(8) configuration
397         file.  One can use "rc.d/jail config <jname>" command to generate
398         a jail(8) configuration file in /var/run/jail.<jname>.conf without
399         running the jail(8) utility.   The default pathname of the
400         configuration file is /etc/jail.conf and can be specified by
401         using $jail_conf or $jail_<jname>_conf variables.
402
403         Please note that jail_devfs_ruleset accepts an integer at
404         this moment.  Please consider to rewrite the ruleset name
405         with an integer.
406
407 20130930:
408         BIND has been removed from the base system.  If all you need
409         is a local resolver, simply enable and start the local_unbound
410         service instead.  Otherwise, several versions of BIND are
411         available in the ports tree.   The dns/bind99 port is one example.
412
413         With this change, nslookup(1) and dig(1) are no longer in the base
414         system.  Users should instead use host(1) and drill(1) which are
415         in the base system.  Alternatively, nslookup and dig can
416         be obtained by installing the dns/bind-tools port.
417
418 20130916:
419         With the addition of unbound(8), a new unbound user is now
420         required during installworld.  "mergemaster -p" can be used to
421         add the user prior to installworld, as documented in the handbook.
422
423 20130911:
424         OpenSSH is now built with DNSSEC support, and will by default
425         silently trust signed SSHFP records.  This can be controlled with
426         the VerifyHostKeyDNS client configuration setting.  DNSSEC support
427         can be disabled entirely with the WITHOUT_LDNS option in src.conf.
428
429 20130906:
430         The GNU Compiler Collection and C++ standard library (libstdc++)
431         are no longer built by default on platforms where clang is the system
432         compiler.  You can enable them with the WITH_GCC and WITH_GNUCXX
433         options in src.conf.  
434
435 20130905:
436         The PROCDESC kernel option is now part of the GENERIC kernel
437         configuration and is required for the rwhod(8) to work.
438         If you are using custom kernel configuration, you should include
439         'options PROCDESC'.
440
441 20130905:
442         The API and ABI related to the Capsicum framework was modified
443         in backward incompatible way. The userland libraries and programs
444         have to be recompiled to work with the new kernel. This includes the
445         following libraries and programs, but the whole buildworld is
446         advised: libc, libprocstat, dhclient, tcpdump, hastd, hastctl,
447         kdump, procstat, rwho, rwhod, uniq.
448
449 20130903:
450         AES-NI intrinsic support has been added to gcc.  The AES-NI module
451         has been updated to use this support.  A new gcc is required to build
452         the aesni module on both i386 and amd64.
453
454 20130821:
455         The PADLOCK_RNG and RDRAND_RNG kernel options are now devices.
456         Thus "device padlock_rng" and "device rdrand_rng" should be
457         used instead of "options PADLOCK_RNG" & "options RDRAND_RNG".
458
459 20130813:
460         WITH_ICONV has been split into two feature sets.  WITH_ICONV now
461         enables just the iconv* functionality and is now on by default.
462         WITH_LIBICONV_COMPAT enables the libiconv api and link time
463         compatability.  Set WITHOUT_ICONV to build the old way.
464         If you have been using WITH_ICONV before, you will very likely
465         need to turn on WITH_LIBICONV_COMPAT.
466
467 20130806:
468         INVARIANTS option now enables DEBUG for code with OpenSolaris and
469         Illumos origin, including ZFS.  If you have INVARIANTS in your
470         kernel configuration, then there is no need to set DEBUG or ZFS_DEBUG
471         explicitly.
472         DEBUG used to enable witness(9) tracking of OpenSolaris (mostly ZFS)
473         locks if WITNESS option was set.  Because that generated a lot of
474         witness(9) reports and all of them were believed to be false
475         positives, this is no longer done.  New option OPENSOLARIS_WITNESS
476         can be used to achieve the previous behavior.
477
478 20130806:
479         Timer values in IPv6 data structures now use time_uptime instead
480         of time_second.  Although this is not a user-visible functional
481         change, userland utilities which directly use them---ndp(8),
482         rtadvd(8), and rtsold(8) in the base system---need to be updated
483         to r253970 or later.
484
485 20130802:
486         find -delete can now delete the pathnames given as arguments,
487         instead of only files found below them or if the pathname did
488         not contain any slashes. Formerly, the following error message
489         would result:
490
491         find: -delete: <path>: relative path potentially not safe
492
493         Deleting the pathnames given as arguments can be prevented
494         without error messages using -mindepth 1 or by changing
495         directory and passing "." as argument to find. This works in the
496         old as well as the new version of find.
497
498 20130726:
499         Behavior of devfs rules path matching has been changed.
500         Pattern is now always matched against fully qualified devfs
501         path and slash characters must be explicitly matched by
502         slashes in pattern (FNM_PATHNAME). Rulesets involving devfs
503         subdirectories must be reviewed.
504
505 20130716:
506         The default ARM ABI has changed to the ARM EABI. The old ABI is
507         incompatible with the ARM EABI and all programs and modules will
508         need to be rebuilt to work with a new kernel.
509
510         To keep using the old ABI ensure the WITHOUT_ARM_EABI knob is set.
511
512         NOTE: Support for the old ABI will be removed in the future and
513         users are advised to upgrade.
514
515 20130709:
516         pkg_install has been disconnected from the build if you really need it
517         you should add WITH_PKGTOOLS in your src.conf(5).
518
519 20130709:
520         Most of network statistics structures were changed to be able
521         keep 64-bits counters. Thus all tools, that work with networking
522         statistics, must be rebuilt (netstat(1), bsnmpd(1), etc.)
523
524 20130629:
525         Fix targets that run multiple make's to use && rather than ;
526         so that subsequent steps depend on success of previous.
527
528         NOTE: if building 'universe' with -j* on stable/8 or stable/9
529         it would be better to start the build using bmake, to avoid
530         overloading the machine.
531
532 20130618:
533         Fix a bug that allowed a tracing process (e.g. gdb) to write
534         to a memory-mapped file in the traced process's address space
535         even if neither the traced process nor the tracing process had
536         write access to that file.
537
538 20130615:
539         CVS has been removed from the base system.  An exact copy
540         of the code is available from the devel/cvs port.
541
542 20130613:
543         Some people report the following error after the switch to bmake:
544
545                 make: illegal option -- J
546                 usage: make [-BPSXeiknpqrstv] [-C directory] [-D variable]
547                         ...
548                 *** [buildworld] Error code 2
549
550         this likely due to an old instance of make in
551         ${MAKEPATH} (${MAKEOBJDIRPREFIX}${.CURDIR}/make.${MACHINE})
552         which src/Makefile will use that blindly, if it exists, so if
553         you see the above error:
554
555                 rm -rf `make -V MAKEPATH`
556
557         should resolve it.
558
559 20130516:
560         Use bmake by default.
561         Whereas before one could choose to build with bmake via
562         -DWITH_BMAKE one must now use -DWITHOUT_BMAKE to use the old
563         make. The goal is to remove these knobs for 10-RELEASE.
564
565         It is worth noting that bmake (like gmake) treats the command
566         line as the unit of failure, rather than statements within the
567         command line.  Thus '(cd some/where && dosomething)' is safer
568         than 'cd some/where; dosomething'. The '()' allows consistent
569         behavior in parallel build.
570
571 20130429:
572         Fix a bug that allows NFS clients to issue READDIR on files.
573
574 20130426:
575         The WITHOUT_IDEA option has been removed because
576         the IDEA patent expired.
577
578 20130426:
579         The sysctl which controls TRIM support under ZFS has been renamed
580         from vfs.zfs.trim_disable -> vfs.zfs.trim.enabled and has been
581         enabled by default.
582
583 20130425:
584         The mergemaster command now uses the default MAKEOBJDIRPREFIX
585         rather than creating it's own in the temporary directory in
586         order allow access to bootstrapped versions of tools such as
587         install and mtree.  When upgrading from version of FreeBSD where
588         the install command does not support -l, you will need to
589         install a new mergemaster command if mergemaster -p is required.
590         This can be accomplished with the command (cd src/usr.sbin/mergemaster
591         && make install).
592
593 20130404:
594         Legacy ATA stack, disabled and replaced by new CAM-based one since
595         FreeBSD 9.0, completely removed from the sources.  Kernel modules
596         atadisk and atapi*, user-level tools atacontrol and burncd are
597         removed.  Kernel option `options ATA_CAM` is now permanently enabled
598         and removed.
599
600 20130319:
601         SOCK_CLOEXEC and SOCK_NONBLOCK flags have been added to socket(2)
602         and socketpair(2). Software, in particular Kerberos, may
603         automatically detect and use these during building. The resulting
604         binaries will not work on older kernels.
605
606 20130308:
607         CTL_DISABLE has also been added to the sparc64 GENERIC (for further
608         information, see the respective 20130304 entry).
609
610 20130304:
611         Recent commits to callout(9) changed the size of struct callout,
612         so the KBI is probably heavily disturbed. Also, some functions
613         in callout(9)/sleep(9)/sleepqueue(9)/condvar(9) KPIs were replaced
614         by macros. Every kernel module using it won't load, so rebuild
615         is requested.
616
617         The ctl device has been re-enabled in GENERIC for i386 and amd64,
618         but does not initialize by default (because of the new CTL_DISABLE
619         option) to save memory.  To re-enable it, remove the CTL_DISABLE
620         option from the kernel config file or set kern.cam.ctl.disable=0
621         in /boot/loader.conf.
622
623 20130301:
624         The ctl device has been disabled in GENERIC for i386 and amd64.
625         This was done due to the extra memory being allocated at system
626         initialisation time by the ctl driver which was only used if
627         a CAM target device was created.  This makes a FreeBSD system
628         unusable on 128MB or less of RAM.
629
630 20130208:
631         A new compression method (lz4) has been merged to -HEAD.  Please
632         refer to zpool-features(7) for more information.
633
634         Please refer to the "ZFS notes" section of this file for information
635         on upgrading boot ZFS pools.
636
637 20130129:
638         A BSD-licensed patch(1) variant has been added and is installed
639         as bsdpatch, being the GNU version the default patch.
640         To inverse the logic and use the BSD-licensed one as default,
641         while having the GNU version installed as gnupatch, rebuild
642         and install world with the WITH_BSD_PATCH knob set.
643
644 20130121:
645         Due to the use of the new -l option to install(1) during build
646         and install, you must take care not to directly set the INSTALL
647         make variable in your /etc/make.conf, /etc/src.conf, or on the
648         command line.  If you wish to use the -C flag for all installs
649         you may be able to add INSTALL+=-C to /etc/make.conf or
650         /etc/src.conf.
651
652 20130118:
653         The install(1) option -M has changed meaning and now takes an
654         argument that is a file or path to append logs to.  In the
655         unlikely event that -M was the last option on the command line
656         and the command line contained at least two files and a target
657         directory the first file will have logs appended to it.  The -M
658         option served little practical purpose in the last decade so its
659         use is expected to be extremely rare.
660
661 20121223:
662         After switching to Clang as the default compiler some users of ZFS
663         on i386 systems started to experience stack overflow kernel panics.
664         Please consider using 'options KSTACK_PAGES=4' in such configurations.
665
666 20121222:
667         GEOM_LABEL now mangles label names read from file system metadata.
668         Mangling affect labels containing spaces, non-printable characters,
669         '%' or '"'. Device names in /etc/fstab and other places may need to
670         be updated.
671
672 20121217:
673         By default, only the 10 most recent kernel dumps will be saved.  To
674         restore the previous behaviour (no limit on the number of kernel dumps
675         stored in the dump directory) add the following line to /etc/rc.conf:
676
677                 savecore_flags=""
678
679 20121201:
680         With the addition of auditdistd(8), a new auditdistd user is now
681         required during installworld.  "mergemaster -p" can be used to
682         add the user prior to installworld, as documented in the handbook.
683
684 20121117:
685         The sin6_scope_id member variable in struct sockaddr_in6 is now
686         filled by the kernel before passing the structure to the userland via
687         sysctl or routing socket.  This means the KAME-specific embedded scope
688         id in sin6_addr.s6_addr[2] is always cleared in userland application.
689         This behavior can be controlled by net.inet6.ip6.deembed_scopeid.
690         __FreeBSD_version is bumped to 1000025.
691
692 20121105:
693         On i386 and amd64 systems WITH_CLANG_IS_CC is now the default.
694         This means that the world and kernel will be compiled with clang
695         and that clang will be installed as /usr/bin/cc, /usr/bin/c++,
696         and /usr/bin/cpp.  To disable this behavior and revert to building
697         with gcc, compile with WITHOUT_CLANG_IS_CC. Really old versions
698         of current may need to bootstrap WITHOUT_CLANG first if the clang
699         build fails (its compatibility window doesn't extend to the 9 stable
700         branch point).
701
702 20121102:
703         The IPFIREWALL_FORWARD kernel option has been removed. Its
704         functionality now turned on by default.
705
706 20121023:
707         The ZERO_COPY_SOCKET kernel option has been removed and
708         split into SOCKET_SEND_COW and SOCKET_RECV_PFLIP.
709         NB: SOCKET_SEND_COW uses the VM page based copy-on-write
710         mechanism which is not safe and may result in kernel crashes.
711         NB: The SOCKET_RECV_PFLIP mechanism is useless as no current
712         driver supports disposeable external page sized mbuf storage.
713         Proper replacements for both zero-copy mechanisms are under
714         consideration and will eventually lead to complete removal
715         of the two kernel options.
716
717 20121023:
718         The IPv4 network stack has been converted to network byte
719         order. The following modules need to be recompiled together
720         with kernel: carp(4), divert(4), gif(4), siftr(4), gre(4),
721         pf(4), ipfw(4), ng_ipfw(4), stf(4).
722
723 20121022:
724         Support for non-MPSAFE filesystems was removed from VFS. The
725         VFS_VERSION was bumped, all filesystem modules shall be
726         recompiled.
727
728 20121018:
729         All the non-MPSAFE filesystems have been disconnected from
730         the build. The full list includes: codafs, hpfs, ntfs, nwfs,
731         portalfs, smbfs, xfs.
732
733 20121016:
734         The interface cloning API and ABI has changed. The following
735         modules need to be recompiled together with kernel:
736         ipfw(4), pfsync(4), pflog(4), usb(4), wlan(4), stf(4),
737         vlan(4), disc(4), edsc(4), if_bridge(4), gif(4), tap(4),
738         faith(4), epair(4), enc(4), tun(4), if_lagg(4), gre(4).
739
740 20121015:
741         The sdhci driver was split in two parts: sdhci (generic SD Host
742         Controller logic) and sdhci_pci (actual hardware driver).
743         No kernel config modifications are required, but if you
744         load sdhc as a module you must switch to sdhci_pci instead.
745
746 20121014:
747         Import the FUSE kernel and userland support into base system.
748
749 20121013:
750         The GNU sort(1) program has been removed since the BSD-licensed
751         sort(1) has been the default for quite some time and no serious
752         problems have been reported.  The corresponding WITH_GNU_SORT
753         knob has also gone.
754
755 20121006:
756         The pfil(9) API/ABI for AF_INET family has been changed. Packet
757         filtering modules: pf(4), ipfw(4), ipfilter(4) need to be recompiled
758         with new kernel.
759
760 20121001:
761         The net80211(4) ABI has been changed to allow for improved driver
762         PS-POLL and power-save support.  All wireless drivers need to be
763         recompiled to work with the new kernel.
764
765 20120913:
766         The random(4) support for the VIA hardware random number
767         generator (`PADLOCK') is no longer enabled unconditionally.
768         Add the padlock_rng device in the custom kernel config if
769         needed.  The GENERIC kernels on i386 and amd64 do include the
770         device, so the change only affects the custom kernel
771         configurations.
772
773 20120908:
774         The pf(4) packet filter ABI has been changed. pfctl(8) and
775         snmp_pf module need to be recompiled to work with new kernel.
776
777 20120828:
778         A new ZFS feature flag "com.delphix:empty_bpobj" has been merged
779         to -HEAD. Pools that have empty_bpobj in active state can not be
780         imported read-write with ZFS implementations that do not support
781         this feature. For more information read the zpool-features(5)
782         manual page.
783
784 20120727:
785         The sparc64 ZFS loader has been changed to no longer try to auto-
786         detect ZFS providers based on diskN aliases but now requires these
787         to be explicitly listed in the OFW boot-device environment variable. 
788
789 20120712:
790         The OpenSSL has been upgraded to 1.0.1c.  Any binaries requiring
791         libcrypto.so.6 or libssl.so.6 must be recompiled.  Also, there are
792         configuration changes.  Make sure to merge /etc/ssl/openssl.cnf.
793
794 20120712:
795         The following sysctls and tunables have been renamed for consistency
796         with other variables:
797           kern.cam.da.da_send_ordered   -> kern.cam.da.send_ordered
798           kern.cam.ada.ada_send_ordered -> kern.cam.ada.send_ordered
799
800 20120628:
801         The sort utility has been replaced with BSD sort.  For now, GNU sort
802         is also available as "gnusort" or the default can be set back to
803         GNU sort by setting WITH_GNU_SORT.  In this case, BSD sort will be
804         installed as "bsdsort".
805
806 20120611:
807         A new version of ZFS (pool version 5000) has been merged to -HEAD.
808         Starting with this version the old system of ZFS pool versioning
809         is superseded by "feature flags". This concept enables forward
810         compatibility against certain future changes in functionality of ZFS
811         pools. The first read-only compatible "feature flag" for ZFS pools
812         is named "com.delphix:async_destroy". For more information
813         read the new zpool-features(5) manual page.
814         Please refer to the "ZFS notes" section of this file for information
815         on upgrading boot ZFS pools.
816
817 20120417:
818         The malloc(3) implementation embedded in libc now uses sources imported
819         as contrib/jemalloc.  The most disruptive API change is to
820         /etc/malloc.conf.  If your system has an old-style /etc/malloc.conf,
821         delete it prior to installworld, and optionally re-create it using the
822         new format after rebooting.  See malloc.conf(5) for details
823         (specifically the TUNING section and the "opt.*" entries in the MALLCTL
824         NAMESPACE section).
825
826 20120328:
827         Big-endian MIPS TARGET_ARCH values no longer end in "eb".  mips64eb
828         is now spelled mips64.  mipsn32eb is now spelled mipsn32.  mipseb is
829         now spelled mips.  This is to aid compatibility with third-party
830         software that expects this naming scheme in uname(3).  Little-endian
831         settings are unchanged. If you are updating a big-endian mips64 machine
832         from before this change, you may need to set MACHINE_ARCH=mips64 in
833         your environment before the new build system will recognize your machine.
834
835 20120306:
836         Disable by default the option VFS_ALLOW_NONMPSAFE for all supported
837         platforms.
838
839 20120229:
840         Now unix domain sockets behave "as expected" on nullfs(5). Previously
841         nullfs(5) did not pass through all behaviours to the underlying layer,
842         as a result if we bound to a socket on the lower layer we could connect
843         only to the lower path; if we bound to the upper layer we could connect
844         only to the upper path. The new behavior is one can connect to both the
845         lower and the upper paths regardless what layer path one binds to.
846
847 20120211:
848         The getifaddrs upgrade path broken with 20111215 has been restored.
849         If you have upgraded in between 20111215 and 20120209 you need to
850         recompile libc again with your kernel.  You still need to recompile
851         world to be able to configure CARP but this restriction already
852         comes from 20111215.
853
854 20120114:
855         The set_rcvar() function has been removed from /etc/rc.subr.  All
856         base and ports rc.d scripts have been updated, so if you have a
857         port installed with a script in /usr/local/etc/rc.d you can either
858         hand-edit the rcvar= line, or reinstall the port.
859
860         An easy way to handle the mass-update of /etc/rc.d:
861         rm /etc/rc.d/* && mergemaster -i
862
863 20120109:
864         panic(9) now stops other CPUs in the SMP systems, disables interrupts
865         on the current CPU and prevents other threads from running.
866         This behavior can be reverted using the kern.stop_scheduler_on_panic
867         tunable/sysctl.
868         The new behavior can be incompatible with kern.sync_on_panic.
869
870 20111215:
871         The carp(4) facility has been changed significantly. Configuration
872         of the CARP protocol via ifconfig(8) has changed, as well as format
873         of CARP events submitted to devd(8) has changed. See manual pages
874         for more information. The arpbalance feature of carp(4) is currently
875         not supported anymore.
876
877         Size of struct in_aliasreq, struct in6_aliasreq has changed. User
878         utilities using SIOCAIFADDR, SIOCAIFADDR_IN6, e.g. ifconfig(8),
879         need to be recompiled.
880
881 20111122:
882         The acpi_wmi(4) status device /dev/wmistat has been renamed to
883         /dev/wmistat0.
884
885 20111108:
886         The option VFS_ALLOW_NONMPSAFE option has been added in order to
887         explicitely support non-MPSAFE filesystems.
888         It is on by default for all supported platform at this present
889         time.
890
891 20111101:
892         The broken amd(4) driver has been replaced with esp(4) in the amd64,
893         i386 and pc98 GENERIC kernel configuration files.
894
895 20110930:
896         sysinstall has been removed
897
898 20110923:
899         The stable/9 branch created in subversion.  This corresponds to the
900         RELENG_9 branch in CVS.
901
902 COMMON ITEMS:
903
904         General Notes
905         -------------
906         Avoid using make -j when upgrading.  While generally safe, there are
907         sometimes problems using -j to upgrade.  If your upgrade fails with
908         -j, please try again without -j.  From time to time in the past there
909         have been problems using -j with buildworld and/or installworld.  This
910         is especially true when upgrading between "distant" versions (eg one
911         that cross a major release boundary or several minor releases, or when
912         several months have passed on the -current branch).
913
914         Sometimes, obscure build problems are the result of environment
915         poisoning.  This can happen because the make utility reads its
916         environment when searching for values for global variables.  To run
917         your build attempts in an "environmental clean room", prefix all make
918         commands with 'env -i '.  See the env(1) manual page for more details.
919
920         When upgrading from one major version to another it is generally best
921         to upgrade to the latest code in the currently installed branch first,
922         then do an upgrade to the new branch. This is the best-tested upgrade
923         path, and has the highest probability of being successful.  Please try
924         this approach before reporting problems with a major version upgrade.
925
926         When upgrading a live system, having a root shell around before
927         installing anything can help undo problems. Not having a root shell
928         around can lead to problems if pam has changed too much from your
929         starting point to allow continued authentication after the upgrade.
930
931         ZFS notes
932         ---------
933         When upgrading the boot ZFS pool to a new version, always follow
934         these two steps:
935
936         1.) recompile and reinstall the ZFS boot loader and boot block
937         (this is part of "make buildworld" and "make installworld")
938
939         2.) update the ZFS boot block on your boot drive
940
941         The following example updates the ZFS boot block on the first
942         partition (freebsd-boot) of a GPT partitioned drive ada0:
943         "gpart bootcode -p /boot/gptzfsboot -i 1 ada0"
944
945         Non-boot pools do not need these updates.
946
947         To build a kernel
948         -----------------
949         If you are updating from a prior version of FreeBSD (even one just
950         a few days old), you should follow this procedure.  It is the most
951         failsafe as it uses a /usr/obj tree with a fresh mini-buildworld,
952
953         make kernel-toolchain
954         make -DALWAYS_CHECK_MAKE buildkernel KERNCONF=YOUR_KERNEL_HERE
955         make -DALWAYS_CHECK_MAKE installkernel KERNCONF=YOUR_KERNEL_HERE
956
957         To test a kernel once
958         ---------------------
959         If you just want to boot a kernel once (because you are not sure
960         if it works, or if you want to boot a known bad kernel to provide
961         debugging information) run
962         make installkernel KERNCONF=YOUR_KERNEL_HERE KODIR=/boot/testkernel
963         nextboot -k testkernel
964
965         To just build a kernel when you know that it won't mess you up
966         --------------------------------------------------------------
967         This assumes you are already running a CURRENT system.  Replace
968         ${arch} with the architecture of your machine (e.g. "i386",
969         "arm", "amd64", "ia64", "pc98", "sparc64", "powerpc", "mips", etc).
970
971         cd src/sys/${arch}/conf
972         config KERNEL_NAME_HERE
973         cd ../compile/KERNEL_NAME_HERE
974         make depend
975         make
976         make install
977
978         If this fails, go to the "To build a kernel" section.
979
980         To rebuild everything and install it on the current system.
981         -----------------------------------------------------------
982         # Note: sometimes if you are running current you gotta do more than
983         # is listed here if you are upgrading from a really old current.
984
985         <make sure you have good level 0 dumps>
986         make buildworld
987         make kernel KERNCONF=YOUR_KERNEL_HERE
988                                                         [1]
989         <reboot in single user>                         [3]
990         mergemaster -Fp                                 [5]
991         make installworld
992         mergemaster -Fi                                 [4]
993         make delete-old                                 [6]
994         <reboot>
995
996         To cross-install current onto a separate partition
997         --------------------------------------------------
998         # In this approach we use a separate partition to hold
999         # current's root, 'usr', and 'var' directories.   A partition
1000         # holding "/", "/usr" and "/var" should be about 2GB in
1001         # size.
1002
1003         <make sure you have good level 0 dumps>
1004         <boot into -stable>
1005         make buildworld
1006         make buildkernel KERNCONF=YOUR_KERNEL_HERE
1007         <maybe newfs current's root partition>
1008         <mount current's root partition on directory ${CURRENT_ROOT}>
1009         make installworld DESTDIR=${CURRENT_ROOT} -DDB_FROM_SRC
1010         make distribution DESTDIR=${CURRENT_ROOT} # if newfs'd
1011         make installkernel KERNCONF=YOUR_KERNEL_HERE DESTDIR=${CURRENT_ROOT}
1012         cp /etc/fstab ${CURRENT_ROOT}/etc/fstab                    # if newfs'd
1013         <edit ${CURRENT_ROOT}/etc/fstab to mount "/" from the correct partition>
1014         <reboot into current>
1015         <do a "native" rebuild/install as described in the previous section>
1016         <maybe install compatibility libraries from ports/misc/compat*>
1017         <reboot>
1018
1019
1020         To upgrade in-place from stable to current
1021         ----------------------------------------------
1022         <make sure you have good level 0 dumps>
1023         make buildworld                                 [9]
1024         make kernel KERNCONF=YOUR_KERNEL_HERE           [8]
1025                                                         [1]
1026         <reboot in single user>                         [3]
1027         mergemaster -Fp                                 [5]
1028         make installworld
1029         mergemaster -Fi                                 [4]
1030         make delete-old                                 [6]
1031         <reboot>
1032
1033         Make sure that you've read the UPDATING file to understand the
1034         tweaks to various things you need.  At this point in the life
1035         cycle of current, things change often and you are on your own
1036         to cope.  The defaults can also change, so please read ALL of
1037         the UPDATING entries.
1038
1039         Also, if you are tracking -current, you must be subscribed to
1040         freebsd-current@freebsd.org.  Make sure that before you update
1041         your sources that you have read and understood all the recent
1042         messages there.  If in doubt, please track -stable which has
1043         much fewer pitfalls.
1044
1045         [1] If you have third party modules, such as vmware, you
1046         should disable them at this point so they don't crash your
1047         system on reboot.
1048
1049         [3] From the bootblocks, boot -s, and then do
1050                 fsck -p
1051                 mount -u /
1052                 mount -a
1053                 cd src
1054                 adjkerntz -i            # if CMOS is wall time
1055         Also, when doing a major release upgrade, it is required that
1056         you boot into single user mode to do the installworld.
1057
1058         [4] Note: This step is non-optional.  Failure to do this step
1059         can result in a significant reduction in the functionality of the
1060         system.  Attempting to do it by hand is not recommended and those
1061         that pursue this avenue should read this file carefully, as well
1062         as the archives of freebsd-current and freebsd-hackers mailing lists
1063         for potential gotchas.  The -U option is also useful to consider.
1064         See mergemaster(8) for more information.
1065
1066         [5] Usually this step is a noop.  However, from time to time
1067         you may need to do this if you get unknown user in the following
1068         step.  It never hurts to do it all the time.  You may need to
1069         install a new mergemaster (cd src/usr.sbin/mergemaster && make
1070         install) after the buildworld before this step if you last updated
1071         from current before 20130425 or from -stable before 20130430.
1072
1073         [6] This only deletes old files and directories. Old libraries
1074         can be deleted by "make delete-old-libs", but you have to make
1075         sure that no program is using those libraries anymore.
1076
1077         [8] In order to have a kernel that can run the 4.x binaries needed to
1078         do an installworld, you must include the COMPAT_FREEBSD4 option in
1079         your kernel.  Failure to do so may leave you with a system that is
1080         hard to boot to recover. A similar kernel option COMPAT_FREEBSD5 is
1081         required to run the 5.x binaries on more recent kernels.  And so on
1082         for COMPAT_FREEBSD6 and COMPAT_FREEBSD7.
1083
1084         Make sure that you merge any new devices from GENERIC since the
1085         last time you updated your kernel config file.
1086
1087         [9] When checking out sources, you must include the -P flag to have
1088         cvs prune empty directories.
1089
1090         If CPUTYPE is defined in your /etc/make.conf, make sure to use the
1091         "?=" instead of the "=" assignment operator, so that buildworld can
1092         override the CPUTYPE if it needs to.
1093
1094         MAKEOBJDIRPREFIX must be defined in an environment variable, and
1095         not on the command line, or in /etc/make.conf.  buildworld will
1096         warn if it is improperly defined.
1097 FORMAT:
1098
1099 This file contains a list, in reverse chronological order, of major
1100 breakages in tracking -current.  It is not guaranteed to be a complete
1101 list of such breakages, and only contains entries since October 10, 2007.
1102 If you need to see UPDATING entries from before that date, you will need
1103 to fetch an UPDATING file from an older FreeBSD release.
1104
1105 Copyright information:
1106
1107 Copyright 1998-2009 M. Warner Losh.  All Rights Reserved.
1108
1109 Redistribution, publication, translation and use, with or without
1110 modification, in full or in part, in any form or format of this
1111 document are permitted without further permission from the author.
1112
1113 THIS DOCUMENT IS PROVIDED BY WARNER LOSH ``AS IS'' AND ANY EXPRESS OR
1114 IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
1115 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
1116 DISCLAIMED.  IN NO EVENT SHALL WARNER LOSH BE LIABLE FOR ANY DIRECT,
1117 INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
1118 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
1119 SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
1120 HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
1121 STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
1122 IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
1123 POSSIBILITY OF SUCH DAMAGE.
1124
1125 Contact Warner Losh if you have any questions about your use of
1126 this document.
1127
1128 $FreeBSD$