meta data for this page
  •  

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
sw:yocto:bitbake:operators [2022/08/16 21:44] niziaksw:yocto:bitbake:operators [2025/07/15 08:26] (current) niziak
Line 12: Line 12:
   * If ''+='' is parsed before ''?='', the latter will be omitted.   * If ''+='' is parsed before ''?='', the latter will be omitted.
   * **Solution**: use ''_append'' to unconditionally appends a value (but add space before value).   * **Solution**: use ''_append'' to unconditionally appends a value (but add space before value).
 +
 +====== Override operators ======
 +
 +  * '':append =" foo"'' - append literally so space is needed
 +  * '':prepend = "foo "'' - prepend literally so space is needed
 +  * '':remove = "bar foo"'' - no need to use space. List of string. Each string is treated as separate element to remove.
 +
 +The overrides are applied in this order, '':append'', '':prepend'', '':remove''. This implies it is not possible to re-append previously removed strings
 +
 +More: [[https://docs.yoctoproject.org/bitbake/bitbake-user-manual/bitbake-user-manual-metadata.html#removal-override-style-syntax|3.1.11 Removal (Override Style Syntax)]]
 +
 +====== SRC_URI_append ======
 +
 +When multiple ''.bbappend''s adds patches, order of patching is wrong.
 +
 +poky/meta/classes/patch.bbclass
 +<code python>
 +def src_patches(d, all=False, expand=True):
 +    import oe.patch
 +    return oe.patch.src_patches(d, all, expand)
 +</code>
 +
 +poky/meta/lib/oe/patch.py
 +<code python>
 +def src_patches(d, all=False, expand=True):
 +    fetch = bb.fetch2.Fetch([], d)
 +    patches = []
 +    sources = []
 +    for url in fetch.urls:
 +        local = patch_path(url, fetch, workdir, expand)
 +        if not local:
 +            if all:
 +                local = fetch.localpath(url)
 +                sources.append(local)
 +            continue
 +...
 +        localurl = bb.fetch.encodeurl(('file', '', local, '', '', patchparm))
 +        patches.append(localurl)
 +    
 +    if all:
 +        return sources
 +
 +    return patches
 +</code>
 +
 +
 +