Commit Graph

332 Commits

Author SHA1 Message Date
Warner Losh
4bc2b0b76d Require the option that's mapped be listed in the options file. This
will allow people with old config options to either have it just work
(if config is new enough), or get a version error (if their config is
about 7.0 or newer) rather than getting a cryptic error about
duplicated options in the options file, or getting an error about an
unknown option, at which point they'd update their config file only to
learn they need a new config, only to learn they didn't really need to
update their config file...  All this because our version checking was
in the wrong place for the past decade...

# hopefully this is the last change, and we'll be able to config with an
# 8.0 GENERIC file on stable/8 after I merge this change and add the
# compat options.

MFC after:	3 days
2010-04-27 06:14:30 +00:00
Warner Losh
012ead2f2c Redo how we add compat options so as to be compatible with old
versions of config.  Remove support for the syntax OLD = NEW form the
options file, and instead have a new file $S/conf/options-compat.
This file will be parsed as OLD NEW on each line.  Bump version of
config.  Since nothing in -current ever used this, there's no hazards
for current users, so I'm not bumping the version in the
Makefiles.$MACHINE.  No need, really, for this version bump in
-current, but this was introduced into -stable before I realized the
version check was ineffective there, so the verison bump doesn't hurt
here and keeps the two branches in sync, versionwise, after the MFC.

MFC after:	3 days
2010-04-27 05:38:26 +00:00
Warner Losh
90aa4f9e8c Move checking the version up from Makefile generation to just after
we've parsed the config file.  Makefile generation is too late if
we've introduce changes to the syntax of the metafiles to warn about
version skew, since we have to try to parse them and we get an parse
error that's rather baffling to the user rather than a 'your config is
too old, upgrade' which we should get.

We have to defer doing it until after we've read the user's config
file because we define machinename there.  The version required to
compile the kernel is encoded in Makefile.machinename.  There's no
real reason for this to be the case, but changing it now would
introduce some logistical issues that I'd rather avoid for the moment.
I intend to revisit this if we're still using config in FreeBSD 10.

This also means that we cannot introduce any config metafile changes
that result in a syntax error or other error for the user until 9.0 is
released.  Otherwise, we break the upgrade path, or at least reduce
the usefulness of the error messages we generate.

# This implies that the config file option mapping will need to be redone.

MFC after:	3 days
2010-04-27 05:04:32 +00:00
Alexander Leidinger
7ab4cc53fd Revert r206179 (by imp) and do something similar which is more consistent
with all other corresponding CTF places by changing the corresponding
code which is generated by config(8). Or in short, move the '@' from
the variable definition to the use of the variable. [1]

While I'm here break up a long line. [2]

Discussed with:	imp [1,2], bde [2]
2010-04-22 09:20:17 +00:00
Warner Losh
bd34cda61a Bump minor version of config to reflect the new option remapping
feature.  The kernel makefiles have specifically not been bumped
because nothing uses this new feature and doing so forces everybody to
recompile for no good reason.  This chnage will be MFC'd where the
kernel version numbers for amd64 and ia64 will be bumped, since those
are the only two that have use the option remapping feature.  Once
merged, this will give a better error message to folks that are using
buildkernel without buildworld or kernel-toolchain to update their
kernels.

MFC after:	3 days
2010-04-20 20:36:38 +00:00
Warner Losh
e1a4e3fa37 Allow option aliasing. Lines of the form:
OLD_OPT = NEW_OPT

in options* files will now map OLD_OPT to NEW_OPT with a friendly
message.  This is indented for situations where we need to preserve an
interface in the config file in an upwards compatible fashion on a
stable branch.

Reviewed by:	nwhitehorn@
MFC after:	3 days
2010-04-15 15:10:46 +00:00
Ruslan Ermilov
53d55e9756 - Handle calloc() allocation failures.
- Fixed a comment.
- 2 -> EXIT_FAILURE in some places.
- errx() -> err() where appropriate.

