Message ID | 20250227145529.8651-1-twoerner@gmail.com |
---|---|
State | New |
Headers | show |
Series | [meta-rockchip] rauc-conf: set arch to machine | expand |
Hi Trevor, On 2/27/25 3:55 PM, Trevor Woerner via lists.yoctoproject.org wrote: > Since this bbappend is modifying the rauc config file with a MACHINE-specific > search-and-replace, the architecture setting of the package needs to be > MACHINE-specific as well. Otherwise if multiple images are built for the same > SoC, the sstate mechanism will use the first-built SoC copy of the > rauc/system.conf file, which may or may not match this device's MACHINE > setting. > > At runtime this leads to compatible mismatch issues: > > # rauc install <bundle> > ... > LastError: Compatible mismatch: Expected 'nanopi-r2s' but bundle manifest has 'rock-pi-e' > Uuuuuuuuh, that sounds very odd. The sstate-cache should be invalidated because MACHINE differs in the do_install:prepend:rk-rauc-demo task no? Can you check if MACHINE makes it to the sstate-cache? It could be that somehow BitBake doesn't detect it should be monitoring changes for MACHINE and invalidate the cache for that? I guess we could also add MACHINE to do_install[vardeps] only when rk-rauc-demo feature is selected? In any case, making the package MACHINE_ARCH specific is the good thing to do, though... maybe we want to make it happen only when rk-rauc-demo feature is enabled otherwise including this layer even for non-Rockchip machines (or when rk-rauc-demo feature is not selected) will still make the package machine-specific? Cheers, Quentin
diff --git a/dynamic-layers/rk-rauc-demo/recipes-core/rauc/rauc-conf.bbappend b/dynamic-layers/rk-rauc-demo/recipes-core/rauc/rauc-conf.bbappend index 281eb2c4de91..e19db234b9b5 100644 --- a/dynamic-layers/rk-rauc-demo/recipes-core/rauc/rauc-conf.bbappend +++ b/dynamic-layers/rk-rauc-demo/recipes-core/rauc/rauc-conf.bbappend @@ -1,5 +1,7 @@ inherit rk-rauc-demo-features-check +PACKAGE_ARCH = "${MACHINE_ARCH}" + FILESEXTRAPATHS:prepend:rk-rauc-demo := "${THISDIR}/files:" do_install:prepend:rk-rauc-demo() {
Since this bbappend is modifying the rauc config file with a MACHINE-specific search-and-replace, the architecture setting of the package needs to be MACHINE-specific as well. Otherwise if multiple images are built for the same SoC, the sstate mechanism will use the first-built SoC copy of the rauc/system.conf file, which may or may not match this device's MACHINE setting. At runtime this leads to compatible mismatch issues: # rauc install <bundle> ... LastError: Compatible mismatch: Expected 'nanopi-r2s' but bundle manifest has 'rock-pi-e' These errors can be worked around by using the "--ignore-compatible" cmdline switch to the "rauc install" command. Or can be fixed by updating the on-device /etc/rauc/system.conf file and restarting the rauc.service systemd service unit. This patch, however, is the more correct, build-time, fix, rather than having to fix the issue at run-time. Signed-off-by: Trevor Woerner <twoerner@gmail.com> --- .../rk-rauc-demo/recipes-core/rauc/rauc-conf.bbappend | 2 ++ 1 file changed, 2 insertions(+)