aboutsummaryrefslogtreecommitdiff
path: root/docs/markdown/Keyval-module.md
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2020-02-07 01:55:27 +0100
committerJussi Pakkanen <jpakkane@gmail.com>2020-05-08 20:56:14 +0300
commit7e1529501883ce8741d8689c150f589ab68a814f (patch)
tree407e0c6b075a1b8872f7f9896948d79cbe5846ed /docs/markdown/Keyval-module.md
parenta535ef6719816b23085da492dbcdcc4b7bfa8d2b (diff)
downloadmeson-7e1529501883ce8741d8689c150f589ab68a814f.zip
meson-7e1529501883ce8741d8689c150f589ab68a814f.tar.gz
meson-7e1529501883ce8741d8689c150f589ab68a814f.tar.bz2
rename unstable-kconfig to unstable-keyval
Discussions in #6524 have shown that there are various possible uses of the kconfig module and even disagreements in the exact file format between Python-based kconfiglib and the tools in Linux. Instead of trying to reconcile them, just rename the module to something less suggestive and leave any policy to meson.build files. In the future it may be possible to add some kind of parsing through keyword arguments such as bool_true, quoted_strings, etc. and possibly creation of key-value lists too. For now, configuration_data objects provide an easy way to access quoted strings. Note that Kconfig stores false as "absent" so it was already necessary to write "x.has_key('abc')" rather than the more compact "x['abc']". Therefore, having to use configuration_data does not make things much more verbose.
Diffstat (limited to 'docs/markdown/Keyval-module.md')
-rw-r--r--docs/markdown/Keyval-module.md55
1 files changed, 55 insertions, 0 deletions
diff --git a/docs/markdown/Keyval-module.md b/docs/markdown/Keyval-module.md
new file mode 100644
index 0000000..643265e
--- /dev/null
+++ b/docs/markdown/Keyval-module.md
@@ -0,0 +1,55 @@
+---
+short-description: Unstable keyval module
+authors:
+ - name: Mark Schulte, Paolo Bonzini
+ years: [2017, 2019]
+ has-copyright: false
+...
+
+# keyval module
+
+This module parses files consisting of a series of `key=value` lines. One use
+of this module is to load kconfig configurations in meson projects.
+
+**Note**: this does not provide kconfig frontend tooling to generate a
+configuration. You still need something such as kconfig frontends (see
+link below) to parse your Kconfig files, and then (after you've
+chosen the configuration options), output a ".config" file.
+
+ [kconfig-frontends]: http://ymorin.is-a-geek.org/projects/kconfig-frontends
+
+## Usage
+
+The module may be imported as follows:
+
+``` meson
+keyval = import('unstable-keyval')
+```
+
+The following functions will then be available as methods on the object
+with the name `keyval`. You can, of course, replace the name
+`keyval` with anything else.
+
+### keyval.load()
+
+This function loads a file consisting of a series of `key=value` lines
+and returns a dictionary object.
+
+`keyval.load()` makes no attempt at parsing the values in the file.
+In particular boolean and integer values will be represented as strings,
+and strings will keep any quoting that is present in the input file. It
+can be useful to create a [`configuration_data()`](#configuration_data)
+object from the dictionary and use methods such as `get_unquoted()`.
+
+Kconfig frontends usually have ".config" as the default name for the
+configuration file. However, placing the configuration file in the source
+directory limits the user to one configuration per source directory.
+In order to allow separate configurations for each build directory, as is
+the Meson standard, `meson.build` should not hardcode ".config" as the
+argument to `kconfig.load()`, and should instead make the argument to
+`kconfig.load()` a [project build option](Build-options.md).
+
+* The first (and only) argument is the path to the configuration file to
+ load (usually ".config").
+
+**Returns**: a [dictionary object](Reference-manual.md#dictionary-object).