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>
This commit is contained in:
Neha Malcom Francis 2022-10-17 16:36:25 +05:30 committed by Simon Glass
parent f29f98d1e4
commit 3545e8595c
4 changed files with 34 additions and 0 deletions

View File

@ -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.

View File

@ -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()

View File

@ -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

View File

@ -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 {
};
};
};
};