binman: Change how faked blobs are created

At present fake blobs are created but internally an empty blob is used.
Change it to use the contents of the faked file. Also return whether the
blob was faked, in case the caller needs to know that.

Add a TODO to put fake blobs in their own directory.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Alper Nebi Yasak <alpernebiyasak@gmail.com>
This commit is contained in:
Simon Glass 2022-03-05 20:19:03 -07:00
parent ae9a457029
commit 9a0a2e9569
4 changed files with 13 additions and 8 deletions

View file

@ -1500,7 +1500,8 @@ Some ideas:
- Figure out how to make Fdt support changing the node order, so that
Node.AddSubnode() can support adding a node before another, existing node.
Perhaps it should completely regenerate the flat tree?
- Put faked files into a separate subdir and remove them on start-up, to avoid
seeing them as 'real' files on a subsequent run
--
Simon Glass <sjg@chromium.org>

View file

@ -999,15 +999,18 @@ features to produce new behaviours.
fname (str): Filename to check
Returns:
fname (str): Filename of faked file
tuple:
fname (str): Filename of faked file
bool: True if the blob was faked, False if not
"""
if self.allow_fake and not pathlib.Path(fname).is_file():
outfname = tools.get_output_filename(os.path.basename(fname))
with open(outfname, "wb") as out:
out.truncate(1024)
self.faked = True
return outfname
return fname
tout.info(f"Entry '{self._node.path}': Faked file '{outfname}'")
return outfname, True
return fname, False
def CheckFakedBlobs(self, faked_blobs_list):
"""Check if any entries in this section have faked external blobs

View file

@ -41,10 +41,11 @@ class Entry_blob(Entry):
self.external and self.section.GetAllowMissing())
# Allow the file to be missing
if not self._pathname:
self._pathname = self.check_fake_fname(self._filename)
self.SetContents(b'')
self._pathname, faked = self.check_fake_fname(self._filename)
self.missing = True
return True
if not faked:
self.SetContents(b'')
return True
self.ReadBlobContents()
return True

View file

@ -37,7 +37,7 @@ class Entry_blob_ext_list(Entry_blob):
missing = False
pathnames = []
for fname in self._filenames:
fname = self.check_fake_fname(fname)
fname, _ = self.check_fake_fname(fname)
pathname = tools.get_input_filename(
fname, self.external and self.section.GetAllowMissing())
# Allow the file to be missing