PR:		144644
Submitted by:	Garrett Cooper
2010-03-30 13:46:40 +00:00
Ed Schouten
71ccf09269 The last big commit: let usr.sbin/ use WARNS=6 by default. 2010-01-02 11:07:44 +00:00
Ed Schouten
10bc3a7f42 ANSIfy almost all applications that use WARNS=6.
I was considering committing all these patches one by one, but as
discussed with brooks@, there is no need to do this. If we ever
need/want to merge these changes back, it is still possible to do this
per application.
2009-12-29 22:53:27 +00:00
Wojciech A. Koszek
4ac2fcaa45 Move the comment to it's correct place. 2009-02-07 11:40:47 +00:00
Wojciech A. Koszek
fcba95d49e Remove leftover of alpha support for config(8)--we have MAP_FAILED
globally defined.
2009-02-07 11:12:30 +00:00
Wojciech A. Koszek
d030e65009 Make config -x <kernel> only return non-zero characters,
so that:

	config -x <kernel> | grep <something>

just works.

Reported by:	Danny Braniss <danny@cs.huji.ac.il>
2009-02-06 00:50:21 +00:00
Warner Losh
50a4596585 Delete commented out ancient history. 2009-01-26 21:45:33 +00:00
Andrew Thompson
2880daeb77 Allow multiple makeoption lines to be used with the += operator, this permits
the following syntax in the kernel config.

 makeoptions MODULES_OVERRIDE=foo
 makeoptions MODULES_OVERRIDE+=bar
 makeoptions MODULES_OVERRIDE+=baz

Bump config minor version to 600007.
2008-11-22 21:12:47 +00:00
David E. O'Brien
eb43240464 Allow kernel config files to include files other than those in the CWD,
using unquoted paths.
2008-07-28 17:11:57 +00:00
John Birrell
4287da9afb Revice the way the CTF conversion is done per object. Avoid creating a second
shell (which was the problem with the original implementation) and avoid
letting make see an empty definition (which was the problem with the current
implementation).
2008-06-29 07:15:57 +00:00
John Birrell
1f1fa917bd Change the CTF conversion makefile code to use a new line to avoid
spawning another shell.

Requested by: Ed Schouten

M    config/mkmakefile.c
2008-06-09 06:33:26 +00:00
John Birrell
4978b9f13c Add the CTF conversion to the generated makefile. In the case where
NO_CTF or !WITH_CTF, the macro is empty.
2008-05-23 03:55:26 +00:00
Warner Losh
30f94bb497 Fix a bug introduced by DEFAULTS feature. When the config file
doesn't exist, we make a directory and then say "oops, that file isn't
there" leaving the directory behind.  Add a stat for the config file
so that we detect this before making the directory.  This is
semi-lame, but less lame than having this bug.
2008-04-10 22:57:54 +00:00
Ed Maste
3b2262e488 Honour the logical current working directory ($PWD) when using config's
-d destdir option.  For an automounted src tree using the logical cwd
in the Makefile keeps amd(8)'s mount timeout refreshed.  Code to check
$PWD's validity cribbed from pwd(1).

Discussed on hackers@.
2008-01-08 21:10:13 +00:00
Warner Losh
91998fc549 Spring forward into the late 1970's by following item 5 in the yacc
manual's Appendix D ("Old Features Supported but not Encouraged") in
the Seventh Edition Unix Programmer's Manual (January, 1979) by
retiring the " = {" method of of action specification in favor of a
plain "{".  It is no longer necessary for this bootstrap program to
be compatible with 6th Edition systems.  Some yaccs in the wild do not
support this old syntax any more, and compatibility with those systems
is more important these days (as there are easily 7 orders of magnitude
more of them than real v6 systems today).

Reviewed by: jhb@ and dds@ (the latter gave the reference).
2007-12-25 06:22:33 +00:00
Ruslan Ermilov
71ce49ae8d Fixed "make checkdpadd" (missing library dependencies).
Approved by:	re (kensmith)
2007-10-01 18:15:11 +00:00
Warner Losh
c1f4dd9355 Fix some problems that affect multiple file inclusion. Bruce found
this bug and submitted these patches to dunstan@.  He sent them to me
to test, and I discovered they were needed for the atmel kernel config
files.  Since we were playing with them in the terminal room after the
developer's summit today, I thought I'd go ahead and commit them to
allow those folks that now have atmel hardware (thanks Andre) a chance
to try it out w/o my help.  Since dunstan@ is asleep right now, risk
stepping on his toes a little by going ahead and committing this
change.

