moving on to the next nitpicky issue i want to clarify, and that's *precisely* how overrides and appends are combined. i'm looking at section 3.3 in the bitbake manual and i don't think the examples there are as clear as they could be.
NOTE: in the YP docs, i would avoid examples that involve arbitrarily constructed words like "foo", as the reader might have no idea what that's supposed to represent, and whether they're supposed to define it, etc. in what follows, i'm using as my basis a qemuarm64 build, with "qemuarm64" as the obvious override. and so, to work. to see how overrides affect appends, i added the following to the top of local.conf: RDAY = 'initial' RDAY_qemuarm64_append = ' qemua' RDAY_append = ' appended' RDAY_append_qemuarm64 = ' aqemu' RDAY_qemuarm64 = 'initial_qemu' then ran "bitbake -e" and extracted just the part related to the above to get the following two sections, which i will now try to interpret: # $RDAY [5 operations] # set /home/rpjday/oe/builds/qemuarm64/conf/local.conf:1 # "initial" # _append /home/rpjday/oe/builds/qemuarm64/conf/local.conf:3 # " appended" # _append[qemuarm64] /home/rpjday/oe/builds/qemuarm64/conf/local.conf:4 # " aqemu" # override[qemuarm64]:_append /home/rpjday/oe/builds/qemuarm64/conf/local.conf:2 # " qemua" # override[qemuarm64]:set /home/rpjday/oe/builds/qemuarm64/conf/local.conf:5 # "initial_qemu" # pre-expansion value: # "initial_qemu qemua appended aqemu" RDAY="initial_qemu qemua appended aqemu" # $RDAY_qemuarm64 [2 operations] # _append /home/rpjday/oe/builds/qemuarm64/conf/local.conf:2 # " qemua" # set /home/rpjday/oe/builds/qemuarm64/conf/local.conf:5 # "initial_qemu" # pre-expansion value: # "initial_qemu qemua" RDAY_qemuarm64="initial_qemu qemua" since this is, in fact, a qemuarm64 build, "qemuarm64" is an active override so let's concentrate on that. my way of looking at this (and i could be totally offbase) is to say that, in this case, there are two different variables that are being assigned -- there is the generic RDAY variable, and there is the one related to the override, RDAY_qemuarm64, and every assignment must be interpreted as applying to one or the other. i'm going to ignore the processing of the RDAY variable, and concentrate on what happens with RDAY_qemuarm64, as this is where i think some developers get confused, so let's take this one line at a time. RDAY = 'initial' that line clearly assigns to the generic variable RDAY, so it's of little interest. moving on ... RDAY_qemuarm64_append = ' qemua' ah, now this line does an "append" to RDAY_qemuarm64, which should then affect the value we will finally use, so let's remember this append, which will be applied at expansion time. (in a funny way, i look at this as just doing an append operation to a variable -- that the variable being appended to has an active override is not, in fact, taken into account here -- it's just a variable.) next line: RDAY_append = ' appended' this is a regular append to the RDAY variable, so it is again of no interest related to what we're doing. and here's the line that i think throws people: RDAY_append_qemuarm64 = ' aqemu' at first glance, it looks like it will be part of the eventual qemuarm64 override value, but that's not what happens. as i read this (and i could be wrong), this assignment is examined, and the active "qemuarm64" override means that it will be processed, but the assignment that will be processed is simply: RDAY_append = ' aqemu' that is, the way i would interpret (and explain) the above is to say that, because the override is active, that string is appended to the NON-override version of the variable, RDAY. in short, the string 'aqemu' should NOT be part of the final variable value of RDAY in the context of a qemuarm64 override. finally, we have: RDAY_qemuarm64 = 'initial_qemu' which, because of the active 'qemuarm64' override, re-assigns that string to RDAY_qemuarm64. in short, due to the active override of qemuarm64, the only two lines that have any effect on the value of RDAY that will be *used* later in a qemuarm64 build are lines 2 and 5: RDAY = 'initial' RDAY_qemuarm64_append = ' qemua' <--- 2 RDAY_append = ' appended' RDAY_append_qemuarm64 = ' aqemu' RDAY_qemuarm64 = 'initial_qemu' <--- 5 and that is exactly what "bitbake -e" told us above: # $RDAY_qemuarm64 [2 operations] # _append /home/rpjday/oe/builds/qemuarm64/conf/local.conf:2 # " qemua" # set /home/rpjday/oe/builds/qemuarm64/conf/local.conf:5 # "initial_qemu" # pre-expansion value: # "initial_qemu qemua" RDAY_qemuarm64="initial_qemu qemua" does this make sense? in my experience, beginners have real difficulty trying to understand how to distinguish between these two operations: 1) RDAY_qemuarm64_append = ' qemua' 2) RDAY_append_qemuarm64 = ' aqemu' so the way i want to explain it is to think of two variables -- RDAY and RDAY_qemuarm64 -- that are being created, and in the end, in the context of a qemuarm64 build, it is the variable RDAY_qemuarm64 that will be used. the first line above does a regular append to RDAY_qemuarm64 (so it will be part of the final value), while the second line, when it is being parsed, because of the active override, will append to the regular variable RDAY, and will therefore *not* be part of the final value. so as long as the way i'm looking at this is correct, i think this explanation would help beginners understand the difference. thoughts? rday
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#48316): https://lists.yoctoproject.org/g/yocto/message/48316 Mute This Topic: https://lists.yoctoproject.org/mt/71105794/21656 Group Owner: [email protected] Unsubscribe: https://lists.yoctoproject.org/g/yocto/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
