summaryrefslogtreecommitdiff
path: root/doc/develop
diff options
context:
space:
mode:
authorTom Rini <[email protected]>2022-01-25 08:01:43 -0500
committerTom Rini <[email protected]>2022-01-25 08:01:43 -0500
commit6146cd62aedc4849fec66f10ab0aa57f1dc64b8e (patch)
tree7b4ea9a0c4251507b988a0f4d1584c3cb8952394 /doc/develop
parent21a1439d986a889cefbc2ed785c3f592fc9266de (diff)
parent54c5c2b8fee2f64d135349bc9764d068b647e4e0 (diff)
Merge branch '2022-01-24-assorted-updates'
- A number of cleanups to Python code based on running pylint - Integrate changes so that we can run "make pylint" and compare the results to a current baseline. Keep this as a manual check for now. - Improve functionality of moveconfig.py - pci: iproc: Set all 24 bits of PCI class code
Diffstat (limited to 'doc/develop')
-rw-r--r--doc/develop/index.rst8
-rw-r--r--doc/develop/moveconfig.rst25
-rw-r--r--doc/develop/python_cq.rst80
3 files changed, 111 insertions, 2 deletions
diff --git a/doc/develop/index.rst b/doc/develop/index.rst
index c84b10ea887..97148875ef4 100644
--- a/doc/develop/index.rst
+++ b/doc/develop/index.rst
@@ -62,3 +62,11 @@ Refactoring
checkpatch
coccinelle
moveconfig
+
+Code quality
+------------
+
+.. toctree::
+ :maxdepth: 1
+
+ python_cq
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/doc/develop/python_cq.rst b/doc/develop/python_cq.rst
new file mode 100644
index 00000000000..3f99f1d9c0b
--- /dev/null
+++ b/doc/develop/python_cq.rst
@@ -0,0 +1,80 @@
+.. SPDX-License-Identifier: GPL-2.0+
+
+Python code quality
+===================
+
+U-Boot has about 60k lines of Python code, mainly in the following areas:
+
+- tests
+- pytest hooks
+- patman patch submission tool
+- buildman build / analysis tool
+- dtoc devicetree-to-C tool
+- binman firmware packaging tool
+
+`PEP 8`_ is used for the code style, with the single quote (') used by default for
+strings and double quote for doc strings. All non-trivial functions should be
+commented.
+
+Pylint is used to help check this code and keep a consistent code style. The
+build system tracks the current 'score' of the source code and detects
+regressions in any module.
+
+To run this locally you should use this version of pylint::
+
+ # pylint --version
+ pylint 2.11.1
+ astroid 2.8.6
+ Python 3.8.10 (default, Sep 28 2021, 16:10:42)
+ [GCC 9.3.0]
+
+
+You should be able to select and this install other required tools with::
+
+ pip install pylint==2.11.1
+ pip install -r test/py/requirements.txt
+ pip install asteval pyopenssl
+
+Note that if your distribution is a year or two old, you make need to use `pip3`
+instead.
+
+To configure pylint, make sure it has docparams enabled, e.g. with::
+
+ echo "[MASTER]" >> .pylintrc
+ echo "load-plugins=pylint.extensions.docparams" >> .pylintrc
+
+Once everything is ready, use this to check the code::
+
+ make pylint
+
+This creates a directory called `pylint.out` which contains the pylint output
+for each Python file in U-Boot. It also creates a summary file called
+`pylint.cur` which shows the pylint score for each module::
+
+ _testing 0.83
+ atf_bl31 -6.00
+ atf_fip 0.49
+ binman.cbfs_util 7.70
+ binman.cbfs_util_test 9.19
+ binman.cmdline 7.73
+ binman.control 4.39
+ binman.elf 6.42
+ binman.elf_test 5.41
+ ...
+
+This file is in alphabetical order. The build system compares the score of each
+module to `scripts/pylint.base` (which must also be sorted and have exactly the
+same modules in it) and reports any files where the score has dropped. Use
+pylint to check what is wrong and fix up the code before you send out your
+patches.
+
+New or removed files results in an error which can be resolved by updating the
+`scripts/pylint.base` file to add/remove lines for those files, e.g.::
+
+ meld pylint.cur scripts/pylint.base
+
+If the pylint version is updated in CI, this may result in needing to regenerate
+`scripts/pylint.base`.
+
+
+.. _`PEP 8`: https://www.python.org/dev/peps/pep-0008/