[PATCH] binman: Get futility by building it

Simon Glass sjg at chromium.org
Sat Sep 10 00:05:26 CEST 2022


A binary download is not great, since it depends on libraries being
present in the system. Build futility from source instead.

Note that this requires two patches to the source repo which are in
progress:

   https://issuetracker.google.com/issues/245993083?pli=1

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

 tools/binman/bintool.py        | 10 +++++++---
 tools/binman/btool/futility.py |  9 ++++++---
 2 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/tools/binman/bintool.py b/tools/binman/bintool.py
index 032179a99de..a582d9d3446 100644
--- a/tools/binman/bintool.py
+++ b/tools/binman/bintool.py
@@ -319,7 +319,7 @@ class Bintool:
             return result.stdout
 
     @classmethod
-    def build_from_git(cls, git_repo, make_target, bintool_path):
+    def build_from_git(cls, git_repo, make_target, bintool_path, flags=None):
         """Build a bintool from a git repo
 
         This clones the repo in a temporary directory, builds it with 'make',
@@ -330,6 +330,7 @@ class Bintool:
             make_target (str): Target to pass to 'make' to build the tool
             bintool_path (str): Relative path of the tool in the repo, after
                 build is complete
+            flags (list of str): Flags or variables to pass to make, or None
 
         Returns:
             tuple:
@@ -341,8 +342,11 @@ class Bintool:
         print(f"- clone git repo '{git_repo}' to '{tmpdir}'")
         tools.run('git', 'clone', '--depth', '1', git_repo, tmpdir)
         print(f"- build target '{make_target}'")
-        tools.run('make', '-C', tmpdir, '-j', f'{multiprocessing.cpu_count()}',
-                  make_target)
+        cmd = ['make', '-C', tmpdir, '-j', f'{multiprocessing.cpu_count()}',
+               make_target]
+        if flags:
+            cmd += flags
+        tools.run(*cmd)
         fname = os.path.join(tmpdir, bintool_path)
         if not os.path.exists(fname):
             print(f"- File '{fname}' was not produced")
diff --git a/tools/binman/btool/futility.py b/tools/binman/btool/futility.py
index 75a05c2ac66..f88139a0ab5 100644
--- a/tools/binman/btool/futility.py
+++ b/tools/binman/btool/futility.py
@@ -160,8 +160,11 @@ class Bintoolfutility(bintool.Bintool):
         Raises:
             Valuerror: Fetching could not be completed
         """
-        if method != bintool.FETCH_BIN:
+        if method != bintool.FETCH_BUILD:
             return None
-        fname, tmpdir = self.fetch_from_drive(
-            '1hdsInzsE4aJbmBeJ663kYgjOQyW1I-E0')
+        result = self.build_from_git(
+            'https://chromium.googlesource.com/a/chromiumos/platform/vboot_reference',
+            'all',
+            'build/futility/futility',
+            ['USE_FLASHROM=0'])
         return fname, tmpdir
-- 
2.37.2.789.g6183377224-goog



More information about the U-Boot mailing list