diff mbox series

[06/25] binman: Use 'files-compress' to set compression for files

Message ID 20201019024138.3804540-6-sjg@chromium.org
State Superseded
Delegated to: Simon Glass
Headers show
Series binman: Support compression of sections | expand

Commit Message

Simon Glass Oct. 19, 2020, 2:41 a.m. UTC
At present we use 'compress' as the property to set the compression of
a 'files' entry. But this conflicts with the same property for entries,
of which Entry_section is a subclass.

Strictly speaking, since Entry_files is in fact a subclass of
Entry_section, the files can be compressed individually but also the
section (that contains all the files) can itself be compressed. With this
change, it is possible to express that.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

 tools/binman/README.entries              | 15 ++++++++++++++-
 tools/binman/etype/files.py              |  7 ++++---
 tools/binman/etype/section.py            |  4 ++--
 tools/binman/test/085_files_compress.dts |  2 +-
 4 files changed, 21 insertions(+), 7 deletions(-)

Comments

Alper Nebi Yasak Oct. 19, 2020, 7:01 p.m. UTC | #1
On 19/10/2020 05:41, Simon Glass wrote:
> At present we use 'compress' as the property to set the compression of
> a 'files' entry. But this conflicts with the same property for entries,
> of which Entry_section is a subclass.
> 
> Strictly speaking, since Entry_files is in fact a subclass of
> Entry_section, the files can be compressed individually but also the
> section (that contains all the files) can itself be compressed. With this
> change, it is possible to express that.
> 
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
> 
>  tools/binman/README.entries              | 15 ++++++++++++++-
>  tools/binman/etype/files.py              |  7 ++++---
>  tools/binman/etype/section.py            |  4 ++--
>  tools/binman/test/085_files_compress.dts |  2 +-
>  4 files changed, 21 insertions(+), 7 deletions(-)
> 
> diff --git a/tools/binman/README.entries b/tools/binman/README.entries
> index c1d436563e8..a3a314753c5 100644
> --- a/tools/binman/README.entries
> +++ b/tools/binman/README.entries
> @@ -299,7 +299,7 @@ Entry: files: Entry containing a set of files
>  
>  Properties / Entry arguments:
>      - pattern: Filename pattern to match the files to include
> -    - compress: Compression algorithm to use:
> +    - files-compress: Compression algorithm to use:
>          none: No compression
>          lz4: Use lz4 compression (via 'lz4' command-line utility)
>  
> @@ -406,6 +406,10 @@ The 'default' property, if present, will be automatically set to the name
>  if of configuration whose devicetree matches the 'default-dt' entry
>  argument, e.g. with '-a default-dt=sun50i-a64-pine64-lts'.
>  
> +Available substitutions for '@' property values are:
> +
> +    DEFAULT-SEQ  Sequence number of the default fdt,as provided by the
> +                 'default-dt' entry argument

I think this and the next hunk slipped in because you're regenerating a
stale file here, wanted to point it out in case you'd prefer them to be
in an independent commit.

>  Properties (in the 'fit' node itself):
>      fit,external-offset: Indicates that the contents of the FIT are external
> @@ -878,6 +882,15 @@ relocated to any address for execution.
>  
>  
>  
> +Entry: u-boot-env: An entry which contains a U-Boot environment
> +---------------------------------------------------------------
> +
> +Properties / Entry arguments:
> +    - filename: File containing the environment text, with each line in the
> +        form var=value
> +
> +
> +

Same as above.

>  Entry: u-boot-img: U-Boot legacy image
>  --------------------------------------
>  
> diff --git a/tools/binman/etype/files.py b/tools/binman/etype/files.py
> index 9adb3afeb14..ce3832e3cdd 100644
> --- a/tools/binman/etype/files.py
> +++ b/tools/binman/etype/files.py
> @@ -19,7 +19,7 @@ class Entry_files(Entry_section):
>  
>      Properties / Entry arguments:
>          - pattern: Filename pattern to match the files to include
> -        - compress: Compression algorithm to use:
> +        - files-compress: Compression algorithm to use:
>              none: No compression
>              lz4: Use lz4 compression (via 'lz4' command-line utility)
>  
> @@ -36,7 +36,8 @@ class Entry_files(Entry_section):
>          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._files_compress = fdt_util.GetString(self._node, 'files-compress',
> +                                                  'none')
>          self._require_matches = fdt_util.GetBool(self._node,
>                                                  'require-matches')
>  
> @@ -53,7 +54,7 @@ class Entry_files(Entry_section):
>                  subnode = state.AddSubnode(self._node, name)
>              state.AddString(subnode, 'type', 'blob')
>              state.AddString(subnode, 'filename', fname)
> -            state.AddString(subnode, 'compress', self._compress)
> +            state.AddString(subnode, 'compress', self._files_compress)
>  
>          # Read entries again, now that we have some
>          self._ReadEntries()
> diff --git a/tools/binman/etype/section.py b/tools/binman/etype/section.py
> index a3e37c33c1b..9222042f5d8 100644
> --- a/tools/binman/etype/section.py
> +++ b/tools/binman/etype/section.py
> @@ -160,7 +160,7 @@ class Entry_section(Entry):
>                  section_data += tools.GetBytes(self._pad_byte, pad)
>          self.Detail('GetData: %d entries, total size %#x' %
>                      (len(self._entries), len(section_data)))
> -        return section_data
> +        return self.CompressData(section_data)
>  
>      def GetOffsets(self):
>          """Handle entries that want to set the offset/size of other entries
> @@ -414,7 +414,7 @@ class Entry_section(Entry):
>          return None
>  
>      def GetEntryContents(self):
> -        """Call ObtainContents() for the section
> +        """Call ObtainContents() for each entry in the section
>          """
>          todo = self._entries.values()
>          for passnum in range(3):
> diff --git a/tools/binman/test/085_files_compress.dts b/tools/binman/test/085_files_compress.dts
> index 847b398bf2b..5aeead2e6e9 100644
> --- a/tools/binman/test/085_files_compress.dts
> +++ b/tools/binman/test/085_files_compress.dts
> @@ -5,7 +5,7 @@
>  	binman {
>  		files {
>  			pattern = "files/*.dat";
> -			compress = "lz4";
> +			files-compress = "lz4";
>  		};
>  	};
>  };
>
diff mbox series

