mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-30 08:31:03 +00:00
binman: Add an etype for external binary blobs
It is useful to be able to distinguish between ordinary blobs such as u-boot.bin and external blobs that cannot be build by the U-Boot build system. If the external blobs are not available for some reason, then we know that a value image cannot be built. Introduce a new 'blob-ext' entry type for that. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
This commit is contained in:
parent
1216448573
commit
d498630ea9
5 changed files with 83 additions and 0 deletions
|
@ -42,6 +42,16 @@ obtained from the list of available device-tree files, managed by the
|
|||
|
||||
|
||||
|
||||
Entry: blob-ext: Entry containing an externally built binary blob
|
||||
-----------------------------------------------------------------
|
||||
|
||||
Note: This should not be used by itself. It is normally used as a parent
|
||||
class by other entry types.
|
||||
|
||||
See 'blob' for Properties / Entry arguments.
|
||||
|
||||
|
||||
|
||||
Entry: blob-named-by-arg: A blob entry which gets its filename property from its subclass
|
||||
-----------------------------------------------------------------------------------------
|
||||
|
||||
|
|
31
tools/binman/etype/blob_ext.py
Normal file
31
tools/binman/etype/blob_ext.py
Normal file
|
@ -0,0 +1,31 @@
|
|||
# SPDX-License-Identifier: GPL-2.0+
|
||||
# Copyright (c) 2016 Google, Inc
|
||||
# Written by Simon Glass <sjg@chromium.org>
|
||||
#
|
||||
# Entry-type module for external blobs, not built by U-Boot
|
||||
#
|
||||
|
||||
import os
|
||||
|
||||
from binman.etype.blob import Entry_blob
|
||||
from dtoc import fdt_util
|
||||
from patman import tools
|
||||
from patman import tout
|
||||
|
||||
class Entry_blob_ext(Entry_blob):
|
||||
"""Entry containing an externally built binary blob
|
||||
|
||||
Note: This should not be used by itself. It is normally used as a parent
|
||||
class by other entry types.
|
||||
|
||||
See 'blob' for Properties / Entry arguments.
|
||||
"""
|
||||
def __init__(self, section, etype, node):
|
||||
Entry_blob.__init__(self, section, etype, node)
|
||||
self.external = True
|
||||
|
||||
def ObtainContents(self):
|
||||
self._filename = self.GetDefaultFilename()
|
||||
self._pathname = tools.GetInputFilename(self._filename)
|
||||
self.ReadBlobContents()
|
||||
return True
|
|
@ -3364,6 +3364,18 @@ class TestFunctional(unittest.TestCase):
|
|||
# Just check that the data appears in the file somewhere
|
||||
self.assertIn(U_BOOT_SPL_DATA, data)
|
||||
|
||||
def testExtblob(self):
|
||||
"""Test an image with an external blob"""
|
||||
data = self._DoReadFile('157_blob_ext.dts')
|
||||
self.assertEqual(REFCODE_DATA, data)
|
||||
|
||||
def testExtblobMissing(self):
|
||||
"""Test an image with a missing external blob"""
|
||||
with self.assertRaises(ValueError) as e:
|
||||
self._DoReadFile('158_blob_ext_missing.dts')
|
||||
self.assertIn("Filename 'missing-file' not found in input path",
|
||||
str(e.exception))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
|
14
tools/binman/test/157_blob_ext.dts
Normal file
14
tools/binman/test/157_blob_ext.dts
Normal file
|
@ -0,0 +1,14 @@
|
|||
// SPDX-License-Identifier: GPL-2.0+
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
/ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
binman {
|
||||
blob-ext {
|
||||
filename = "refcode.bin";
|
||||
};
|
||||
};
|
||||
};
|
16
tools/binman/test/158_blob_ext_missing.dts
Normal file
16
tools/binman/test/158_blob_ext_missing.dts
Normal file
|
@ -0,0 +1,16 @@
|
|||
// SPDX-License-Identifier: GPL-2.0+
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
/ {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
binman {
|
||||
size = <0x80>;
|
||||
|
||||
blob-ext {
|
||||
filename = "missing-file";
|
||||
};
|
||||
};
|
||||
};
|
Loading…
Reference in a new issue