diff options
author | Daniel Wagenknecht <dwagenknecht@emlix.com> | 2023-11-28 11:47:34 +0100 |
---|---|---|
committer | github-actions[bot] <github-actions[bot]@users.noreply.github.com> | 2023-11-28 16:00:39 +0000 |
commit | 92b21b1c2aa70deb8b92a35b094fc10235afe22c (patch) | |
tree | 24b3cde8dbc3550e949e4abab0844fa5771144fa | |
parent | dfd01d7bdf87b6bda254780a35659975d2b2c66e (diff) | |
download | meta-freescale-backport-1694-to-kirkstone.tar.gz |
classes: make localversion classes deterministicbackport-1694-to-kirkstone
The localversion string built into the kernel and u-boot should be
deterministic. With OpenEmbedded it is common practice to apply patches
to the sources. The commit id of HEAD will differ each time the patching
step is rerun. With the previous implementation of the fsl-{kernel,u-
boot}-localversion classes this produced non-deterministic commit ids to
be used. This is undesireable, because the commit-id read from the
version string during runtime is not present in the sources. It also
caused problems when building out-of-tree kernel-modules if the kernel
itself was taken from sstate cache but the kernel-module needed to be
rebuild and retriggered the kernels do_patch task (see #961).
Rework to produce a deterministic string that will use the commit id
given as SRCREV and count the number of patches applied on top.
With e.g. commit id 11aabbcc and 5 patches this will result in a version
string
+g11aabbcc+p5
Fixes: https://github.com/Freescale/meta-freescale/issues/961
Signed-off-by: Daniel Wagenknecht <dwagenknecht@emlix.com>
(cherry picked from commit 415373942a8f3ca4c6f04dff35823c065f43d696)
-rw-r--r-- | classes/fsl-kernel-localversion.bbclass | 5 | ||||
-rw-r--r-- | classes/fsl-u-boot-localversion.bbclass | 7 |
2 files changed, 7 insertions, 5 deletions
diff --git a/classes/fsl-kernel-localversion.bbclass b/classes/fsl-kernel-localversion.bbclass index 98fcfa05..f7e0908f 100644 --- a/classes/fsl-kernel-localversion.bbclass +++ b/classes/fsl-kernel-localversion.bbclass | |||
@@ -25,8 +25,9 @@ do_kernel_localversion() { | |||
25 | 25 | ||
26 | if [ "${SCMVERSION}" = "y" ]; then | 26 | if [ "${SCMVERSION}" = "y" ]; then |
27 | # Add GIT revision to the local version | 27 | # Add GIT revision to the local version |
28 | head=`git --git-dir=${S}/.git rev-parse --verify --short HEAD 2> /dev/null` | 28 | head=`git --git-dir=${S}/.git rev-parse --verify --short ${SRCREV} 2> /dev/null` |
29 | printf "%s%s" +g $head > ${S}/.scmversion | 29 | patches=`git --git-dir=${S}/.git rev-list --count ${SRCREV}..HEAD 2> /dev/null` |
30 | printf "%s%s%s%s" +g $head +p $patches > ${S}/.scmversion | ||
30 | 31 | ||
31 | sed -i -e "/CONFIG_LOCALVERSION_AUTO[ =]/d" ${B}/.config | 32 | sed -i -e "/CONFIG_LOCALVERSION_AUTO[ =]/d" ${B}/.config |
32 | echo "CONFIG_LOCALVERSION_AUTO=y" >> ${B}/.config | 33 | echo "CONFIG_LOCALVERSION_AUTO=y" >> ${B}/.config |
diff --git a/classes/fsl-u-boot-localversion.bbclass b/classes/fsl-u-boot-localversion.bbclass index ebde8ea7..d160ca98 100644 --- a/classes/fsl-u-boot-localversion.bbclass +++ b/classes/fsl-u-boot-localversion.bbclass | |||
@@ -17,9 +17,10 @@ UBOOT_LOCALVERSION = "${LOCALVERSION}" | |||
17 | do_compile:prepend() { | 17 | do_compile:prepend() { |
18 | if [ "${SCMVERSION}" = "y" ]; then | 18 | if [ "${SCMVERSION}" = "y" ]; then |
19 | # Add GIT revision to the local version | 19 | # Add GIT revision to the local version |
20 | head=`cd ${S} ; git rev-parse --verify --short HEAD 2> /dev/null` | 20 | head=`cd ${S} ; git rev-parse --verify --short ${SRCREV} 2> /dev/null` |
21 | printf "%s%s%s" "${UBOOT_LOCALVERSION}" +g $head > ${S}/.scmversion | 21 | patches=`cd ${S} ; git rev-list --count ${SRCREV}..HEAD 2> /dev/null` |
22 | printf "%s%s%s" "${UBOOT_LOCALVERSION}" +g $head > ${B}/.scmversion | 22 | printf "%s%s%s%s%s" "${UBOOT_LOCALVERSION}" +g $head +p $patches > ${S}/.scmversion |
23 | printf "%s%s%s%s%s" "${UBOOT_LOCALVERSION}" +g $head +p $patches > ${B}/.scmversion | ||
23 | else | 24 | else |
24 | printf "%s" "${UBOOT_LOCALVERSION}" > ${S}/.scmversion | 25 | printf "%s" "${UBOOT_LOCALVERSION}" > ${S}/.scmversion |
25 | printf "%s" "${UBOOT_LOCALVERSION}" > ${B}/.scmversion | 26 | printf "%s" "${UBOOT_LOCALVERSION}" > ${B}/.scmversion |