In some cases it is useful to add a group of files to the image and be able to access them at run-time. Of course it is possible to generate the binman config file with a set of blobs each with a filename. But for convenience, add an entry type which can do this. Add required support (for adding nodes and string properties) into the state module. Signed-off-by: Simon Glass <sjg@chromium.org>lime2-spi
parent
b4e1a38c29
commit
0a98b28b06
@ -0,0 +1,57 @@ |
|||||||
|
# SPDX-License-Identifier: GPL-2.0+ |
||||||
|
# Copyright (c) 2018 Google, Inc |
||||||
|
# Written by Simon Glass <sjg@chromium.org> |
||||||
|
# |
||||||
|
# Entry-type module for a set of files which are placed in individual |
||||||
|
# sub-entries |
||||||
|
# |
||||||
|
|
||||||
|
import glob |
||||||
|
import os |
||||||
|
|
||||||
|
from section import Entry_section |
||||||
|
import fdt_util |
||||||
|
import state |
||||||
|
import tools |
||||||
|
|
||||||
|
import bsection |
||||||
|
|
||||||
|
class Entry_files(Entry_section): |
||||||
|
"""Entry containing a set of files |
||||||
|
|
||||||
|
Properties / Entry arguments: |
||||||
|
- pattern: Filename pattern to match the files to include |
||||||
|
- compress: Compression algorithm to use: |
||||||
|
none: No compression |
||||||
|
lz4: Use lz4 compression (via 'lz4' command-line utility) |
||||||
|
|
||||||
|
This entry reads a number of files and places each in a separate sub-entry |
||||||
|
within this entry. To access these you need to enable device-tree updates |
||||||
|
at run-time so you can obtain the file positions. |
||||||
|
""" |
||||||
|
def __init__(self, section, etype, node): |
||||||
|
Entry_section.__init__(self, section, etype, node) |
||||||
|
self._pattern = fdt_util.GetString(self._node, 'pattern') |
||||||
|
if not self._pattern: |
||||||
|
self.Raise("Missing 'pattern' property") |
||||||
|
self._compress = fdt_util.GetString(self._node, 'compress', 'none') |
||||||
|
self._require_matches = fdt_util.GetBool(self._node, |
||||||
|
'require-matches') |
||||||
|
|
||||||
|
def ExpandEntries(self): |
||||||
|
files = tools.GetInputFilenameGlob(self._pattern) |
||||||
|
if self._require_matches and not files: |
||||||
|
self.Raise("Pattern '%s' matched no files" % self._pattern) |
||||||
|
for fname in files: |
||||||
|
if not os.path.isfile(fname): |
||||||
|
continue |
||||||
|
name = os.path.basename(fname) |
||||||
|
subnode = self._node.FindNode(name) |
||||||
|
if not subnode: |
||||||
|
subnode = state.AddSubnode(self._node, name) |
||||||
|
state.AddString(subnode, 'type', 'blob') |
||||||
|
state.AddString(subnode, 'filename', fname) |
||||||
|
state.AddString(subnode, 'compress', self._compress) |
||||||
|
|
||||||
|
# Read entries again, now that we have some |
||||||
|
self._section._ReadEntries() |
@ -0,0 +1,11 @@ |
|||||||
|
// SPDX-License-Identifier: GPL-2.0+ |
||||||
|
/dts-v1/; |
||||||
|
|
||||||
|
/ { |
||||||
|
binman { |
||||||
|
files { |
||||||
|
pattern = "files/*.dat"; |
||||||
|
compress = "none"; |
||||||
|
}; |
||||||
|
}; |
||||||
|
}; |
@ -0,0 +1,11 @@ |
|||||||
|
// SPDX-License-Identifier: GPL-2.0+ |
||||||
|
/dts-v1/; |
||||||
|
|
||||||
|
/ { |
||||||
|
binman { |
||||||
|
files { |
||||||
|
pattern = "files/*.dat"; |
||||||
|
compress = "lz4"; |
||||||
|
}; |
||||||
|
}; |
||||||
|
}; |
@ -0,0 +1,12 @@ |
|||||||
|
// SPDX-License-Identifier: GPL-2.0+ |
||||||
|
/dts-v1/; |
||||||
|
|
||||||
|
/ { |
||||||
|
binman { |
||||||
|
files { |
||||||
|
pattern = "files/*.none"; |
||||||
|
compress = "none"; |
||||||
|
require-matches; |
||||||
|
}; |
||||||
|
}; |
||||||
|
}; |
@ -0,0 +1,11 @@ |
|||||||
|
// SPDX-License-Identifier: GPL-2.0+ |
||||||
|
/dts-v1/; |
||||||
|
|
||||||
|
/ { |
||||||
|
binman { |
||||||
|
files { |
||||||
|
compress = "none"; |
||||||
|
require-matches; |
||||||
|
}; |
||||||
|
}; |
||||||
|
}; |
@ -0,0 +1 @@ |
|||||||
|
sorry I'm late |
@ -0,0 +1 @@ |
|||||||
|
Oh, don't bother apologising, I'm sorry you're alive |
@ -0,0 +1 @@ |
|||||||
|
this does not have a .dat extenion |
Loading…
Reference in new issue