xref: /freebsd/usr.sbin/config/configvers.h (revision f126890a)
1 /*-
2  * This file is in the public domain
3  */
4 
5 /*
6  * 6 digits of version.  The most significant are branch indicators at the
7  * time when the last incompatible change was made (which is why it is
8  * presently 6 on 7-current).  The least significant digits are incremented
9  * as described below.  The format is similar to the __FreeBSD_version, but
10  * not tied to it.
11  *
12  * DO NOT CASUALLY BUMP THIS NUMBER!  The rules are not the same as shared
13  * libs or param.h/osreldate.
14  *
15  * It is the version number of the protocol between config(8) and the
16  * sys/conf/ Makefiles (the kernel build system).
17  *
18  * It is now also used to trap certain problems that the syntax parser cannot
19  * detect.
20  *
21  * Unfortunately, there is no version number for user supplied config files.
22  *
23  * Once, config(8) used to silently report errors and continue anyway.  This
24  * was a huge problem for 'make buildkernel' which was run with the installed
25  * /usr/sbin/config, not a cross built one.  We started bumping the version
26  * number as a way to trap cases where the previous installworld was not
27  * compatible with the new buildkernel.  The buildtools phase and much more
28  * comprehensive error code returns solved this original problem.
29  *
30  * Most end-users will use buildkernel and the build tools from buildworld.
31  * The people that are inconvenienced by gratuitous bumps are developers
32  * who run config by hand.  However, developers shouldn't gratuitously be
33  * inconvenienced.
34  *
35  * One should bump the CONFIGVERS in the following ways:
36  *
37  * (1) If you change config such that it won't read old config files,
38  *     then bump the major number.  You shouldn't be doing this unless
39  *     you are overhauling config.  Do not casually bump this number
40  *     and by implication do not make changes that would force a bump
41  *     of this number casually.  You should limit major bumps to once
42  *     per branch.
43  * (2) For each new feature added, bump the minor version of this file.
44  *     When a new feature is actually used by the build system, update the
45  *     %VERSREQ field in the Makefile.$ARCH of all the affected makefiles
46  *     (typically all of them).
47  */
48 #define	CONFIGVERS	600018
49 #define	MAJOR_VERS(x)	((x) / 100000)
50 
51 /* Last config(8) version to require envmode/hintmode */
52 #define	CONFIGVERS_ENVMODE_REQ	600015
53