[PATCH v3 3/6] binman: rework dropping absent entries from packaged image
Yannic Moog
Y.Moog at phytec.de
Thu Jul 10 07:53:22 CEST 2025
Hi Tim
Am Mittwoch, dem 09.07.2025 um 10:50 -0700 schrieb Tim Harvey:
> On Fri, Jun 13, 2025 at 5:04 AM Yannic Moog <y.moog at phytec.de> wrote:
> >
> > When blobs are absent and are marked as optional, they can be safely
> > dropped from the binman tree. Use the drop_absent function for that.
> > Rename drop_absent to drop_absent_optional as we do not want to drop any
> > entries that are absent; they should be reported by binman as errors
> > when they are missing.
> > We also reorder the processing of the image the following:
> > - We call the CheckForProblems function before the image is built.
> > - We drop entries after we checked for problems with the image.
> > This is okay because CheckForProblems does not look at the file we have
> > written but rather queries the data structure (image) built with binman.
> > This also allows us to get all error and warning messages that we want
> > to report while avoiding putting missing optional entries in the final
> > image.
> > As only the blobs are dropped, the sections still remain in the
> > assembled image. Thus add them to the expected test case checks where
> > necessary.
> >
> > In addition, a rework of testPackTeeOsOptional test case is necessary.
> >
> > The test did not really do what it was supposed to. The description said
> > that optional binary is tested, but the binary is not marked as
> > optional. Further, the tee.elf file, when included in the image
> > properly, also shows up in the image data. This must be added as well.
> >
> > As there is no global variable for the elf data, set the pathname to the
> > elf file that was created when setting up the test suite.
> > For the test case get the filename and read the contents, comparing them
> > to the contents of the created binman image.
> >
> > Signed-off-by: Yannic Moog <y.moog at phytec.de>
> > ---
> > tools/binman/control.py | 5 ++---
> > tools/binman/entry.py | 6 +++++-
> > tools/binman/etype/cbfs.py | 3 ++-
> > tools/binman/etype/mkimage.py | 2 +-
> > tools/binman/etype/section.py | 16 ++++++++++++----
> > tools/binman/ftest.py | 14 ++++++++------
> > tools/binman/image.py | 2 ++
> > 7 files changed, 32 insertions(+), 16 deletions(-)
> >
> >
[...]
> > diff --git a/tools/binman/etype/section.py b/tools/binman/etype/section.py
> > index
> > 1d50bb477534702019502d08f8648d4c9a367c0f..03c4f7c6ec74c6fa75c9362e2fecdb0e6a
> > b568cb 100644
> > --- a/tools/binman/etype/section.py
> > +++ b/tools/binman/etype/section.py
> > @@ -537,7 +537,7 @@ class Entry_section(Entry):
> > for entry in self._entries.values():
> > entry.WriteMap(fd, indent + 1)
> >
> > - def GetEntries(self):
> > + def GetEntries(self) -> dict[str, Entry]:
> >
the problem is that I forgot to "packport" typing support for older python
versions < 3.9.
Thank you for bringing this to my attention.
>
> Hi Yannic,
>
> This series just got merged to master and I noticed it failing
> building imx8mm_venice on my Ubuntu 20.04 dev host which has Python
> 3.8.10.
>
> make imx8mm_venice_defconfig
> make
> ...
> BINMAN .binman_stamp
> binman: 'type' object is not subscriptable
> make: *** [Makefile:1336: .binman_stamp] Error 1
>
> Do you know what the minimum version of python required is or what
> would need to be changed here to support the previous version of
> python that worked?
Absolute minimum version is 3.5. That is when typing got introduced.
Quoting from binman pyproject.toml:
> description = "Binman firmware-packaging tool"
> readme = "README.rst"
> requires-python = ">=3.7"
>
But there has been a patch that tried to make binman work for 3.6.
de65b122a2534 ("tools: Fall back to importlib_resources on Python 3.6")
Should I create a solution for python >= 3.5 or >= 3.7?
Yannic
>
> Best Regards,
>
> Tim
More information about the U-Boot
mailing list