configvers.h revision 211326
1119418Sobrien/*-
269953Smsmith * This file is in the public domain
369953Smsmith *
469953Smsmith * $FreeBSD: head/usr.sbin/config/configvers.h 211326 2010-08-15 08:49:07Z imp $
569953Smsmith */
669953Smsmith
769953Smsmith/*
869953Smsmith * 6 digits of version.  The most significant are branch indicators at the
969953Smsmith * time when the last incompatible change was made (which is why it is
1069953Smsmith * presently 6 on 7-current).  The least significant digits are incremented
1169953Smsmith * as described below.  The format is similar to the __FreeBSD_version, but
1269953Smsmith * not tied to it.
1369953Smsmith *
1469953Smsmith * DO NOT CASUALLY BUMP THIS NUMBER!  The rules are not the same as shared
1569953Smsmith * libs or param.h/osreldate.
1669953Smsmith *
1769953Smsmith * It is the version number of the protocol between config(8) and the
1869953Smsmith * sys/conf/ Makefiles (the kernel build system).
1969953Smsmith *
2069953Smsmith * It is now also used to trap certain problems that the syntax parser cannot
2169953Smsmith * detect.
2269953Smsmith *
2369953Smsmith * Unfortunately, there is no version number for user supplied config files.
2469953Smsmith *
2569953Smsmith * Once, config(8) used to silently report errors and continue anyway.  This
2669953Smsmith * was a huge problem for 'make buildkernel' which was run with the installed
27119418Sobrien * /usr/sbin/config, not a cross built one.  We started bumping the version
28119418Sobrien * number as a way to trap cases where the previous installworld was not
29119418Sobrien * compatable with the new buildkernel.  The buildtools phase and much more
3069953Smsmith * comprehensive error code returns solved this original problem.
31149478Sps *
3269953Smsmith * Most end-users will use buildkernel and the build tools from buildworld.
3369953Smsmith * The people that are inconvenienced by gratuitous bumps are developers
3469953Smsmith * who run config by hand.  However, developers shouldn't gratuitously be
3569953Smsmith * inconvenienced.
3669953Smsmith *
3769953Smsmith * One should bump the CONFIGVERS in the following ways:
3869953Smsmith *
3969953Smsmith * (1) If you change config such that it won't read old config files,
4069953Smsmith *     then bump the major number.  You shouldn't be doing this unless
4183975Srwatson *     you are overhauling config.  Do not casually bump this number
4269953Smsmith *     and by implication do not make changes that would force a bump
4369953Smsmith *     of this number casually.  You should limit major bumps to once
4469953Smsmith *     per branch.
4569953Smsmith * (2) For each new feature added, bump the minor version of this file.
4669953Smsmith *     When a new feature is actually used by the build system, update the
4769953Smsmith *     %VERSREQ field in the Makefile.$ARCH of all the affected makefiles
4869953Smsmith *     (typically all of them).
4969953Smsmith *
5069953Smsmith * $FreeBSD: head/usr.sbin/config/configvers.h 211326 2010-08-15 08:49:07Z imp $
5169953Smsmith */
5269953Smsmith#define	CONFIGVERS	600011
5369953Smsmith#define	MAJOR_VERS(x)	((x) / 100000)
5469953Smsmith