summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorTom Rini <[email protected]>2022-01-13 07:34:27 -0500
committerTom Rini <[email protected]>2022-01-13 07:34:27 -0500
commit37b876359fbd90434b37527fa96f72a31af20f81 (patch)
tree3a8d677b0e1f0038d84aca54986047968e27b007 /tools
parenta02af84e03e018d7cd08bb3070cbe5517004712b (diff)
parent6e4a7eaf7d6c9aedafa19aa57553ae44dba5ca0d (diff)
Merge branch '2022-01-12-assorted-updates'
- Fix binman fake blob support to write outside source directory - Azure now has stages in the pipeline - Update to latest focal tag for containers in CI. - Finish dropping LynxOS - Add migration message for timer code
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.py21
-rw-r--r--tools/binman/test/217_fake_blob.dts (renamed from tools/binman/test/203_fake_blob.dts)0
-rw-r--r--tools/docker/Dockerfile2
6 files changed, 38 insertions, 21 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 a9b7880f362..f4ff7b65831 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,16 @@ 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: .*")
+
+
if __name__ == "__main__":
unittest.main()
diff --git a/tools/binman/test/203_fake_blob.dts b/tools/binman/test/217_fake_blob.dts
index 22cf67f4f83..22cf67f4f83 100644
--- a/tools/binman/test/203_fake_blob.dts
+++ b/tools/binman/test/217_fake_blob.dts
diff --git a/tools/docker/Dockerfile b/tools/docker/Dockerfile
index fb422e75881..f19e618ffba 100644
--- a/tools/docker/Dockerfile
+++ b/tools/docker/Dockerfile
@@ -2,7 +2,7 @@
# This Dockerfile is used to build an image containing basic stuff to be used
# to build U-Boot and run our test suites.
-FROM ubuntu:focal-20211006
+FROM ubuntu:focal-20220105
MAINTAINER Tom Rini <[email protected]>
LABEL Description=" This image is for building U-Boot inside a container"