mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-12-02 17:41:08 +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
|
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
|
# Just check that the data appears in the file somewhere
|
||||||
self.assertIn(U_BOOT_SPL_DATA, data)
|
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__":
|
if __name__ == "__main__":
|
||||||
unittest.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