Patch

diff --git a/tools/binman/README.entries b/tools/binman/README.entries
index c1d436563e8..a3a314753c5 100644
--- a/tools/binman/README.entries
+++ b/tools/binman/README.entries
@@ -299,7 +299,7 @@  Entry: files: Entry containing a set of files
 
 Properties / Entry arguments:
     - pattern: Filename pattern to match the files to include
-    - compress: Compression algorithm to use:
+    - files-compress: Compression algorithm to use:
         none: No compression
         lz4: Use lz4 compression (via 'lz4' command-line utility)
 
@@ -406,6 +406,10 @@  The 'default' property, if present, will be automatically set to the name
 if of configuration whose devicetree matches the 'default-dt' entry
 argument, e.g. with '-a default-dt=sun50i-a64-pine64-lts'.
 
+Available substitutions for '@' property values are:
+
+    DEFAULT-SEQ  Sequence number of the default fdt,as provided by the
+                 'default-dt' entry argument
 
 Properties (in the 'fit' node itself):
     fit,external-offset: Indicates that the contents of the FIT are external
@@ -878,6 +882,15 @@  relocated to any address for execution.
 
 
 
+Entry: u-boot-env: An entry which contains a U-Boot environment
+---------------------------------------------------------------
+
+Properties / Entry arguments:
+    - filename: File containing the environment text, with each line in the
+        form var=value
+
+
+
 Entry: u-boot-img: U-Boot legacy image
 --------------------------------------
 
diff --git a/tools/binman/etype/files.py b/tools/binman/etype/files.py
index 9adb3afeb14..ce3832e3cdd 100644
--- a/tools/binman/etype/files.py
+++ b/tools/binman/etype/files.py
@@ -19,7 +19,7 @@  class Entry_files(Entry_section):
 
     Properties / Entry arguments:
         - pattern: Filename pattern to match the files to include
-        - compress: Compression algorithm to use:
+        - files-compress: Compression algorithm to use:
             none: No compression
             lz4: Use lz4 compression (via 'lz4' command-line utility)
 
@@ -36,7 +36,8 @@  class Entry_files(Entry_section):
         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._files_compress = fdt_util.GetString(self._node, 'files-compress',
+                                                  'none')
         self._require_matches = fdt_util.GetBool(self._node,
                                                 'require-matches')
 
@@ -53,7 +54,7 @@  class Entry_files(Entry_section):
                 subnode = state.AddSubnode(self._node, name)
             state.AddString(subnode, 'type', 'blob')
             state.AddString(subnode, 'filename', fname)
-            state.AddString(subnode, 'compress', self._compress)
+            state.AddString(subnode, 'compress', self._files_compress)
 
         # Read entries again, now that we have some
         self._ReadEntries()
diff --git a/tools/binman/etype/section.py b/tools/binman/etype/section.py
index a3e37c33c1b..9222042f5d8 100644
--- a/tools/binman/etype/section.py
+++ b/tools/binman/etype/section.py
@@ -160,7 +160,7 @@  class Entry_section(Entry):
                 section_data += tools.GetBytes(self._pad_byte, pad)
         self.Detail('GetData: %d entries, total size %#x' %
                     (len(self._entries), len(section_data)))
-        return section_data
+        return self.CompressData(section_data)
 
     def GetOffsets(self):
         """Handle entries that want to set the offset/size of other entries
@@ -414,7 +414,7 @@  class Entry_section(Entry):
         return None
 
     def GetEntryContents(self):
-        """Call ObtainContents() for the section
+        """Call ObtainContents() for each entry in the section
         """
         todo = self._entries.values()
         for passnum in range(3):
diff --git a/tools/binman/test/085_files_compress.dts b/tools/binman/test/085_files_compress.dts
index 847b398bf2b..5aeead2e6e9 100644
--- a/tools/binman/test/085_files_compress.dts
+++ b/tools/binman/test/085_files_compress.dts
@@ -5,7 +5,7 @@ 
 	binman {
 		files {
 			pattern = "files/*.dat";
-			compress = "lz4";
+			files-compress = "lz4";
 		};
 	};
 };