configvers.h revision 215034
1204076Spjd/*-
2204076Spjd * This file is in the public domain
3204076Spjd *
4204076Spjd * $FreeBSD: head/usr.sbin/config/configvers.h 215034 2010-11-09 10:59:09Z brucec $
5204076Spjd */
6204076Spjd
7204076Spjd/*
8204076Spjd * 6 digits of version.  The most significant are branch indicators at the
9204076Spjd * time when the last incompatible change was made (which is why it is
10204076Spjd * presently 6 on 7-current).  The least significant digits are incremented
11204076Spjd * as described below.  The format is similar to the __FreeBSD_version, but
12204076Spjd * not tied to it.
13204076Spjd *
14204076Spjd * DO NOT CASUALLY BUMP THIS NUMBER!  The rules are not the same as shared
15204076Spjd * libs or param.h/osreldate.
16204076Spjd *
17204076Spjd * It is the version number of the protocol between config(8) and the
18204076Spjd * sys/conf/ Makefiles (the kernel build system).
19204076Spjd *
20204076Spjd * It is now also used to trap certain problems that the syntax parser cannot
21204076Spjd * detect.
22204076Spjd *
23204076Spjd * Unfortunately, there is no version number for user supplied config files.
24204076Spjd *
25204076Spjd * Once, config(8) used to silently report errors and continue anyway.  This
26204076Spjd * was a huge problem for 'make buildkernel' which was run with the installed
27204076Spjd * /usr/sbin/config, not a cross built one.  We started bumping the version
28204076Spjd * number as a way to trap cases where the previous installworld was not
29204076Spjd * compatible with the new buildkernel.  The buildtools phase and much more
30204076Spjd * comprehensive error code returns solved this original problem.
31204076Spjd *
32204076Spjd * Most end-users will use buildkernel and the build tools from buildworld.
33204076Spjd * The people that are inconvenienced by gratuitous bumps are developers
34204076Spjd * who run config by hand.  However, developers shouldn't gratuitously be
35204076Spjd * inconvenienced.
36204076Spjd *
37204076Spjd * One should bump the CONFIGVERS in the following ways:
38204076Spjd *
39204076Spjd * (1) If you change config such that it won't read old config files,
40204076Spjd *     then bump the major number.  You shouldn't be doing this unless
41204076Spjd *     you are overhauling config.  Do not casually bump this number
42204076Spjd *     and by implication do not make changes that would force a bump
43204076Spjd *     of this number casually.  You should limit major bumps to once
44204076Spjd *     per branch.
45204076Spjd * (2) For each new feature added, bump the minor version of this file.
46204076Spjd *     When a new feature is actually used by the build system, update the
47204076Spjd *     %VERSREQ field in the Makefile.$ARCH of all the affected makefiles
48204076Spjd *     (typically all of them).
49204076Spjd *
50204076Spjd * $FreeBSD: head/usr.sbin/config/configvers.h 215034 2010-11-09 10:59:09Z brucec $
51204076Spjd */
52204076Spjd#define	CONFIGVERS	600011
53204076Spjd#define	MAJOR_VERS(x)	((x) / 100000)
54204076Spjd