Submitted by: dunstan@, bde@
Tested by: bde@
2007-05-17 04:53:52 +00:00
Wojciech A. Koszek
5f9974ae57 Handle !INCLUDE_CONFIG_FILE entirely in the kernel. This should make some
developers happy, since it will let them to use old config(8) with newer
kernels.

Reviewed by:	imp
Approved by:	imp
2007-05-16 16:08:04 +00:00
Wojciech A. Koszek
9e2f7513e1 Bump config(8) version and build requirement for config(8) to 600006. This
is caused by my latest changes to config(8). You're supposed to install new
config(8) in order to prevent yourself from seeing a warning about old
version of that tool.

You should configure the kernel with a new config(8) then.

Oked by:	rwatson, cognet (mentor)
2007-05-13 02:36:41 +00:00
Wojciech A. Koszek
ae7a150a68 This is loser's commit message:
Remember about tricky cases, where options contain unfriendly characters,
from the ANSI-C string point of view ('"' in this case). The x09 build
breakage was caused by SC_CUT_SEPCHARS options.

I did test this patch number of times; each time unprofessionally and
inappropriately.

OKed by:	cognet (mentor)
2007-05-12 22:37:52 +00:00
Wojciech A. Koszek
c21a9d0c87 Add ${.CURDIR} before kernconf.tmpl in order to let the build see newly
added kernconft.tmpl file.

Approved by:	cognet (mentor)
2007-05-12 20:33:13 +00:00
Wojciech A. Koszek
744b947ef8 Improve INCLUDE_CONFIG_FILE support.
This change will let us to have full configuration of a running kernel
available in sysctl:

	sysctl -b kern.conftxt

The same configuration is also contained within the kernel image. It can be
obtained with:

	config -x <kernelfile>

Current functionality lets you to quickly recover kernel configuration, by
simply redirecting output from commands presented above and starting kernel
build procedure. "include" statements are also honored, which means options
and devices from included files are also included.

Please note that comments from configuration files are not preserved by
default. In order to preserve them, you can use -C flag for config(8). This
will bring configuration file and included files literally; however,
redirection to a file no longer works directly.

This commit was followed by discussion, that took place on freebsd-current@.
For more details, look here:

	http://lists.freebsd.org/pipermail/freebsd-current/2007-March/069994.html
	http://lists.freebsd.org/pipermail/freebsd-current/2007-May/071844.html

Development of this patch took place in Perforce, hierarchy:

	//depot/user/wkoszek/wkoszek_kconftxt/

Support from:	freebsd-current@ (links above)
Reviewed by:	imp@
Approved by:	imp@
2007-05-12 19:38:18 +00:00
Warner Losh
a4ae1f8999 Don't leak files.
This also eliminates the need for ifp init.

Submitted by: ru@
2006-10-24 07:12:31 +00:00
Warner Losh
5fd6a6b362 Document multiple hints lines.
Tweak machine description to more accurately reflect second argument being
the cpu architecture.  Note correspondence with MACHINE and MACHINE_ARCH.
2006-10-24 00:44:40 +00:00
Warner Losh
86418d0cef End my resistance to jmg's multiple hints files and bring in support
for having multiple hints files generate a correct hints.c (eg, with
all the specified ones catenated together).
2006-10-24 00:31:59 +00:00
Warner Losh
55659bb594 style(9) pedantry 2006-10-24 00:07:39 +00:00
Warner Losh
f4359e4e36 Since multiple hints lines do not work, make doing that a fatal error. 2006-10-24 00:02:23 +00:00
Ruslan Ermilov
fffa30fb6d Comment out the first paragraph; while it tells the true (we're using
the old BSD config(8) utility in FreeBSD), it does not look good.

