On Thu, Dec 26, 2024 at 12:10:04PM +0100, Geert Uytterhoeven wrote: > On Thu, Dec 26, 2024 at 7:54 AM David Gibson > <david@xxxxxxxxxxxxxxxxxxxxx> wrote: > > On Fri, Dec 20, 2024 at 09:00:14PM +0530, Ayush Singh wrote: > > > On 16/12/24 11:39, David Gibson wrote: > > > > On Tue, Dec 10, 2024 at 04:34:17PM +0100, Andreas Gnau wrote: > > > > > If we add /append-property/, why not add /prepend-property/ as well? This is > > > > > not only "nice for consistency", but it would also enable solving a problem > > > > > where SoC compatible strings from dtsi [1] need to be repeated in board dts > > > > > [2], because one cannot prepend to an existing property. > > > > > > > > > > ``` > > > > > dts-v1/; > > > > > / { > > > > > compatible = "soc-vendor,soc1234"; > > > > > }; > > > > > > > > > > / { > > > > > /prepend-property/ compatible = "board-vendor,board-xyz"; > > > > > }; > > > > > ``` > > > > > > > > > > What do you think? > > > > So, this kind of demonstrates why I don't love /append-property/ as a > > > > proposed syntax. The way I'd prefer to do this, ideally, is to allow > > > > properties to be described as expressions. We already have integer > > > > expressions that can be used in < > context, but I had intended to > > > > extent to string and bytestring expressions - but I've never had the > > > > time to implement that. > > > > > > > > Under that proposal, I'd expect appending to look something like: > > > > str-prop = /previous-value/, "1"; > > > > > > > > Prepending, > > > > str-prop = "1", /previous-value/; > > > > > > > > .. and you could do both at once in the obvious way. > > > > > > > > The downside, of course, is that this is a much more complicated > > > > proposal to implement. Parsing that syntax isn't too hard, but I > > > > think doing it sensibly will need some structural changes in order to > > > > evaluate property values as expressions, rather than simply > > > > constructing the properties directly left to right. In particular the > > > > interactions between expression syntax and within-property labels (and > > > > other markers) could be fiddly to get right. > > > > > > Do you wish to allow `/previous-value/` to be repeated in the same property? > > > Something like this: > > > > > > str-prop = "1", /previous-value/, "2", /previous-value/, "3"; > > > > Yes, I'd expect that to work. Note that I don't particularly like the > > name "/previous-value/" - that was just an example to demonstrate what > > I had in mind. If anyone can think of a better or more succinct name > > for this, please suggest it. > > Something like "/./"? (dot is also used in assembler for the current address) > So e.g. > > str-prop = "1", /./, "2", /./, "3"; /./ might work. > Or would that be too short? "/orig/"? It's not too short but I think "/orig/" is a bad idea. In cases where the value of a property is modified more than twice, this would refer to the most recent previous value, not the "original" / first value assigned. "/prev/" might work, though. -- David Gibson (he or they) | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you, not the other way | around. http://www.ozlabs.org/~dgibson
Attachment:
signature.asc
Description: PGP signature