mbox series

[v2,00/28] binman: Support compression of sections

Message ID 20201026234026.1903778-1-sjg@chromium.org
Headers show
Series binman: Support compression of sections | expand


Simon Glass Oct. 26, 2020, 11:39 p.m. UTC
This series includes a number of improvements and refactors to support
compressing entire sections. This is sometimes useful when a section
contains a number of entries which are accessed as a whole and are best
compressed together.

Most of the effort here is clarifying what is in a section and what is
added by its parent (i.e. padding). But the opportunity is taken to tidy
up and somewhat simplify some of the section-handling code. Also some new
tests are added to reduce the amount of undefined behaviour.

This series is available at u-boot-dm/binman-working

Changes in v2:
- Add a patch to update the entry docs
- Add new patch to drop unused return variable for _DoTestFile()
- Add new tests for skip-at-start sections
- Use unittest.skip() to skip testDual()
- Update testSkipAtStartSectionPad() for new behaviour
- Update testSkipAtStartSectionPad which now works as expected
- Renumber the test .dts files to make space for three inserted earlier
- Update testSkipAtStartSectionPad() to check section.data
- Renumber the test .dts files to make space for three inserted earlier

Simon Glass (28):
  binman: Update the entry docs
  binman: Drop unused return variable for _DoTestFile()
  binman: Add tests for skip-at-start sections
  binman: Give a sensible error if no command is given
  binman: Fix return from u-boot-ucode if there is no DT
  binman: Remove references to 'image' in entry_Section
  binman: Expand the error message for breaching a section
  binman: Move CompressData() into Entry base class
  binman: Use 'files-compress' to set compression for files
  binman: Update testPackExtra with more checks
  binman: Expand docs and test for padding
  binman: Expand docs and test for alignment
  binman: Move section-building code into a function
  binman: Refactor _BuildSectionData()
  binman: Move section padding to the parent
  binman: Make section padding consistent with other entries
  binman: Store the original data before compression
  binman: Set section contents in GetData()
  binman: Avoid reporting image-pos with compression
  binman: Drop Entry.CheckOffset()
  binman: Move sort and expand to the main Pack() function
  binman: Drop the Entry.CheckSize() method
  binman: Call CheckSize() from the section's Pack() method
  binman: Drop CheckEntries()
  binman: Update CheckEntries() for compressed sections
  binman: Use the actual contents in CheckSize()
  binman: Support compression of sections
  binman: Avoid calculated section data repeatedly

 tools/binman/README                           |  72 +--
 tools/binman/README.entries                   |  25 +-
 tools/binman/cmdline.py                       |   1 +
 tools/binman/control.py                       |   4 +-
 tools/binman/entry.py                         |  65 ++-
 tools/binman/etype/blob.py                    |   7 -
 tools/binman/etype/cbfs.py                    |   6 +-
 tools/binman/etype/files.py                   |   7 +-
 tools/binman/etype/section.py                 | 167 +++++--
 tools/binman/etype/u_boot_ucode.py            |   1 +
 tools/binman/ftest.py                         | 409 +++++++++++++++++-
 tools/binman/image.py                         |   2 +-
 tools/binman/test/009_pack_extra.dts          |   2 +-
 tools/binman/test/085_files_compress.dts      |   2 +-
 tools/binman/test/177_skip_at_start.dts       |  19 +
 tools/binman/test/178_skip_at_start_pad.dts   |  21 +
 .../test/179_skip_at_start_section_pad.dts    |  22 +
 tools/binman/test/180_section_pad.dts         |  27 ++
 tools/binman/test/181_section_align.dts       |  34 ++
 tools/binman/test/182_compress_image.dts      |  14 +
 tools/binman/test/183_compress_image_less.dts |  14 +
 .../binman/test/184_compress_section_size.dts |  17 +
 tools/binman/test/185_compress_section.dts    |  16 +
 tools/binman/test/186_compress_extra.dts      |  37 ++
 24 files changed, 885 insertions(+), 106 deletions(-)
 create mode 100644 tools/binman/test/177_skip_at_start.dts
 create mode 100644 tools/binman/test/178_skip_at_start_pad.dts
 create mode 100644 tools/binman/test/179_skip_at_start_section_pad.dts
 create mode 100644 tools/binman/test/180_section_pad.dts
 create mode 100644 tools/binman/test/181_section_align.dts
 create mode 100644 tools/binman/test/182_compress_image.dts
 create mode 100644 tools/binman/test/183_compress_image_less.dts
 create mode 100644 tools/binman/test/184_compress_section_size.dts
 create mode 100644 tools/binman/test/185_compress_section.dts
 create mode 100644 tools/binman/test/186_compress_extra.dts