330 Commits

Author SHA1 Message Date
imp
5626f96be2 MFC: r207461
sparc64, and possibly other architectures, pads the length of the
  section holding the config file to sh_addralign bytes using NULs.
  This bogusly triggers an assert.  Break out of the loop when we hit an
  NUL within that many bytes of the end.
2010-05-04 03:56:25 +00:00
imp
56a6fa1b61 MFC r207265:
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.
2010-05-02 06:18:57 +00:00
imp
2e57b92d26 MFC r207263:
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.
2010-05-02 06:18:08 +00:00
imp
31fdf3079c MFC r207260:
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.
2010-05-02 06:14:36 +00:00
imp
a6f6a37fc5 MFC r206915
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-25 19:21:19 +00:00
imp
9b85332a77 MFC r206664:
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-18 00:57:30 +00:00
emaste
3d28eb4488 MFC r205880 by ru:
- Handle calloc() allocation failures.
  - Fixed a comment.
  - 2 -> EXIT_FAILURE in some places.
  - errx() -> err() where appropriate.

PR:		144644
Submitted by:	Garrett Cooper

Also fix endinclude() prototype to avoid compiler warning.
2010-04-13 18:46:18 +00:00
wkoszek
9c7fbb2c38 Move the comment to it's correct place. 2009-02-07 11:40:47 +00:00
wkoszek
5be805d3a6 Remove leftover of alpha support for config(8)--we have MAP_FAILED
globally defined.
2009-02-07 11:12:30 +00:00
wkoszek
d2a92510f2 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
imp
fee43044fc Delete commented out ancient history. 2009-01-26 21:45:33 +00:00
thompsa
5318a38202 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
obrien
ffa6157788 Allow kernel config files to include files other than those in the CWD,
using unquoted paths.
2008-07-28 17:11:57 +00:00
jb
081bbc17b6 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
jb
2113c65a2d 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
jb
2fda3a0dfb 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
imp
d99d951c1c 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
emaste
23d78439c9 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
imp
dd8f31f0c8 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
ru
0de18b1b0a Fixed "make checkdpadd" (missing library dependencies).
Approved by:	re (kensmith)
2007-10-01 18:15:11 +00:00
imp
5907a150d5 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
wkoszek
04e8b672c8 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
wkoszek
f6d4544853 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
wkoszek
542df97fc9 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
wkoszek
592e533496 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
wkoszek
2e673327ec 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
imp
b55d55f173 Don't leak files.
This also eliminates the need for ifp init.

Submitted by: ru@
2006-10-24 07:12:31 +00:00
imp
4a849e1038 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
imp
340936b70b 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
imp
38fb98a990 style(9) pedantry 2006-10-24 00:07:39 +00:00
imp
f4f64df7ff Since multiple hints lines do not work, make doing that a fatal error. 2006-10-24 00:02:23 +00:00
ru
26eb288875 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
ru
a8ad84893b 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
stefanf
42f73871a9 Remove unused variables. 2006-07-20 09:38:46 +00:00
stefanf
fe8bf26aef Remove an unused variable. 2006-07-19 10:46:38 +00:00
delphij
65d304bb17 Use calloc() instead of zeroing the memory our own. 2006-06-07 01:43:26 +00:00
jkoshy
e17ecbb07c Document the two argument form of the "machine" directive.
Reviewed by:	imp
MFC After:	3 days
2006-02-12 07:56:11 +00:00
imp
ea5c1281b0 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
flz
20f867c0a7 - 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
ru
59fdf73a63 - 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
ru
9d1801a105 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
ru
808f83c06f config.5 was repocopied from share/man/man5/ to usr.sbin/config/.
Repocopied by:	peter
2005-12-09 06:46:41 +00:00
ru
239dea2f89 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
ru
a77bcc5aa3 Add "makeoption" as an alias to "makeoptions", for symmetry. 2005-12-03 20:04:24 +00:00
ru
34db19b973 Style: use S_ISDIR() (submitted by bde@) and eq() where appropriate. 2005-11-30 17:55:49 +00:00
peter
bf85e6f245 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
imp
2d582a32ea 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
ru
9fa3a162bc - Allow duplicate "machine" directives with the same arguments.
- Move existing "machine" directives to DEFAULTS.
2005-11-27 23:17:00 +00:00
ru
cbff67d85c Make config(8) understand ORed dependecies in "files*" and
improve tracking of known devices.  Bump config(8) version.
2005-11-27 21:41:58 +00:00
ru
1852a934be Clean some code that became obfuscated over the years:
Don't keep duplicate files in the files list just to
mark the device as "known" later.  XXX: Since the
device list isn't unique (there can be two "device foo"
directives, as this the case with LINT+DEFAULTS), we
have to traverse it all to mark all copies of the same
device as "used", but this is not worse than it was.
2005-11-25 22:25:34 +00:00