On 3/4/25 10:24 AM, Rasmus Villemoes wrote:
On Sun, Mar 02 2025, Marek Vasut <ma...@denx.de> wrote:

The .scmversion is used by oe-core to append U-Boot version string.

LOCALVERSION is not fully compatible replacement as it adds trailing
"-dirty" string at the end of version string in case the U-Boot git
tree contains uncommitted changes. This behavior itself is correct.
However, OE builds do clone U-Boot sources from git and may apply
additional patches on top, which are not tracked in U-Boot git tree,
but rather in the OE metalayer git tree, which leads to the addition
of "-dirty" string as well.


... which is then _also_ correct, no?

No

It means that U-Boot is built from
v2024.10-321-gabcd1234 plus some entirely unknown additional patches,

This is not true, the patches are known and tracked in the OE layers.

They are not uncommited ad-hoc local changes.

which can be anything from fixing a typo in a printf string to
completely overhauling everything.

The .scmversion used by oe-core used to replace the version string
suffix fully, including the "-dirty" string. Reinstate support for
the .scmversion to let OE core do exactly that as it used to do it.

No, please don't. Let's not let this script deviate from upstream linux
again, and let's instead try to fix the bug in oe-core

There is no bug in oe-core.

U-Boot commit Fixes: 5c02350fa03d ("scripts/setlocalversion: sync with linux v6.9") introduced breaking change, the removal of .scmversion support . This patch fixes it. It is as simple as that.

that (ab)uses
this legacy .scmversion file. The fundamental bug is that oe-core
creates these .scmversion files unconditionally, even if they end up
empty, making CONFIG_LOCALVERSION_AUTO completely useless. I have long
since worked around those bugs in my own u-boot and linux recipes, but
I'd much rather be able to eventually drop those workarounds.

Why doesn't doing what kernel.bbclass has done,

export LOCALVERSION = "${UBOOT_LOCALVERSION}"
U-Boot and Linux builds in OE-core work differently.

Linux uses SCC to apply patches onto a git tree (i.e. it behaves like "git am *patch") and therefore the "-dirty" suffix is not added.

U-Boot recipe uses plain bitbake do_patch to apply patches, and therefore the build tree is effectively dirty and the "-dirty" suffix is added. The .scmversion overrides the dirty suffix.

Reply via email to