summaryrefslogtreecommitdiff
path: root/tools/binman
AgeCommit message (Collapse)Author
2021-12-02binman: Use normal entries in cbfsSimon Glass
This currently uses _cbfs_entries[] to store entries. Since the entries are in fact valid etypes, we may as well use the same name as entry_Section uses, which is _entries. This allows reusing more of the code there (in a future patch). Signed-off-by: Simon Glass <[email protected]>
2021-12-02binman: Move cbfs.ObtainContents() down a bitSimon Glass
It is easier to understand this file if reading the entries comes before obtaining the contents, since that is the order in which Binman proceeds. Move the function down a bit. Signed-off-by: Simon Glass <[email protected]>
2021-12-02binman: Update the section documentationSimon Glass
Expand this to explain subclassing better and also to tidy up formatting for rST. Fix a few pylint warnings to avoid dropping the score. Signed-off-by: Simon Glass <[email protected]>
2021-12-02binman: Allow control of which entries to readSimon Glass
The ObtainContents() and GetEntryContents() methods in this file read every single entry in the section. This is the common case. However when one of the entries has had its data updated (e.g. with 'binman replace') we don't want to read it again from the file. Allow the entry to be skipped, for this purpose. This is currently done in the CBFS implementation, so adding it here will allow that to use more of the entry_Section code. Signed-off-by: Simon Glass <[email protected]>
2021-12-02binman: Allow overriding BuildSectionData()Simon Glass
This method is currently marked private. However it is useful to be able to subclass it, since much of the entry_Section code can be reused. Rename it. Also document one confusing part of this code, so people can understand how to add a test for this case. Fix up a few pylint warnings to avoid regressing the score. Signed-off-by: Simon Glass <[email protected]>
2021-12-02binman: Drop the filename property in entry_SectionSimon Glass
This is not used and does nothing. Drop it. Add a tweak to avoid reducing the pylint score. Signed-off-by: Simon Glass <[email protected]>
2021-12-02binman: Drop the underscore in _ReadEntries()Simon Glass
This function can be overridden so should not have an underscore. Drop it. Signed-off-by: Simon Glass <[email protected]>
2021-12-02binman: Correct comments for ReadChildData()Simon Glass
The comment here is incomplete. Fix it. Signed-off-by: Simon Glass <[email protected]>
2021-12-02binman: Correct init of entry in Entry classSimon Glass
This should not have an underscore. Drop it so that derived classes can rely on it being set correctly. Signed-off-by: Simon Glass <[email protected]>
2021-12-02binman: Add a way to obtain the versionSimon Glass
Add a -V option which shows the version number of binman. For now this just uses a local 'version' file. Once the tool is packaged in some way we can figure out an approach that suits. Signed-off-by: Simon Glass <[email protected]>
2021-12-02binman: Tidy up style in cmdlineSimon Glass
Update this file to improve the pylint score a little. The remaining item is: Function name "ParseArgs" doesn't conform to snake_case naming style which needs some binman-wide renaming. Signed-off-by: Simon Glass <[email protected]>
2021-11-28binman: Fix extract command for using non-absolute image pathsJan Kiszka
Otherwise the updated image will end up in the temporary folder that is purged after completion. Signed-off-by: Jan Kiszka <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2021-11-13binman: Fix replace subcommand help and commentsJan Kiszka
Fix some copy&paste artifacts. Signed-off-by: Jan Kiszka <[email protected]>
2021-11-13binman: Support updating the dtb in an ELF fileSimon Glass
WIth EFI we must embed the devicetree in an ELF image so that it is loaded as part of the executable file. We want it to include the binman definition in there also, which in some cases cannot be created until the ELF (u-boot) is built. Add an option to binman to support writing the updated dtb to the ELF file u-boot.out This is useful with the EFI app, which is always packaged as an ELF file. Signed-off-by: Simon Glass <[email protected]>
2021-11-13binman: Tidy up comments on _DoTestFile()Simon Glass
The comment for this function is missing an argument and the return value. Fix it. Signed-off-by: Simon Glass <[email protected]>
2021-11-13binman: Support reading the offset of an ELF-file symbolSimon Glass
Binman needs to be able to update the contents of an ELF file after it has been build. To support this, add a function to locate the position of a symbol's contents within the file. Fix the comments on bss_data.c and Symbol while we are here. Signed-off-by: Simon Glass <[email protected]>
2021-11-13binman: Report an error if test files fail to compileSimon Glass
At present any error from the 'make' command is silently swallowed by the test system. Fix this by showing it when detected. Signed-off-by: Simon Glass <[email protected]>
2021-10-31binman: Allow timeout to occur in the image or its sectionSimon Glass
At present testThreadTimeout() assumes that the expected timeout happens first when building the section, but it can just as easily happen at the top-level image. Update the test to cope with both. Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Marek BehĂșn <[email protected]>
2021-10-18treewide: Remove OF_PRIOR_STAGEIlias Apalodimas
The previous patches removed OF_PRIOR_STAGE from the last consumers of the Kconfig option. Cleanup any references to it in documentation, code and configuration options. Signed-off-by: Ilias Apalodimas <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2021-10-03iot2050: Enable watchdog support, but do not auto-start itJan Kiszka
This allows to use the watchdog in custom scripts but does not enforce that the OS has to support it as well. Signed-off-by: Jan Kiszka <[email protected]>
2021-09-24tools: Refactor full help printingPaul Barker
Collect the code for printing the full help message of patman, buildman and binman into a single function in patman.tools. Signed-off-by: Paul Barker <[email protected]>
2021-07-21binman: Add basic support for debugging performanceSimon Glass
One of binman's attributes is that it is extremely fast, at least for a Python program. Add some simple timing around operations that might take a while, such as reading an image and compressing it. This should help to maintain the performance as new features are added. This is for debugging purposes only. Signed-off-by: Simon Glass <[email protected]>
2021-07-21binman: Use bytearray instead of stringSimon Glass
This is faster if data is being concatenated. Update the section and collection etypes. Signed-off-by: Simon Glass <[email protected]>
2021-07-21binman: Split node-reading out from constructor in filesSimon Glass
The constructor should not read the node information. Move it to the ReadNode() method instead. This allows this etype to be subclassed. Signed-off-by: Simon Glass <[email protected]>
2021-07-21binman: Support multithreading for building imagesSimon Glass
Some images may take a while to build, e.g. if they are large and use slow compression. Support compiling sections in parallel to speed things up. Signed-off-by: Simon Glass <[email protected]> (fixed to use a separate test file to fix flakiness)
2021-05-19binman: Support packaging U-Boot for scenarios like OF_BOARD or OF_PRIOR_STAGEBin Meng
For scenarios like OF_BOARD or OF_PRIOR_STAGE, no device tree blob is provided in the U-Boot build phase hence the binman node information is not available. In order to support such use case, a new Kconfig option BINMAN_STANDALONE_FDT is introduced, to tell the build system that a device tree blob containing binman node is explicitly required when using binman to package U-Boot. Signed-off-by: Bin Meng <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2021-05-19binman: Add support for RISC-V OpenSBI fw_dynamic blobBin Meng
Add an entry for RISC-V OpenSBI's 'fw_dynamic' firmware payload. Signed-off-by: Bin Meng <[email protected]> Reviewed-by: Simon Glass <[email protected]> Reviewed-by: Rick Chen <[email protected]> Reviewed-by: Rick Chen <[email protected]>
2021-05-19binman: test: Rename 172_fit_fdt.dts to 170_fit_fdt.dtsBin Meng
Currently there are 2 binman test cases using the same 172 number. It seems that 172_fit_fdt.dts was originally named as 170_, but commit c0f1ebe9c1b9 ("binman: Allow selecting default FIT configuration") changed its name to 172_ for no reason. Let's change it back. Signed-off-by: Bin Meng <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2021-05-19binman: Correct the comment for ATF entry typeBin Meng
This is wrongly referring to Intel ME, which should be ATF. Signed-off-by: Bin Meng <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2021-05-19binman: Correct '-a' description in the docBin Meng
It needs a space around '-a'. Signed-off-by: Bin Meng <[email protected]> Reviewed-by: Simon Glass <[email protected]> Reviewed-by: Rick Chen <[email protected]>
2021-04-29binman: Support adding sections to FMAPsSimon Glass
When used with hierarchical images, use the Chromium OS convention of adding a section before all the subentries it contains. Signed-off-by: Simon Glass <[email protected]>
2021-04-29binman: Tweak implementation of fmapSimon Glass
Use an interator in two of the fmap tests so it is easier to add new items. Also check the name first since that is the first indication that something is wrong. Use a variable for the expected size of the fmap to avoid repeating the code. Signed-off-by: Simon Glass <[email protected]>
2021-04-29binman: Correct testSplNoDtb() and Tpl alsoSimon Glass
These two tests require an ELF image so that symbol information can be written into the SPL/TPL binary. At present they rely on other tests having set it up first, but every test must run independently. This can cause occasional errors in CI. Fix this by setting up the required files, as other tests do. Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Tom Rini <[email protected]>
2021-03-27binman: Support default alignment for sectionsSimon Glass
Sometimes it is useful to specify the default alignment for all entries in a section, such as when word-alignment is necessary, for example. It is tedious and error-prone to specify this individually for each section. Add a property to control this for a section. Signed-off-by: Simon Glass <[email protected]>
2021-03-27binman: Support obtaining section contents immediatelySimon Glass
Generally the content of sections is not built until the final assembly of the image. This is partly to avoid wasting time, since the entries within sections may change multiple times as binman works through its various stages. This works quite well since sections exist in a strict hierarchy, so they can be processed in a depth-first manner. However the 'collection' entry type does not have this luxury. If it contains a section within its 'content' list, then it must produce the section contents, if available. That section is typically a sibling node, i.e. not part oc the collection's hierarchy. Add a new 'required' argument to section.GetData() to support this. When required is True, any referenced sections are immediately built. If this is not possible (because one of the subentries does not have its data yet) then an error is produced. The test for this uses a 'collection' entry type, referencing a section as its first member. This forces a call to _BuildSectionData() with required set to False, at first, then True later, when the image is assembled. Signed-off-by: Simon Glass <[email protected]>
2021-03-27binman: Add support for a collection of entriesSimon Glass
The vblock entry type includes code to collect the data from a number of other entries (not necessarily subentries) and concatenating it. This is a useful feature for other entry types. Make it a base class, so that vblock can use it, along with other entry types. Signed-off-by: Simon Glass <[email protected]>
2021-03-27binman: Allow disabling expanding an entrySimon Glass
At present there is a command-line flag to disable substitution of expanded entries. Add an option to the entry node as well, so it can be controlled at the node level. Add a test to cover this. Fix up the comment to the checkSymbols() function it uses, while we are here. Signed-off-by: Simon Glass <[email protected]>
2021-03-27binman: Use a unique number for the symbols test fileSimon Glass
Two test devicetree files currently have 192 as their unique number. Fix this by separating them out. Signed-off-by: Simon Glass <[email protected]>
2021-03-26binman: Update various pieces of the documentationSimon Glass
A few sections are a little out of date now. Update them. Signed-off-by: Simon Glass <[email protected]>
2021-03-26binman: Drop repetitive heading for each entrySimon Glass
Many entries start 'Entry containing a'. This looks fine in the source code but is annoying when viewed in the htmldocs table of contents. Drop these unnecessary words. Signed-off-by: Simon Glass <[email protected]>
2021-03-26binman: Incorporate entry documentationSimon Glass
Update this to avoid sphinx warnings and incorporate it into the new documentaiton tree. Signed-off-by: Simon Glass <[email protected]>
2021-03-26binman: Rearrange documentation into headingsSimon Glass
Collect the material into different top-level headings to make it easier to read. Signed-off-by: Simon Glass <[email protected]>
2021-03-26binman: doc: Add documentation to htmldocsSimon Glass
Add a link to binman's documentation and adjust the files so that it is accessible. Use the name README.rst so it is easy to discover when binman is installed without U-Boot. Signed-off-by: Simon Glass <[email protected]>
2021-03-26binman: Automatically expand phase binaries into sectionsSimon Glass
When creating an entry, check for an expanded version of that entry, then use it instead. This allows, for example use of: u-boot { }; instead of having to write out in full: u-boot { type = "section"; u-boot-nodtb { }; u-boot-dtb { }; }; Add an implementaion of this and associated documentation. Signed-off-by: Simon Glass <[email protected]>
2021-03-26binman: Plumb expanded entries through fullySimon Glass
Add support for this feature in the control, image and section modules, so that expanded entries will be selected by default. So far there are no expanded entry types, so this is a nop. Signed-off-by: Simon Glass <[email protected]>
2021-03-26binman: Allow a way to select expanded entriesSimon Glass
Add a new command-line option to disable expanded entries. This is needed for most tests, since it is much easier to 'factor out' this function into a separate test and keep the existing packing tests simple. Add the option and select it by default from tests. Signed-off-by: Simon Glass <[email protected]>
2021-03-26binman: Allow using an an 'expanded' entry typeSimon Glass
As the first step in supporting expanded entries, add a way for binman to automatically select an 'expanded' version of an entry type, if requested. This is controlled by a class method. Signed-off-by: Simon Glass <[email protected]>
2021-03-26binman: Use standard filenames for SPL/TPL devicetreeSimon Glass
At present, before any entry expansion is done (such as a 'files' entry expanding out to individual entries for each file it contains), we check the binman definition (i.e. '/binman' node) to find out what devicetree files are used in the images. This is a pain, since the definition may change during expansion. For example if there is no u-boot-spl-dtb entry in the definition at the start, we assume that the SPL devicetree is not used. But if an entry later expands to include this, then we don't notice. In fact the flexibility provided by the current approach of checking the definition is not really useful. We know that we can have SPL and TPL devicetrees. We know the pathname to each, so we can simply check if the files are present. If they are present, we can prepare them and update them regardless of whether they are actually used. If they are not present, we cannot prepare/update them anyway, i.e. an error will be generated. Simplify state.Prepare() so it uses a hard-coded list of devicetree files. Note that state.PrepareFromLoadedData() is left untouched, since in that case we have a complete definition from the loaded file, but cannot of course rely on the devicetree files that created it still being present. So in that case we still check the image defitions. Signed-off-by: Simon Glass <[email protected]>
2021-03-26binman: Move the comment for GetFdts() to the base classSimon Glass
Like with other methods this comment should be in the base class. Move it. Signed-off-by: Simon Glass <[email protected]>
2021-03-26binman: Drop unnecessary field in output_fdt_infoSimon Glass
At present we store an entry as the third field in output_fdt_info[]. This is only used to get the type of the entry. Of course multiple entries may have this same type. Also the entry type is the key to this dict, so we can use that instead. Drop the field and update GetUpdateNodes() to suit. Improve the comment for output_fdt_info a little while here. Signed-off-by: Simon Glass <[email protected]>