diff options
author | Neha Malcom Francis | 2022-10-17 16:36:25 +0530 |
---|---|---|
committer | Simon Glass | 2022-10-29 07:36:33 -0600 |
commit | 3545e8595c944c893bc3fa64c8e4727c928cf892 (patch) | |
tree | 84e023add2df4f8b3d276bd5f95d251896de13e2 /tools | |
parent | f29f98d1e40e6b4d9c723af503b20948aa482bf2 (diff) |
binman: Add support for symlinking images
Adding support to symlink an image packaged using binman.
Signed-off-by: Neha Malcom Francis <n-francis@ti.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/binman/binman.rst | 3 | ||||
-rw-r--r-- | tools/binman/ftest.py | 9 | ||||
-rw-r--r-- | tools/binman/image.py | 6 | ||||
-rw-r--r-- | tools/binman/test/259_symlink.dts | 16 |
4 files changed, 34 insertions, 0 deletions
diff --git a/tools/binman/binman.rst b/tools/binman/binman.rst index 4ee6f41f35e..d8a3d776f46 100644 --- a/tools/binman/binman.rst +++ b/tools/binman/binman.rst @@ -780,6 +780,9 @@ align-default: This means that each section must specify its own default alignment, if required. +symlink: + Adds a symlink to the image with string given in the symlink property. + Examples of the above options can be found in the tests. See the tools/binman/test directory. diff --git a/tools/binman/ftest.py b/tools/binman/ftest.py index 261107b3354..232ac2cf185 100644 --- a/tools/binman/ftest.py +++ b/tools/binman/ftest.py @@ -5995,6 +5995,15 @@ fdt fdtmap Extract the devicetree blob from the fdtmap self.assertIn('Expected __bss_size symbol in vpl/u-boot-vpl', str(e.exception)) + def testSymlink(self): + """Test that image files can be named""" + retcode = self._DoTestFile('259_symlink.dts', debug=True, map=True) + self.assertEqual(0, retcode) + image = control.images['test_image'] + fname = tools.get_output_filename('test_image.bin') + sname = tools.get_output_filename('symlink_to_test.bin') + self.assertTrue(os.path.islink(sname)) + self.assertEqual(os.readlink(sname), fname) if __name__ == "__main__": unittest.main() diff --git a/tools/binman/image.py b/tools/binman/image.py index afc4b4d6430..6d4bff58436 100644 --- a/tools/binman/image.py +++ b/tools/binman/image.py @@ -38,6 +38,7 @@ class Image(section.Entry_section): repacked later test_section_timeout: Use a zero timeout for section multi-threading (for testing) + symlink: Name of symlink to image Args: copy_to_orig: Copy offset/size to orig_offset/orig_size after reading @@ -97,6 +98,7 @@ class Image(section.Entry_section): if filename: self._filename = filename self.allow_repack = fdt_util.GetBool(self._node, 'allow-repack') + self._symlink = fdt_util.GetString(self._node, 'symlink') @classmethod def FromFile(cls, fname): @@ -180,6 +182,10 @@ class Image(section.Entry_section): data = self.GetPaddedData() fd.write(data) tout.info("Wrote %#x bytes" % len(data)) + # Create symlink to file if symlink given + if self._symlink is not None: + sname = tools.get_output_filename(self._symlink) + os.symlink(fname, sname) def WriteMap(self): """Write a map of the image to a .map file diff --git a/tools/binman/test/259_symlink.dts b/tools/binman/test/259_symlink.dts new file mode 100644 index 00000000000..2ee1f7f05e2 --- /dev/null +++ b/tools/binman/test/259_symlink.dts @@ -0,0 +1,16 @@ +/dts-v1/; + +/ { + #address-cells = <1>; + #size-cells = <1>; + + binman { + multiple-images; + test_image { + filename = "test_image.bin"; + symlink = "symlink_to_test.bin"; + u-boot { + }; + }; + }; +}; |