meta-freescale/classes/fsl-kernel-localversion.bbclass
Max Krummenacher 16a356ef0d fsl-kernel-localversion: fix SRCREV_machine and AUTOREV use cases
Depending on how one uses the Yocto kernel classes the kernels hash
is defined in either "SRCREV_machine" or "SRCREV". If "SRCREV_machine"
is in use, "SRCREV" stays at its bitbake default "INVALID".

If the "SRCREV_machine" or "SRCREV" is set to "AUTOREV" that value is
replaced by "AUTOINC".

If using "SRCREV_machine" and/or "AUTOREV" do_kernel_localversion fails

| run.do_kernel_localversion:158 exit 128 from 'head=`git --git-dir=.../.git rev-parse --verify --short INVALID 2> /dev/null`'

Cope with both use cases.

Fixes: 41537394 ("classes: make localversion classes deterministic")
Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
2023-12-04 15:16:51 +01:00

48 lines
1.5 KiB
Plaintext

# Freescale Kernel LOCALVERSION extension
#
# This allow to easy reuse of code between different kernel recipes
#
# The following options are supported:
#
# SCMVERSION Puts the Git hash in kernel local version
# LOCALVERSION Value used in LOCALVERSION (default to '+fslc')
#
# Copyright 2014, 2015 (C) O.S. Systems Software LTDA.
SCMVERSION ??= "y"
LOCALVERSION ??= "+fslc"
# LINUX_VERSION_EXTENSION is used as CONFIG_LOCALVERSION by kernel-yocto class
LINUX_VERSION_EXTENSION ?= "${LOCALVERSION}"
do_kernel_localversion[dirs] += "${S} ${B}"
do_kernel_localversion() {
# Fallback for recipes not able to use LINUX_VERSION_EXTENSION
if [ "${@bb.data.inherits_class('kernel-yocto', d)}" = "False" ]; then
echo 'CONFIG_LOCALVERSION="${LOCALVERSION}"' >> ${B}/.config
fi
if [ "${SCMVERSION}" = "y" ]; then
# Add GIT revision to the local version
if [ "${SRCREV}" = "INVALID" ]; then
hash=${SRCREV_machine}
else
hash=${SRCREV}
fi
if [ "$hash" = "AUTOINC" ]; then
branch=`git --git-dir=${S}/.git symbolic-ref --short -q HEAD`
head=`git --git-dir=${S}/.git rev-parse --verify --short origin/${branch} 2> /dev/null`
else
head=`git --git-dir=${S}/.git rev-parse --verify --short $hash 2> /dev/null`
fi
patches=`git --git-dir=${S}/.git rev-list --count $head..HEAD 2> /dev/null`
printf "%s%s%s%s" +g $head +p $patches > ${S}/.scmversion
sed -i -e "/CONFIG_LOCALVERSION_AUTO[ =]/d" ${B}/.config
echo "CONFIG_LOCALVERSION_AUTO=y" >> ${B}/.config
fi
}
addtask kernel_localversion before do_configure after do_patch do_kernel_configme