On Fri, 26 Aug 2022 at 09:37, Quentin Schulz <foss+ub...@0leil.net> wrote: > > From: Quentin Schulz <quentin.sch...@theobroma-systems.com> > > mkimage entry currently creates a file whose name is derived from the > section name containing said entry. > > Let's allow the user to define a filename for the mkimage-generated > binary by using the 'filename' DT property. > > Cc: Quentin Schulz <foss+ub...@0leil.net> > Signed-off-by: Quentin Schulz <quentin.sch...@theobroma-systems.com> > --- > > v5: > - updated unit test filename, > - removed _testing section in unit test, > - removed -n arg in unit test, > - removed size property in binman node, > > v4: > - added binman test, > - fixed >80 chars-long line, > > added in v3 > > tools/binman/etype/mkimage.py | 11 ++++++++--- > tools/binman/ftest.py | 7 +++++++ > tools/binman/test/242_mkimage_filename.dts | 18 ++++++++++++++++++ > 3 files changed, 33 insertions(+), 3 deletions(-) > create mode 100644 tools/binman/test/242_mkimage_filename.dts
Reviewed-by: Simon Glass <s...@chromium.org> nit below > > diff --git a/tools/binman/etype/mkimage.py b/tools/binman/etype/mkimage.py > index 5f4bc6fa3c..c2288c48ee 100644 > --- a/tools/binman/etype/mkimage.py > +++ b/tools/binman/etype/mkimage.py > @@ -21,11 +21,13 @@ class Entry_mkimage(Entry): > - multiple-data-files: boolean to tell binman to pass all files as > datafiles to mkimage instead of creating a temporary file the > result > of datafiles concatenation > + - filename: filename of output binary generated by mkimage > > The data passed to mkimage via the -d flag is collected from subnodes of > the > mkimage node, e.g.:: > > mkimage { > + filename = "imximage.bin"; > args = "-n test -T imximage"; > > u-boot-spl { > @@ -38,8 +40,9 @@ class Entry_mkimage(Entry): > mkimage -d <data_file> -n test -T imximage <output_file> > > The output from mkimage then becomes part of the image produced by > - binman. If you need to put multiple things in the data file, you can use > - a section, or just multiple subnodes like this:: > + binman but also is written into `imximage.bin` file. If you need to put > + multiple things in the data file, you can use a section, or just multiple > + subnodes like this:: > > mkimage { > args = "-n test -T imximage"; > @@ -121,6 +124,7 @@ class Entry_mkimage(Entry): > self._multiple_data_files = fdt_util.GetBool(self._node, > 'multiple-data-files') > self._mkimage_entries = OrderedDict() > self._imagename = None > + self._filename = fdt_util.GetString(self._node, 'filename') > self.align_default = None > > def ReadNode(self): > @@ -164,7 +168,8 @@ class Entry_mkimage(Entry): > [self._imagename], 'mkimage-n', 1024) > if image_data is None: > return False > - output_fname = tools.get_output_filename('mkimage-out.%s' % uniq) > + outfile = self._filename if self._filename else 'mkimage-out.%s' % > uniq > + output_fname = tools.get_output_filename(outfile) > > args = ['-d', input_fname] > if self._data_to_imagename: > diff --git a/tools/binman/ftest.py b/tools/binman/ftest.py > index 091692ef93..da0c7299ac 100644 > --- a/tools/binman/ftest.py > +++ b/tools/binman/ftest.py > @@ -5834,6 +5834,13 @@ fdt fdtmap Extract the > devicetree blob from the fdtmap > expect += U_BOOT_SPL_DATA > self.assertEqual(expect, data[-len(expect):]) > > + def testMkimageFilename(self): > + """Test using mkimage to build a binary with a filename""" > + retcode = self._DoTestFile('242_mkimage_filename.dts') > + self.assertEqual(0, retcode) > + fname = tools.get_output_filename('mkimage-test.bin') > + self.assertTrue(os.path.exists(fname)) > + Please put the new test at the end. > def testCompressDtbPrependInvalid(self): > """Test that invalid header is detected""" > with self.assertRaises(ValueError) as e: > diff --git a/tools/binman/test/242_mkimage_filename.dts > b/tools/binman/test/242_mkimage_filename.dts > new file mode 100644 > index 0000000000..4483790ae8 > --- /dev/null > +++ b/tools/binman/test/242_mkimage_filename.dts > @@ -0,0 +1,18 @@ > +// SPDX-License-Identifier: GPL-2.0+ > + > +/dts-v1/; > + > +/ { > + #address-cells = <1>; > + #size-cells = <1>; > + > + binman { > + mkimage { > + filename = "mkimage-test.bin"; > + args = "-T script"; > + > + u-boot-spl { > + }; > + }; > + }; > +}; > -- > 2.37.2 > Regards, Simon