diff mbox series

[meta-rockchip] rauc-conf: set arch to machine

Message ID 20250227145529.8651-1-twoerner@gmail.com
State New
Headers show
Series [meta-rockchip] rauc-conf: set arch to machine | expand

Commit Message

Trevor Woerner Feb. 27, 2025, 2:55 p.m. UTC
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(+)

Comments

Quentin Schulz Feb. 28, 2025, 1:46 p.m. UTC | #1
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 mbox series

Patch

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() {