binman: Generate preload header and sign data only once

To optimize preload generation, generate the header and signatures only
after all data has been collected in ProcessContentsUpdate(). This
avoids signing the data multiple times.

Since header_size is known upfront (from __init__), create a placeholder
in `ObtainContents()` to avoid an extra packing pass when
ProcessContentsUpdate() detects a size change.

This reduces unnecessary repacking and signing operations.

Signed-off-by: Paul HENRYS <paul.henrys_ext@softathome.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Paul HENRYS
2026-04-17 10:30:48 +02:00
committed by Tom Rini
parent 56905deb20
commit 5006121b44

View File

@@ -152,14 +152,11 @@ class Entry_pre_load(Entry_collection):
return data + pad
def ObtainContents(self):
"""Obtain a placeholder for the header contents"""
# wait that the image is available
self.image = self.GetContents(False)
if self.image is None:
return False
self.SetContents(self._CreateHeader())
"""Create a placeholder for the header"""
self.SetContents(tools.get_bytes(0, self.header_size))
return True
def ProcessContents(self):
self.image = self.GetContents(True)
data = self._CreateHeader()
return self.ProcessContentsUpdate(data)