On 01/09/2020 13:36, Simon Glass wrote:
> Hi Alper,
> 
> I found that evb-rk3288 fails to build with the final patch from your
> series. See u-boot-dm/testing for the tree.

I had seen your patch and assumed that nothing was already using the
allow-missing functionality in its FITs (since you're adding it now).
Looks like the version in your tree (aa3f219e) succeeds in the pipeline,
so I think there's nothing for me to do now. Thanks for fixing it.

> At present if a FIT references a missing external blob, binman reports an
> error, even if the image is supposed to allow this.
> 
> Propagate this setting down to the child sections of the FIT, so that the
> behaviour is consistent.
> 
> This is a fix-up patch to:
> 
>    binman: Build FIT image subentries with the section etype
> 
> and will be squashed into that.
> 
> Signed-off-by: Simon Glass <[email protected]>
> ---
> 
>  tools/binman/etype/fit.py                  | 15 ++++++++
>  tools/binman/ftest.py                      |  8 +++++
>  tools/binman/test/168_fit_missing_blob.dts | 41 ++++++++++++++++++++++
>  3 files changed, 64 insertions(+)
>  create mode 100644 tools/binman/test/168_fit_missing_blob.dts
> 
> diff --git a/tools/binman/etype/fit.py b/tools/binman/etype/fit.py
> index acba53aa92c..615b2fd8778 100644
> --- a/tools/binman/etype/fit.py
> +++ b/tools/binman/etype/fit.py
> @@ -169,3 +169,18 @@ class Entry_fit(Entry):
>          fdt.Sync(auto_resize=True)
>          data = fdt.GetContents()
>          return data
> +
> +    def CheckMissing(self, missing_list):
> +        """Check if any entries in this FIT have missing external blobs
> +
> +        If there are missing blobs, the entries are added to the list
> +
> +        Args:
> +            missing_list: List of Entry objects to be added to
> +        """
> +        for path, section in self._fit_sections.items():
> +            section.CheckMissing(missing_list)
> +
> +    def SetAllowMissing(self, allow_missing):
> +        for section in self._fit_sections.values():
> +            section.SetAllowMissing(allow_missing)

I saw GetAllowMissing() in section.py, doesn't this also need it?

> diff --git a/tools/binman/ftest.py b/tools/binman/ftest.py
> index 762535b5a74..e672967dbaa 100644
> --- a/tools/binman/ftest.py
> +++ b/tools/binman/ftest.py
> @@ -3515,5 +3515,13 @@ class TestFunctional(unittest.TestCase):
>                      U_BOOT_DTB_DATA)
>          self.assertEqual(expected, data)
>  
> +    def testFitExtblobMissingOk(self):
> +        """Test a FIT with a missing external blob that is allowed"""
> +        with test_util.capture_sys_output() as (stdout, stderr):
> +            self._DoTestFile('168_fit_missing_blob.dts',
> +                             allow_missing=True)
> +        err = stderr.getvalue()
> +        self.assertRegex(err, "Image 'main-section'.*missing.*: blob-ext")
> +
>  if __name__ == "__main__":
>      unittest.main()
> diff --git a/tools/binman/test/168_fit_missing_blob.dts 
> b/tools/binman/test/168_fit_missing_blob.dts
> new file mode 100644
> index 00000000000..e007aa41d8a
> --- /dev/null
> +++ b/tools/binman/test/168_fit_missing_blob.dts
> @@ -0,0 +1,41 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +
> +/dts-v1/;
> +
> +/ {
> +     #address-cells = <1>;
> +     #size-cells = <1>;
> +
> +     binman {
> +             u-boot {
> +             };
> +             fit {
> +                     description = "test-desc";
> +                     #address-cells = <1>;
> +                     fit,fdt-list = "of-list";
> +
> +                     images {
> +                             kernel {
> +                                     description = "ATF BL31";
> +                                     type = "kernel";
> +                                     arch = "ppc";
> +                                     os = "linux";
> +                                     compression = "gzip";
> +                                     load = <00000000>;
> +                                     entry = <00000000>;
> +                                     hash-1 {
> +                                             algo = "crc32";
> +                                     };
> +                                     hash-2 {
> +                                             algo = "sha1";
> +                                     };
> +                                     blob-ext {
> +                                             filename = "missing";
> +                                     };
> +                             };
> +                     };
> +             };
> +             u-boot-nodtb {
> +             };
> +     };
> +};

Anyway, feel free to add if you need to:

Reviewed-by: Alper Nebi Yasak <[email protected]>

(or Acked-by, or neither)

Reply via email to