public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [PATCH v2 1/2] binman: Renumber the fake blob dts
@ 2022-01-12 20:10 Simon Glass
  2022-01-12 20:10 ` [PATCH v2 2/2] binman: Write fake blobs to the output directory Simon Glass
  2022-01-13 12:53 ` [PATCH v2 1/2] binman: Renumber the fake blob dts Tom Rini
  0 siblings, 2 replies; 4+ messages in thread
From: Simon Glass @ 2022-01-12 20:10 UTC (permalink / raw)
  To: U-Boot Mailing List; +Cc: Tom Rini, Simon Glass

Use a unique number instead of the current 203, which is used by 203_fip
as well. Reformat the code to avoid a long line.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

Changes in v2:
- Add new patch to renumber the fake blob dts

 tools/binman/ftest.py                         | 22 ++++++++++---------
 .../{203_fake_blob.dts => 217_fake_blob.dts}  |  0
 2 files changed, 12 insertions(+), 10 deletions(-)
 rename tools/binman/test/{203_fake_blob.dts => 217_fake_blob.dts} (100%)

diff --git a/tools/binman/ftest.py b/tools/binman/ftest.py
index a9b7880f362..a9d9160967c 100644
--- a/tools/binman/ftest.py
+++ b/tools/binman/ftest.py
@@ -4667,16 +4667,6 @@ class TestFunctional(unittest.TestCase):
             str(e.exception),
             "Not enough space in '.*u_boot_binman_embed_sm' for data length.*")
 
-    def testFakeBlob(self):
-        """Test handling of faking an external blob"""
-        with test_util.capture_sys_output() as (stdout, stderr):
-            self._DoTestFile('203_fake_blob.dts', allow_missing=True,
-                             allow_fake_blobs=True)
-        err = stderr.getvalue()
-        self.assertRegex(err,
-                         "Image '.*' has faked external blobs and is non-functional: .*")
-        os.remove('binman_faking_test_blob')
-
     def testVersion(self):
         """Test we can get the binman version"""
         version = '(unreleased)'
@@ -4965,5 +4955,17 @@ fdt         fdtmap                Extract the devicetree blob from the fdtmap
         # There should be a U-Boot after the final FIP
         self.assertEqual(U_BOOT_DATA, data[-4:])
 
+    def testFakeBlob(self):
+        """Test handling of faking an external blob"""
+        with test_util.capture_sys_output() as (stdout, stderr):
+            self._DoTestFile('217_fake_blob.dts', allow_missing=True,
+                             allow_fake_blobs=True)
+        err = stderr.getvalue()
+        self.assertRegex(
+            err,
+            "Image '.*' has faked external blobs and is non-functional: .*")
+        os.remove('binman_faking_test_blob')
+
+
 if __name__ == "__main__":
     unittest.main()
diff --git a/tools/binman/test/203_fake_blob.dts b/tools/binman/test/217_fake_blob.dts
similarity index 100%
rename from tools/binman/test/203_fake_blob.dts
rename to tools/binman/test/217_fake_blob.dts
-- 
2.34.1.575.g55b058a8bb-goog


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH v2 2/2] binman: Write fake blobs to the output directory
  2022-01-12 20:10 [PATCH v2 1/2] binman: Renumber the fake blob dts Simon Glass
@ 2022-01-12 20:10 ` Simon Glass
  2022-01-13 12:53   ` Tom Rini
  2022-01-13 12:53 ` [PATCH v2 1/2] binman: Renumber the fake blob dts Tom Rini
  1 sibling, 1 reply; 4+ messages in thread
From: Simon Glass @ 2022-01-12 20:10 UTC (permalink / raw)
  To: U-Boot Mailing List; +Cc: Tom Rini, Simon Glass

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>
---

Changes in v2:
- Rebase to master

 tools/binman/control.py    |  8 +++++---
 tools/binman/entry.py      | 20 ++++++++++++++++++++
 tools/binman/etype/blob.py |  8 +-------
 tools/binman/ftest.py      |  1 -
 4 files changed, 26 insertions(+), 11 deletions(-)

diff --git a/tools/binman/control.py b/tools/binman/control.py
index 4b3ce23fb4c..f4c1fd01568 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 54cc3726b9d..bac90bbbcde 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 65ebb2ecf4d..59728f368ec 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 a9d9160967c..f4ff7b65831 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__":
-- 
2.34.1.575.g55b058a8bb-goog


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH v2 1/2] binman: Renumber the fake blob dts
  2022-01-12 20:10 [PATCH v2 1/2] binman: Renumber the fake blob dts Simon Glass
  2022-01-12 20:10 ` [PATCH v2 2/2] binman: Write fake blobs to the output directory Simon Glass
@ 2022-01-13 12:53 ` Tom Rini
  1 sibling, 0 replies; 4+ messages in thread
From: Tom Rini @ 2022-01-13 12:53 UTC (permalink / raw)
  To: Simon Glass; +Cc: U-Boot Mailing List

[-- Attachment #1: Type: text/plain, Size: 294 bytes --]

On Wed, Jan 12, 2022 at 01:10:35PM -0700, Simon Glass wrote:

> Use a unique number instead of the current 203, which is used by 203_fip
> as well. Reformat the code to avoid a long line.
> 
> Signed-off-by: Simon Glass <sjg@chromium.org>

Applied to u-boot/master, thanks!

-- 
Tom

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 659 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v2 2/2] binman: Write fake blobs to the output directory
  2022-01-12 20:10 ` [PATCH v2 2/2] binman: Write fake blobs to the output directory Simon Glass
@ 2022-01-13 12:53   ` Tom Rini
  0 siblings, 0 replies; 4+ messages in thread
From: Tom Rini @ 2022-01-13 12:53 UTC (permalink / raw)
  To: Simon Glass; +Cc: U-Boot Mailing List

[-- Attachment #1: Type: text/plain, Size: 796 bytes --]

On Wed, Jan 12, 2022 at 01:10:36PM -0700, Simon Glass wrote:

> 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>

Applied to u-boot/master, thanks!

-- 
Tom

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 659 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2022-01-13 12:54 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-01-12 20:10 [PATCH v2 1/2] binman: Renumber the fake blob dts Simon Glass
2022-01-12 20:10 ` [PATCH v2 2/2] binman: Write fake blobs to the output directory Simon Glass
2022-01-13 12:53   ` Tom Rini
2022-01-13 12:53 ` [PATCH v2 1/2] binman: Renumber the fake blob dts Tom Rini

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox