binman: Support replacing data in a cbfs
authorSimon Glass <sjg@chromium.org>
Sat, 20 Jul 2019 18:24:06 +0000 (12:24 -0600)
committerSimon Glass <sjg@chromium.org>
Mon, 29 Jul 2019 15:38:06 +0000 (09:38 -0600)
commiteb0f4a4cb40264a90a91e10e3ec00d1e0da7fb66
treed317dd48088c9c20af20e1e85e4890640cedfd0d
parent7210c89eac7fb68947f5f31372d9f1e93f42df0c
binman: Support replacing data in a cbfs

At present binman cannot replace data within a CBFS since it does not
allow rewriting of the files in that CBFS. Implement this by using the
new WriteData() method to handle the case.

Add a header to compressed data so that the amount of compressed data can
be determined without reference to the size of the containing entry. This
allows the entry to be larger that the contents, without causing errors in
decompression. This is necessary to cope with a compressed device tree
being updated in such a way that it shrinks after the entry size is
already set (an obscure case). It is not used with CBFS since it has its
own metadata for this. Increase the number of passes allowed to resolve
the position of entries, to handle this case.

Add a test for this new logic.

Signed-off-by: Simon Glass <sjg@chromium.org>
tools/binman/cbfs_util.py
tools/binman/control.py
tools/binman/entry_test.py
tools/binman/etype/cbfs.py
tools/binman/ftest.py
tools/binman/test/142_replace_cbfs.dts [new file with mode: 0644]
tools/patman/tools.py