summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Wagenknecht <dwagenknecht@emlix.com>2023-11-28 11:47:34 +0100
committergithub-actions[bot] <github-actions[bot]@users.noreply.github.com>2023-11-28 16:00:39 +0000
commit92b21b1c2aa70deb8b92a35b094fc10235afe22c (patch)
tree24b3cde8dbc3550e949e4abab0844fa5771144fa
parentdfd01d7bdf87b6bda254780a35659975d2b2c66e (diff)
downloadmeta-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.bbclass5
-rw-r--r--classes/fsl-u-boot-localversion.bbclass7
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}"
17do_compile:prepend() { 17do_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