* [PATCH 1/5] moveconfig: Correct operation of the 'imply' feature
@ 2021-12-18 15:09 Simon Glass
2021-12-18 15:09 ` [PATCH 2/5] moveconfig: Read the database in a separate function Simon Glass
` (4 more replies)
0 siblings, 5 replies; 10+ messages in thread
From: Simon Glass @ 2021-12-18 15:09 UTC (permalink / raw)
To: U-Boot Mailing List; +Cc: Simon Glass, Trevor Woerner
This doesn't work anymore, since the Kconfig update. The script has no
tests so we did not notice. Fix it.
Signed-off-by: Simon Glass <sjg@chromium.org>
---
tools/moveconfig.py | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/tools/moveconfig.py b/tools/moveconfig.py
index 373b395fda4..8d059be039d 100755
--- a/tools/moveconfig.py
+++ b/tools/moveconfig.py
@@ -1263,7 +1263,7 @@ def find_kconfig_rules(kconf, config, imply_config):
sym = kconf.syms.get(imply_config)
if sym:
for sel, cond in (sym.selects + sym.implies):
- if sel == config:
+ if sel.name == config:
return sym
return None
@@ -1291,7 +1291,8 @@ def check_imply_rule(kconf, config, imply_config):
nodes = sym.nodes
if len(nodes) != 1:
return '%d locations' % len(nodes)
- fname, linenum = nodes[0].filename, nodes[0].linern
+ node = nodes[0]
+ fname, linenum = node.filename, node.linenr
cwd = os.getcwd()
if cwd and fname.startswith(cwd):
fname = fname[len(cwd) + 1:]
@@ -1382,7 +1383,7 @@ def do_imply_config(config_list, add_imply, imply_flags, skip_added,
"""
kconf = KconfigScanner().conf if check_kconfig else None
if add_imply and add_imply != 'all':
- add_imply = add_imply.split()
+ add_imply = add_imply.split(',')
# key is defconfig name, value is dict of (CONFIG_xxx, value)
config_db = {}
@@ -1414,7 +1415,7 @@ def do_imply_config(config_list, add_imply, imply_flags, skip_added,
else: # New defconfig
defconfig = line
- # Work through each target config option in tern, independently
+ # Work through each target config option in turn, independently
for config in config_list:
defconfigs = defconfig_db.get(config)
if not defconfigs:
--
2.34.1.173.g76aa8bc2d0-goog
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 2/5] moveconfig: Read the database in a separate function
2021-12-18 15:09 [PATCH 1/5] moveconfig: Correct operation of the 'imply' feature Simon Glass
@ 2021-12-18 15:09 ` Simon Glass
2022-01-25 15:57 ` Tom Rini
2021-12-18 15:09 ` [PATCH 3/5] moveconfig: Sort the options Simon Glass
` (3 subsequent siblings)
4 siblings, 1 reply; 10+ messages in thread
From: Simon Glass @ 2021-12-18 15:09 UTC (permalink / raw)
To: U-Boot Mailing List; +Cc: Simon Glass, Trevor Woerner
Move this code out into a function so it can be used elsewhere.
Signed-off-by: Simon Glass <sjg@chromium.org>
---
tools/moveconfig.py | 78 ++++++++++++++++++++++++++++-----------------
1 file changed, 49 insertions(+), 29 deletions(-)
diff --git a/tools/moveconfig.py b/tools/moveconfig.py
index 8d059be039d..4ad892e2c0c 100755
--- a/tools/moveconfig.py
+++ b/tools/moveconfig.py
@@ -1339,6 +1339,54 @@ IMPLY_FLAGS = {
'Allow Kconfig options outside arch/ and /board/ to imply'],
};
+
+def read_database():
+ """Read in the config database
+
+ Returns:
+ tuple:
+ set of all config options seen (each a str)
+ set of all defconfigs seen (each a str)
+ dict of configs for each defconfig:
+ key: defconfig name, e.g. "MPC8548CDS_legacy_defconfig"
+ value: dict:
+ key: CONFIG option
+ value: Value of option
+ dict of defconfigs for each config:
+ key: CONFIG option
+ value: set of boards using that option
+
+ """
+ configs = {}
+
+ # key is defconfig name, value is dict of (CONFIG_xxx, value)
+ config_db = {}
+
+ # Set of all config options we have seen
+ all_configs = set()
+
+ # Set of all defconfigs we have seen
+ all_defconfigs = set()
+
+ defconfig_db = collections.defaultdict(set)
+ with open(CONFIG_DATABASE) as fd:
+ for line in fd.readlines():
+ line = line.rstrip()
+ if not line: # Separator between defconfigs
+ config_db[defconfig] = configs
+ all_defconfigs.add(defconfig)
+ configs = {}
+ elif line[0] == ' ': # CONFIG line
+ config, value = line.strip().split('=', 1)
+ configs[config] = value
+ defconfig_db[config].add(defconfig)
+ all_configs.add(config)
+ else: # New defconfig
+ defconfig = line
+
+ return all_configs, all_defconfigs, config_db, defconfig_db
+
+
def do_imply_config(config_list, add_imply, imply_flags, skip_added,
check_kconfig=True, find_superset=False):
"""Find CONFIG options which imply those in the list
@@ -1385,35 +1433,7 @@ def do_imply_config(config_list, add_imply, imply_flags, skip_added,
if add_imply and add_imply != 'all':
add_imply = add_imply.split(',')
- # key is defconfig name, value is dict of (CONFIG_xxx, value)
- config_db = {}
-
- # Holds a dict containing the set of defconfigs that contain each config
- # key is config, value is set of defconfigs using that config
- defconfig_db = collections.defaultdict(set)
-
- # Set of all config options we have seen
- all_configs = set()
-
- # Set of all defconfigs we have seen
- all_defconfigs = set()
-
- # Read in the database
- configs = {}
- with open(CONFIG_DATABASE) as fd:
- for line in fd.readlines():
- line = line.rstrip()
- if not line: # Separator between defconfigs
- config_db[defconfig] = configs
- all_defconfigs.add(defconfig)
- configs = {}
- elif line[0] == ' ': # CONFIG line
- config, value = line.strip().split('=', 1)
- configs[config] = value
- defconfig_db[config].add(defconfig)
- all_configs.add(config)
- else: # New defconfig
- defconfig = line
+ all_configs, all_defconfigs, config_db, defconfig_db = read_database()
# Work through each target config option in turn, independently
for config in config_list:
--
2.34.1.173.g76aa8bc2d0-goog
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 3/5] moveconfig: Sort the options
2021-12-18 15:09 [PATCH 1/5] moveconfig: Correct operation of the 'imply' feature Simon Glass
2021-12-18 15:09 ` [PATCH 2/5] moveconfig: Read the database in a separate function Simon Glass
@ 2021-12-18 15:09 ` Simon Glass
2022-01-25 15:57 ` Tom Rini
2021-12-18 15:09 ` [PATCH 4/5] moveconfig: Allow adding unit tests Simon Glass
` (2 subsequent siblings)
4 siblings, 1 reply; 10+ messages in thread
From: Simon Glass @ 2021-12-18 15:09 UTC (permalink / raw)
To: U-Boot Mailing List; +Cc: Simon Glass, Trevor Woerner
Put the options in sorted order by their short name so it is easier to
find an option.
Signed-off-by: Simon Glass <sjg@chromium.org>
---
tools/moveconfig.py | 22 ++++++++++++----------
1 file changed, 12 insertions(+), 10 deletions(-)
diff --git a/tools/moveconfig.py b/tools/moveconfig.py
index 4ad892e2c0c..369589727cc 100755
--- a/tools/moveconfig.py
+++ b/tools/moveconfig.py
@@ -1591,26 +1591,28 @@ def main():
help='a file containing a list of defconfigs to move, '
"one per line (for example 'snow_defconfig') "
"or '-' to read from stdin")
- parser.add_option('-i', '--imply', action='store_true', default=False,
- help='find options which imply others')
- parser.add_option('-I', '--imply-flags', type='string', default='',
- help="control the -i option ('help' for help")
- parser.add_option('-n', '--dry-run', action='store_true', default=False,
- help='perform a trial run (show log with no changes)')
parser.add_option('-e', '--exit-on-error', action='store_true',
default=False,
help='exit immediately on any error')
- parser.add_option('-s', '--force-sync', action='store_true', default=False,
- help='force sync by savedefconfig')
- parser.add_option('-S', '--spl', action='store_true', default=False,
- help='parse config options defined for SPL build')
parser.add_option('-H', '--headers-only', dest='cleanup_headers_only',
action='store_true', default=False,
help='only cleanup the headers')
+ parser.add_option('-i', '--imply', action='store_true', default=False,
+ help='find options which imply others')
+ parser.add_option('-I', '--imply-flags', type='string', default='',
+ help="control the -i option ('help' for help")
parser.add_option('-j', '--jobs', type='int', default=cpu_count,
help='the number of jobs to run simultaneously')
+ parser.add_option('-n', '--dry-run', action='store_true', default=False,
+ help='perform a trial run (show log with no changes)')
parser.add_option('-r', '--git-ref', type='string',
help='the git ref to clone for building the autoconf.mk')
+ parser.add_option('-s', '--force-sync', action='store_true', default=False,
+ help='force sync by savedefconfig')
+ parser.add_option('-S', '--spl', action='store_true', default=False,
+ help='parse config options defined for SPL build')
+ parser.add_option('-t', '--test', action='store_true', default=False,
+ help='run unit tests')
parser.add_option('-y', '--yes', action='store_true', default=False,
help="respond 'yes' to any prompts")
parser.add_option('-v', '--verbose', action='store_true', default=False,
--
2.34.1.173.g76aa8bc2d0-goog
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 4/5] moveconfig: Allow adding unit tests
2021-12-18 15:09 [PATCH 1/5] moveconfig: Correct operation of the 'imply' feature Simon Glass
2021-12-18 15:09 ` [PATCH 2/5] moveconfig: Read the database in a separate function Simon Glass
2021-12-18 15:09 ` [PATCH 3/5] moveconfig: Sort the options Simon Glass
@ 2021-12-18 15:09 ` Simon Glass
2022-01-25 15:57 ` Tom Rini
2021-12-18 15:09 ` [PATCH 5/5] moveconfig: Allow querying board configuration Simon Glass
2022-01-25 15:57 ` [PATCH 1/5] moveconfig: Correct operation of the 'imply' feature Tom Rini
4 siblings, 1 reply; 10+ messages in thread
From: Simon Glass @ 2021-12-18 15:09 UTC (permalink / raw)
To: U-Boot Mailing List; +Cc: Simon Glass, Trevor Woerner
Add a -t option to run unit tests in this program. So far, there is none.
Signed-off-by: Simon Glass <sjg@chromium.org>
---
tools/moveconfig.py | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/tools/moveconfig.py b/tools/moveconfig.py
index 369589727cc..71a7736ca63 100755
--- a/tools/moveconfig.py
+++ b/tools/moveconfig.py
@@ -14,6 +14,7 @@ import asteval
import collections
import copy
import difflib
+import doctest
import filecmp
import fnmatch
import glob
@@ -28,6 +29,7 @@ import sys
import tempfile
import threading
import time
+import unittest
from buildman import bsettings
from buildman import kconfiglib
@@ -1621,6 +1623,13 @@ def main():
(options, configs) = parser.parse_args()
+ if options.test:
+ sys.argv = [sys.argv[0]]
+ fail, count = doctest.testmod()
+ if fail:
+ return 1
+ unittest.main()
+
if len(configs) == 0 and not any((options.force_sync, options.build_db,
options.imply)):
parser.print_usage()
--
2.34.1.173.g76aa8bc2d0-goog
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 5/5] moveconfig: Allow querying board configuration
2021-12-18 15:09 [PATCH 1/5] moveconfig: Correct operation of the 'imply' feature Simon Glass
` (2 preceding siblings ...)
2021-12-18 15:09 ` [PATCH 4/5] moveconfig: Allow adding unit tests Simon Glass
@ 2021-12-18 15:09 ` Simon Glass
2022-01-25 15:57 ` Tom Rini
2022-01-25 15:57 ` [PATCH 1/5] moveconfig: Correct operation of the 'imply' feature Tom Rini
4 siblings, 1 reply; 10+ messages in thread
From: Simon Glass @ 2021-12-18 15:09 UTC (permalink / raw)
To: U-Boot Mailing List; +Cc: Simon Glass, Trevor Woerner
It is useful to be able to find out which boards define a particular
option, or combination of options. This is not as easy as grepping the
defconfig files since many options are implied by others.
Add a -f option to the moveconfig tool to permit this. Update the
documentation to cover this, including a better title for the doc page.
Signed-off-by: Simon Glass <sjg@chromium.org>
---
doc/develop/moveconfig.rst | 25 ++++++++++-
tools/moveconfig.py | 86 ++++++++++++++++++++++++++++++++++++--
2 files changed, 105 insertions(+), 6 deletions(-)
diff --git a/doc/develop/moveconfig.rst b/doc/develop/moveconfig.rst
index dcd4d927e40..2f53ea52b71 100644
--- a/doc/develop/moveconfig.rst
+++ b/doc/develop/moveconfig.rst
@@ -1,7 +1,7 @@
.. SPDX-License-Identifier: GPL-2.0+
-moveconfig
-==========
+moveconfig - Migrating and querying CONFIG options
+==================================================
Since Kconfig was introduced to U-Boot, we have worked on moving
config options from headers to Kconfig (defconfig).
@@ -129,6 +129,24 @@ To process CONFIG_CMD_FPGAD only for a subset of configs based on path match::
./tools/moveconfig.py -Cy CONFIG_CMD_FPGAD -d -
+Finding boards with particular CONFIG combinations
+--------------------------------------------------
+
+You can use `moveconfig.py` to figure out which boards have a CONFIG enabled, or
+which do not. To use it, first build a database::
+
+ ./tools/moveconfig.py -b
+
+Then you can run queries using the `-f` flag followed by a list of CONFIG terms.
+Each term is CONFIG name, with or without a tilde (~) prefix. The tool searches
+for boards which match the CONFIG name, or do not match if tilde is used. For
+example, to find boards which enabled CONFIG_SCSI but not CONFIG_BLK::
+
+ tools/moveconfig.py -f SCSI ~BLK
+ 3 matches
+ pg_wcom_seli8_defconfig highbank_defconfig pg_wcom_expu1_defconfig
+
+
Finding implied CONFIGs
-----------------------
@@ -235,6 +253,9 @@ Available options
Specify a file containing a list of defconfigs to move. The defconfig
files can be given with shell-style wildcards. Use '-' to read from stdin.
+ -f, --find
+ Find boards with a given config combination
+
-n, --dry-run
Perform a trial run that does not make any changes. It is useful to
see what is going to happen before one actually runs it.
diff --git a/tools/moveconfig.py b/tools/moveconfig.py
index 71a7736ca63..a86c07caa6e 100755
--- a/tools/moveconfig.py
+++ b/tools/moveconfig.py
@@ -1569,6 +1569,79 @@ def do_imply_config(config_list, add_imply, imply_flags, skip_added,
add_imply_rule(config[CONFIG_LEN:], fname, linenum)
+def do_find_config(config_list):
+ """Find boards with a given combination of CONFIGs
+
+ Params:
+ config_list: List of CONFIG options to check (each a string consisting
+ of a config option, with or without a CONFIG_ prefix. If an option
+ is preceded by a tilde (~) then it must be false, otherwise it must
+ be true)
+ """
+ all_configs, all_defconfigs, config_db, defconfig_db = read_database()
+
+ # Get the whitelist
+ with open('scripts/config_whitelist.txt') as inf:
+ adhoc_configs = set(inf.read().splitlines())
+
+ # Start with all defconfigs
+ out = all_defconfigs
+
+ # Work through each config in turn
+ adhoc = []
+ for item in config_list:
+ # Get the real config name and whether we want this config or not
+ cfg = item
+ want = True
+ if cfg[0] == '~':
+ want = False
+ cfg = cfg[1:]
+
+ if cfg in adhoc_configs:
+ adhoc.append(cfg)
+ continue
+
+ # Search everything that is still in the running. If it has a config
+ # that we want, or doesn't have one that we don't, add it into the
+ # running for the next stage
+ in_list = out
+ out = set()
+ for defc in in_list:
+ has_cfg = cfg in config_db[defc]
+ if has_cfg == want:
+ out.add(defc)
+ if adhoc:
+ print(f"Error: Not in Kconfig: %s" % ' '.join(adhoc))
+ else:
+ print(f'{len(out)} matches')
+ print(' '.join(out))
+
+
+def prefix_config(cfg):
+ """Prefix a config with CONFIG_ if needed
+
+ This handles ~ operator, which indicates that the CONFIG should be disabled
+
+ >>> prefix_config('FRED')
+ 'CONFIG_FRED'
+ >>> prefix_config('CONFIG_FRED')
+ 'CONFIG_FRED'
+ >>> prefix_config('~FRED')
+ '~CONFIG_FRED'
+ >>> prefix_config('~CONFIG_FRED')
+ '~CONFIG_FRED'
+ >>> prefix_config('A123')
+ 'CONFIG_A123'
+ """
+ op = ''
+ if cfg[0] == '~':
+ op = cfg[0]
+ cfg = cfg[1:]
+ if not cfg.startswith('CONFIG_'):
+ cfg = 'CONFIG_' + cfg
+ return op + cfg
+
+
def main():
try:
cpu_count = multiprocessing.cpu_count()
@@ -1596,6 +1669,8 @@ def main():
parser.add_option('-e', '--exit-on-error', action='store_true',
default=False,
help='exit immediately on any error')
+ parser.add_option('-f', '--find', action='store_true', default=False,
+ help='Find boards with a given config combination')
parser.add_option('-H', '--headers-only', dest='cleanup_headers_only',
action='store_true', default=False,
help='only cleanup the headers')
@@ -1631,13 +1706,12 @@ def main():
unittest.main()
if len(configs) == 0 and not any((options.force_sync, options.build_db,
- options.imply)):
+ options.imply, options.find)):
parser.print_usage()
sys.exit(1)
# prefix the option name with CONFIG_ if missing
- configs = [ config if config.startswith('CONFIG_') else 'CONFIG_' + config
- for config in configs ]
+ configs = [prefix_config(cfg) for cfg in configs]
check_top_directory()
@@ -1663,6 +1737,10 @@ def main():
options.skip_added)
return
+ if options.find:
+ do_find_config(configs)
+ return
+
config_db = {}
db_queue = queue.Queue()
t = DatabaseThread(config_db, db_queue)
@@ -1705,4 +1783,4 @@ def main():
fd.write('\n')
if __name__ == '__main__':
- main()
+ sys.exit(main())
--
2.34.1.173.g76aa8bc2d0-goog
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 1/5] moveconfig: Correct operation of the 'imply' feature
2021-12-18 15:09 [PATCH 1/5] moveconfig: Correct operation of the 'imply' feature Simon Glass
` (3 preceding siblings ...)
2021-12-18 15:09 ` [PATCH 5/5] moveconfig: Allow querying board configuration Simon Glass
@ 2022-01-25 15:57 ` Tom Rini
4 siblings, 0 replies; 10+ messages in thread
From: Tom Rini @ 2022-01-25 15:57 UTC (permalink / raw)
To: Simon Glass; +Cc: U-Boot Mailing List, Trevor Woerner
[-- Attachment #1: Type: text/plain, Size: 279 bytes --]
On Sat, Dec 18, 2021 at 08:09:42AM -0700, Simon Glass wrote:
> This doesn't work anymore, since the Kconfig update. The script has no
> tests so we did not notice. Fix it.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
Applied to u-boot/master, thanks!
--
Tom
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 659 bytes --]
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/5] moveconfig: Read the database in a separate function
2021-12-18 15:09 ` [PATCH 2/5] moveconfig: Read the database in a separate function Simon Glass
@ 2022-01-25 15:57 ` Tom Rini
0 siblings, 0 replies; 10+ messages in thread
From: Tom Rini @ 2022-01-25 15:57 UTC (permalink / raw)
To: Simon Glass; +Cc: U-Boot Mailing List, Trevor Woerner
[-- Attachment #1: Type: text/plain, Size: 233 bytes --]
On Sat, Dec 18, 2021 at 08:09:43AM -0700, Simon Glass wrote:
> Move this code out into a function so it can be used elsewhere.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
Applied to u-boot/master, thanks!
--
Tom
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 659 bytes --]
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 3/5] moveconfig: Sort the options
2021-12-18 15:09 ` [PATCH 3/5] moveconfig: Sort the options Simon Glass
@ 2022-01-25 15:57 ` Tom Rini
0 siblings, 0 replies; 10+ messages in thread
From: Tom Rini @ 2022-01-25 15:57 UTC (permalink / raw)
To: Simon Glass; +Cc: U-Boot Mailing List, Trevor Woerner
[-- Attachment #1: Type: text/plain, Size: 259 bytes --]
On Sat, Dec 18, 2021 at 08:09:44AM -0700, Simon Glass wrote:
> Put the options in sorted order by their short name so it is easier to
> find an option.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
Applied to u-boot/master, thanks!
--
Tom
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 659 bytes --]
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 4/5] moveconfig: Allow adding unit tests
2021-12-18 15:09 ` [PATCH 4/5] moveconfig: Allow adding unit tests Simon Glass
@ 2022-01-25 15:57 ` Tom Rini
0 siblings, 0 replies; 10+ messages in thread
From: Tom Rini @ 2022-01-25 15:57 UTC (permalink / raw)
To: Simon Glass; +Cc: U-Boot Mailing List, Trevor Woerner
[-- Attachment #1: Type: text/plain, Size: 243 bytes --]
On Sat, Dec 18, 2021 at 08:09:45AM -0700, Simon Glass wrote:
> Add a -t option to run unit tests in this program. So far, there is none.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
Applied to u-boot/master, thanks!
--
Tom
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 659 bytes --]
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 5/5] moveconfig: Allow querying board configuration
2021-12-18 15:09 ` [PATCH 5/5] moveconfig: Allow querying board configuration Simon Glass
@ 2022-01-25 15:57 ` Tom Rini
0 siblings, 0 replies; 10+ messages in thread
From: Tom Rini @ 2022-01-25 15:57 UTC (permalink / raw)
To: Simon Glass; +Cc: U-Boot Mailing List, Trevor Woerner
[-- Attachment #1: Type: text/plain, Size: 521 bytes --]
On Sat, Dec 18, 2021 at 08:09:46AM -0700, Simon Glass wrote:
> It is useful to be able to find out which boards define a particular
> option, or combination of options. This is not as easy as grepping the
> defconfig files since many options are implied by others.
>
> Add a -f option to the moveconfig tool to permit this. Update the
> documentation to cover this, including a better title for the doc page.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
Applied to u-boot/master, thanks!
--
Tom
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 659 bytes --]
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2022-01-25 15:58 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-12-18 15:09 [PATCH 1/5] moveconfig: Correct operation of the 'imply' feature Simon Glass
2021-12-18 15:09 ` [PATCH 2/5] moveconfig: Read the database in a separate function Simon Glass
2022-01-25 15:57 ` Tom Rini
2021-12-18 15:09 ` [PATCH 3/5] moveconfig: Sort the options Simon Glass
2022-01-25 15:57 ` Tom Rini
2021-12-18 15:09 ` [PATCH 4/5] moveconfig: Allow adding unit tests Simon Glass
2022-01-25 15:57 ` Tom Rini
2021-12-18 15:09 ` [PATCH 5/5] moveconfig: Allow querying board configuration Simon Glass
2022-01-25 15:57 ` Tom Rini
2022-01-25 15:57 ` [PATCH 1/5] moveconfig: Correct operation of the 'imply' feature Tom Rini
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).