mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-28 15:41:40 +00:00
binman: Write fake blobs to the output directory
At present binman writes fake blobs to the current directory. This is not very helpful, since the files serve no useful purpose once binman has finished. They clutter up the source directory and affect future runs, since the files in the current directory are often used in preference to those in the board directory. To avoid these problems, write them to the output directory instead. Move the file-creation code to the Entry base class, so it can be used by any entry type that needs it. This is required since some entry types, such as Entry_blob_ext_list, are not subclasses of Entry_blob. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
32d4f106bd
commit
790ba9fce8
4 changed files with 26 additions and 11 deletions
|
@ -577,9 +577,11 @@ def ProcessImage(image, update_fdt, write_map, get_contents=True,
|
||||||
faked_list = []
|
faked_list = []
|
||||||
image.CheckFakedBlobs(faked_list)
|
image.CheckFakedBlobs(faked_list)
|
||||||
if faked_list:
|
if faked_list:
|
||||||
tout.Warning("Image '%s:%s' has faked external blobs and is non-functional: %s" %
|
tout.Warning(
|
||||||
(image.name, image.image_name,
|
"Image '%s:%s' has faked external blobs and is non-functional: %s" %
|
||||||
' '.join([e.GetDefaultFilename() for e in faked_list])))
|
(image.name, image.image_name,
|
||||||
|
' '.join([os.path.basename(e.GetDefaultFilename())
|
||||||
|
for e in faked_list])))
|
||||||
return bool(missing_list) or bool(faked_list)
|
return bool(missing_list) or bool(faked_list)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
import importlib
|
import importlib
|
||||||
import os
|
import os
|
||||||
|
import pathlib
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
from dtoc import fdt_util
|
from dtoc import fdt_util
|
||||||
|
@ -972,6 +973,25 @@ features to produce new behaviours.
|
||||||
if self.missing:
|
if self.missing:
|
||||||
missing_list.append(self)
|
missing_list.append(self)
|
||||||
|
|
||||||
|
def check_fake_fname(self, fname):
|
||||||
|
"""If the file is missing and the entry allows fake blobs, fake it
|
||||||
|
|
||||||
|
Sets self.faked to True if faked
|
||||||
|
|
||||||
|
Args:
|
||||||
|
fname (str): Filename to check
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
fname (str): Filename of faked file
|
||||||
|
"""
|
||||||
|
if self.allow_fake and not pathlib.Path(fname).is_file():
|
||||||
|
outfname = tools.GetOutputFilename(os.path.basename(fname))
|
||||||
|
with open(outfname, "wb") as out:
|
||||||
|
out.truncate(1024)
|
||||||
|
self.faked = True
|
||||||
|
return outfname
|
||||||
|
return fname
|
||||||
|
|
||||||
def CheckFakedBlobs(self, faked_blobs_list):
|
def CheckFakedBlobs(self, faked_blobs_list):
|
||||||
"""Check if any entries in this section have faked external blobs
|
"""Check if any entries in this section have faked external blobs
|
||||||
|
|
||||||
|
|
|
@ -5,8 +5,6 @@
|
||||||
# Entry-type module for blobs, which are binary objects read from files
|
# Entry-type module for blobs, which are binary objects read from files
|
||||||
#
|
#
|
||||||
|
|
||||||
import pathlib
|
|
||||||
|
|
||||||
from binman.entry import Entry
|
from binman.entry import Entry
|
||||||
from binman import state
|
from binman import state
|
||||||
from dtoc import fdt_util
|
from dtoc import fdt_util
|
||||||
|
@ -38,16 +36,12 @@ class Entry_blob(Entry):
|
||||||
self._filename = fdt_util.GetString(self._node, 'filename', self.etype)
|
self._filename = fdt_util.GetString(self._node, 'filename', self.etype)
|
||||||
|
|
||||||
def ObtainContents(self):
|
def ObtainContents(self):
|
||||||
if self.allow_fake and not pathlib.Path(self._filename).is_file():
|
|
||||||
with open(self._filename, "wb") as out:
|
|
||||||
out.truncate(1024)
|
|
||||||
self.faked = True
|
|
||||||
|
|
||||||
self._filename = self.GetDefaultFilename()
|
self._filename = self.GetDefaultFilename()
|
||||||
self._pathname = tools.GetInputFilename(self._filename,
|
self._pathname = tools.GetInputFilename(self._filename,
|
||||||
self.external and self.section.GetAllowMissing())
|
self.external and self.section.GetAllowMissing())
|
||||||
# Allow the file to be missing
|
# Allow the file to be missing
|
||||||
if not self._pathname:
|
if not self._pathname:
|
||||||
|
self._pathname = self.check_fake_fname(self._filename)
|
||||||
self.SetContents(b'')
|
self.SetContents(b'')
|
||||||
self.missing = True
|
self.missing = True
|
||||||
return True
|
return True
|
||||||
|
|
|
@ -4964,7 +4964,6 @@ fdt fdtmap Extract the devicetree blob from the fdtmap
|
||||||
self.assertRegex(
|
self.assertRegex(
|
||||||
err,
|
err,
|
||||||
"Image '.*' has faked external blobs and is non-functional: .*")
|
"Image '.*' has faked external blobs and is non-functional: .*")
|
||||||
os.remove('binman_faking_test_blob')
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
Loading…
Reference in a new issue