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)

