diff options
author | Simon Glass <sjg@chromium.org> | 2022-02-08 11:49:58 -0700 |
---|---|---|
committer | Simon Glass <sjg@chromium.org> | 2022-02-22 10:05:44 -0700 |
commit | 5c044ff52362f379b5a9296e724df9546ae98b34 (patch) | |
tree | db6ab3b85941ef4044f74d8b679cfc9ba88e0968 /tools | |
parent | 523cde0637f264380eeaaf0cfa82fdbbd99a261f (diff) | |
download | u-boot-5c044ff52362f379b5a9296e724df9546ae98b34.tar.gz u-boot-5c044ff52362f379b5a9296e724df9546ae98b34.tar.bz2 u-boot-5c044ff52362f379b5a9296e724df9546ae98b34.zip |
binman: Support a list of strings with the mkimage etype
At present the 'args' property of the mkimage entry type is a string. This
makes it difficult to include CONFIG options in that property. In
particular, this does not work:
args = "-n CONFIG_SYS_SOC -E"
since the preprocessor does not operate within strings, nor does this:
args = "-n" CONFIG_SYS_SOC" "-E"
since the device tree compiler does not understand string concatenation.
With this new feature, we can do:
args = "-n", CONFIG_SYS_SOC, "-E";
Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/binman/elf_test.py | 6 | ||||
-rw-r--r-- | tools/binman/entries.rst | 11 | ||||
-rw-r--r-- | tools/binman/etype/mkimage.py | 13 |
3 files changed, 26 insertions, 4 deletions
diff --git a/tools/binman/elf_test.py b/tools/binman/elf_test.py index f92352d54f..a67915bda6 100644 --- a/tools/binman/elf_test.py +++ b/tools/binman/elf_test.py @@ -263,7 +263,7 @@ class TestElf(unittest.TestCase): if not elf.ELF_TOOLS: self.skipTest('Python elftools not available') fname = self.ElfTestFile('embed_data') - segments, entry = elf.read_segments(tools.ReadFile(fname)) + segments, entry = elf.read_segments(tools.read_file(fname)) def test_read_segments_fail(self): """Test for read_segments() without elftools""" @@ -272,7 +272,7 @@ class TestElf(unittest.TestCase): elf.ELF_TOOLS = False fname = self.ElfTestFile('embed_data') with self.assertRaises(ValueError) as e: - elf.read_segments(tools.ReadFile(fname)) + elf.read_segments(tools.read_file(fname)) self.assertIn('Python elftools package is not available', str(e.exception)) finally: @@ -282,7 +282,7 @@ class TestElf(unittest.TestCase): """Test for read_segments() with an invalid ELF file""" fname = self.ElfTestFile('embed_data') with self.assertRaises(ValueError) as e: - elf.read_segments(tools.GetBytes(100, 100)) + elf.read_segments(tools.get_bytes(100, 100)) self.assertIn('Magic number does not match', str(e.exception)) diff --git a/tools/binman/entries.rst b/tools/binman/entries.rst index 88230a69d4..c4aa5fffe8 100644 --- a/tools/binman/entries.rst +++ b/tools/binman/entries.rst @@ -931,6 +931,17 @@ This calls mkimage to create an imximage with u-boot-spl.bin as the input file. The output from mkimage then becomes part of the image produced by binman. +To use CONFIG options in the arguments, use a string list instead, as in +this example which also produces four arguments:: + + mkimage { + args = "-n", CONFIG_SYS_SOC, "-T imximage"; + + u-boot-spl { + }; + }; + + Entry: opensbi: RISC-V OpenSBI fw_dynamic blob diff --git a/tools/binman/etype/mkimage.py b/tools/binman/etype/mkimage.py index baa16f36f3..ba4fb25de8 100644 --- a/tools/binman/etype/mkimage.py +++ b/tools/binman/etype/mkimage.py @@ -31,10 +31,21 @@ class Entry_mkimage(Entry): This calls mkimage to create an imximage with u-boot-spl.bin as the input file. The output from mkimage then becomes part of the image produced by binman. + + To use CONFIG options in the arguments, use a string list instead, as in + this example which also produces four arguments:: + + mkimage { + args = "-n", CONFIG_SYS_SOC, "-T imximage"; + + u-boot-spl { + }; + }; + """ def __init__(self, section, etype, node): super().__init__(section, etype, node) - self._args = fdt_util.GetString(self._node, 'args').split(' ') + self._args = fdt_util.GetArgs(self._node, 'args') self._mkimage_entries = OrderedDict() self.align_default = None self.ReadEntries() |