PR:		docs/100328
2006-10-21 20:09:51 +00:00
Ruslan Ermilov
d9fb65c84d Added rudimentary support for the "include" directive (inside "files").
This will be used to split sys/conf/files into multiple files similar
to how this is done in NetBSD.
2006-10-01 17:17:29 +00:00
Stefan Farfeleder
347a5ee76c Remove unused variables. 2006-07-20 09:38:46 +00:00
Stefan Farfeleder
87364ca6f0 Remove an unused variable. 2006-07-19 10:46:38 +00:00
Xin LI
5f17c1e2b2 Use calloc() instead of zeroing the memory our own. 2006-06-07 01:43:26 +00:00
Joseph Koshy
4bb7c6590e Document the two argument form of the "machine" directive.
Reviewed by:	imp
MFC After:	3 days
2006-02-12 07:56:11 +00:00
Warner Losh
d5e0beb486 Allow newer config versions to config older versions with the same
major number.

Reviewed by: ru@, jhb@, arch@ (a few months ago)

# this is subject to refinement based on experience.
2006-02-03 06:12:10 +00:00
Florent Thoumie
34e703473c - Change the exit message from "make cleandepend; make depend" to
"make cleandepend && make depend".

PR:		bin/91765
Submitted by:	Soeren Straarup <xride@x12.dk>
Approved by:	cpercival
MFC after:	3 days
2006-01-14 08:12:25 +00:00
Ruslan Ermilov
8ee64886ef - Avoid adding devices multiple times to the device list.
- Avoid adding options multiple times to the option list.

Based on a patch by:	Matt Emmerton <matt@gsicomp.on.ca>
2005-12-30 16:28:06 +00:00
Ruslan Ermilov
22025511b4 Clean up most of the "XXX"-tagged items:
- The code that creates hints.c and env.c from the skeleton files
  moved into separate functions.

- Sanity checks for missing "ident" and "cputype" directives moved
  into main(), alongside the existing check for "machine".

PR:		bin/90310
Submitted by:	Matt Emmerton <matt@gsicomp.on.ca>
2005-12-30 15:29:50 +00:00
Ruslan Ermilov
f99d3b7b53 config.5 was repocopied from share/man/man5/ to usr.sbin/config/.
Repocopied by:	peter
2005-12-09 06:46:41 +00:00
Ruslan Ermilov
198423bd20 Document "makeoption", "nocpu", and "nomakeoptions" directives.
(Indeed this should be repo-copied to src/usr.sbin/config/.)
2005-12-03 20:07:32 +00:00
Ruslan Ermilov
233945839b Add "makeoption" as an alias to "makeoptions", for symmetry. 2005-12-03 20:04:24 +00:00
Ruslan Ermilov
f0caeb4419 Style: use S_ISDIR() (submitted by bde@) and eq() where appropriate. 2005-11-30 17:55:49 +00:00
Peter Wemm
03349079fe The DEFAULTS changes caused the user specified config file to be opened
much later than before, and it is now after we do a mkdir ../compile/FILE.
As a result, if you do 'config DOESNOTEXIST', it now creates the directory
../config/DOESNOTEXIST.  It did not do that before.  If DEFAULTS does not
exist, it still fails early before any permanent changes.

This shameless hack restores the old behavior of ensuring the config file
actually exists before mkdiring its counterpart directory.

Now I can rmdir ../compile/D and it will stay dead, after my fingers keep
sabotaging me with 'config D<tab><enter>'.  (Some of my kernel names
started with D, which used to be 1-character unique and my fingers knew
this very well...)
2005-11-29 22:54:49 +00:00
Warner Losh
ae54f5616d 600004 is a better new version than 700000 based on some future commits to
this file.  With ru@'s approval, change it to this version.  In this case we
had to bump the version because the old parser would choke on | in the new
'or' syntax and consider that a device.

Approved by: ru@
2005-11-28 17:47:54 +00:00
Ruslan Ermilov
6646524f34 - Allow duplicate "machine" directives with the same arguments.
- Move existing "machine" directives to DEFAULTS.
2005-11-27 23:17:00 +00:00