mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-11-03 21:48:15 +00:00 
			
		
		
		
	binman: Allow text directly in the node
At present text entries use an indirect method to specify the text to use, with a label pointing to the text itself. Allow the text to be directly written into the node. This is more convenient in cases where the text is constant. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
		
							parent
							
								
									cf54904a99
								
							
						
					
					
						commit
						aa88b50d82
					
				@ -312,6 +312,8 @@ Properties / Entry arguments:
 | 
			
		||||
        that contains the string to place in the entry
 | 
			
		||||
    <xxx> (actual name is the value of text-label): contains the string to
 | 
			
		||||
        place in the entry.
 | 
			
		||||
    <text>: The text to place in the entry (overrides the above mechanism).
 | 
			
		||||
        This is useful when the text is constant.
 | 
			
		||||
 | 
			
		||||
Example node:
 | 
			
		||||
 | 
			
		||||
@ -334,6 +336,13 @@ It is also possible to put the string directly in the node:
 | 
			
		||||
        message = "a message directly in the node"
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
or just:
 | 
			
		||||
 | 
			
		||||
    text {
 | 
			
		||||
        size = <8>;
 | 
			
		||||
        text = "some text directly in the node"
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
The text is not itself nul-terminated. This can be achieved, if required,
 | 
			
		||||
by setting the size of the entry to something larger than the text.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -22,6 +22,8 @@ class Entry_text(Entry):
 | 
			
		||||
            that contains the string to place in the entry
 | 
			
		||||
        <xxx> (actual name is the value of text-label): contains the string to
 | 
			
		||||
            place in the entry.
 | 
			
		||||
        <text>: The text to place in the entry (overrides the above mechanism).
 | 
			
		||||
            This is useful when the text is constant.
 | 
			
		||||
 | 
			
		||||
    Example node:
 | 
			
		||||
 | 
			
		||||
@ -44,15 +46,28 @@ class Entry_text(Entry):
 | 
			
		||||
            message = "a message directly in the node"
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
    or just:
 | 
			
		||||
 | 
			
		||||
        text {
 | 
			
		||||
            size = <8>;
 | 
			
		||||
            text = "some text directly in the node"
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
    The text is not itself nul-terminated. This can be achieved, if required,
 | 
			
		||||
    by setting the size of the entry to something larger than the text.
 | 
			
		||||
    """
 | 
			
		||||
    def __init__(self, section, etype, node):
 | 
			
		||||
        Entry.__init__(self, section, etype, node)
 | 
			
		||||
        label, = self.GetEntryArgsOrProps([EntryArg('text-label', str)])
 | 
			
		||||
        self.text_label = tools.ToStr(label) if type(label) != str else label
 | 
			
		||||
        value, = self.GetEntryArgsOrProps([EntryArg(self.text_label, str)])
 | 
			
		||||
        value = tools.ToBytes(value) if value is not None else value
 | 
			
		||||
        value = fdt_util.GetString(self._node, 'text')
 | 
			
		||||
        if value:
 | 
			
		||||
            value = tools.ToBytes(value)
 | 
			
		||||
        else:
 | 
			
		||||
            label, = self.GetEntryArgsOrProps([EntryArg('text-label', str)])
 | 
			
		||||
            self.text_label = label
 | 
			
		||||
            if self.text_label:
 | 
			
		||||
                value, = self.GetEntryArgsOrProps([EntryArg(self.text_label,
 | 
			
		||||
                                                            str)])
 | 
			
		||||
                value = tools.ToBytes(value) if value is not None else value
 | 
			
		||||
        self.value = value
 | 
			
		||||
 | 
			
		||||
    def ObtainContents(self):
 | 
			
		||||
 | 
			
		||||
@ -1286,7 +1286,7 @@ class TestFunctional(unittest.TestCase):
 | 
			
		||||
        expected = (tools.ToBytes(TEXT_DATA) +
 | 
			
		||||
                    tools.GetBytes(0, 8 - len(TEXT_DATA)) +
 | 
			
		||||
                    tools.ToBytes(TEXT_DATA2) + tools.ToBytes(TEXT_DATA3) +
 | 
			
		||||
                    b'some text')
 | 
			
		||||
                    b'some text' + b'more text')
 | 
			
		||||
        self.assertEqual(expected, data)
 | 
			
		||||
 | 
			
		||||
    def testEntryDocs(self):
 | 
			
		||||
 | 
			
		||||
@ -24,5 +24,10 @@
 | 
			
		||||
			text-label = "test-id4";
 | 
			
		||||
			test-id4 = "some text";
 | 
			
		||||
		};
 | 
			
		||||
		/* Put text directly in the node */
 | 
			
		||||
		text5 {
 | 
			
		||||
			type = "text";
 | 
			
		||||
			text = "more text";
 | 
			
		||||
		};
 | 
			
		||||
	};
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user