summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2022-01-12 23:10:36 +0300
committerTom Rini <trini@konsulko.com>2022-01-13 05:26:59 +0300
commit790ba9fce82bff215cf05513278a7b52312b6b28 (patch)
tree8587c8832b50a6cdba7118649fa2aa66e9b9e939 /tools
parent32d4f106bd806428d756398a83d2b15563b58cf8 (diff)
downloadu-boot-790ba9fce82bff215cf05513278a7b52312b6b28.tar.xz
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>
Diffstat (limited to 'tools')
-rw-r--r--tools/binman/control.py8
-rw-r--r--tools/binman/entry.py20
-rw-r--r--tools/binman/etype/blob.py8
-rw-r--r--tools/binman/ftest.py1
4 files changed, 26 insertions, 11 deletions
diff --git a/tools/binman/control.py b/tools/binman/control.py
index 4b3ce23fb4..f4c1fd0156 100644
--- a/tools/binman/control.py
+++ b/tools/binman/control.py
@@ -577,9 +577,11 @@ def ProcessImage(image, update_fdt, write_map, get_contents=True,
faked_list = []
image.CheckFakedBlobs(faked_list)
if faked_list:
- tout.Warning("Image '%s:%s' has faked external blobs and is non-functional: %s" %
- (image.name, image.image_name,
- ' '.join([e.GetDefaultFilename() for e in faked_list])))
+ tout.Warning(
+ "Image '%s:%s' has faked external blobs and is non-functional: %s" %
+ (image.name, image.image_name,
+ ' '.join([os.path.basename(e.GetDefaultFilename())
+ for e in faked_list])))
return bool(missing_list) or bool(faked_list)
diff --git a/tools/binman/entry.py b/tools/binman/entry.py
index 54cc3726b9..bac90bbbcd 100644
--- a/tools/binman/entry.py
+++ b/tools/binman/entry.py
@@ -7,6 +7,7 @@
from collections import namedtuple
import importlib
import os
+import pathlib
import sys
from dtoc import fdt_util
@@ -972,6 +973,25 @@ features to produce new behaviours.
if self.missing:
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):
"""Check if any entries in this section have faked external blobs
diff --git a/tools/binman/etype/blob.py b/tools/binman/etype/blob.py
index 65ebb2ecf4..59728f368e 100644
--- a/tools/binman/etype/blob.py
+++ b/tools/binman/etype/blob.py
@@ -5,8 +5,6 @@
# Entry-type module for blobs, which are binary objects read from files
#
-import pathlib
-
from binman.entry import Entry
from binman import state
from dtoc import fdt_util
@@ -38,16 +36,12 @@ class Entry_blob(Entry):
self._filename = fdt_util.GetString(self._node, 'filename', self.etype)
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._pathname = tools.GetInputFilename(self._filename,
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.missing = True
return True
diff --git a/tools/binman/ftest.py b/tools/binman/ftest.py
index a9d9160967..f4ff7b6583 100644
--- a/tools/binman/ftest.py
+++ b/tools/binman/ftest.py
@@ -4964,7 +4964,6 @@ fdt fdtmap Extract the devicetree blob from the fdtmap
self.assertRegex(
err,
"Image '.*' has faked external blobs and is non-functional: .*")
- os.remove('binman_faking_test_blob')
if __name__ == "__main__":