linux-yocto-dev: base AUTOREV on specified version

linux-yocto-dev tracks the latest mainline kernel, and uses
standard/* for that support.

Archived -dev versions are under v<kernel version>/standard/base.

This policy works, except that a released branch will still follow
the new kernel versions, causing potential breakage with newer
kernels than are supported in that release.

Rather than lock the SRCREVs and update branches in old releases,
we can preserve the AUTOREV nature of -dev, and allow them to
switch automatically to the archived branch based on the LINUX_VERSION
in the -dev recipe (which is unchanged in the release branch).

This is consistent with the other branch switching done for the
kernels and with the -dev workflow.

(From OE-Core rev: b3228b4140575bfc20cb4e5bade0f3737d374e86)

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 84e14b6116a7d1e52051c5c80be2d8e3db67c2d7)
Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Bruce Ashfield
2021-06-16 16:48:49 -04:00
committed by Richard Purdie
parent a85d14a72e
commit a78596e9e1

View File

@@ -614,7 +614,31 @@ do_validate_branches() {
# if SRCREV is AUTOREV it shows up as AUTOINC there's nothing to
# check and we can exit early
if [ "${machine_srcrev}" = "AUTOINC" ]; then
linux_yocto_dev='${@oe.utils.conditional("PREFERRED_PROVIDER_virtual/kernel", "linux-yocto-dev", "1", "", d)}'
if [ -n "$linux_yocto_dev" ]; then
git checkout -q -f ${machine_branch}
ver=$(grep "^VERSION =" ${S}/Makefile | sed s/.*=\ *//)
patchlevel=$(grep "^PATCHLEVEL =" ${S}/Makefile | sed s/.*=\ *//)
sublevel=$(grep "^SUBLEVEL =" ${S}/Makefile | sed s/.*=\ *//)
kver="$ver.$patchlevel"
bbnote "dev kernel: performing version -> branch -> SRCREV validation"
bbnote "dev kernel: recipe version ${LINUX_VERSION}, src version: $kver"
echo "${LINUX_VERSION}" | grep -q $kver
if [ $? -ne 0 ]; then
version="$(echo ${LINUX_VERSION} | sed 's/\+.*$//g')"
versioned_branch="v$version/$machine_branch"
machine_branch=$versioned_branch
force_srcrev="$(git rev-parse $machine_branch 2> /dev/null)"
if [ $? -ne 0 ]; then
bbfatal "kernel version mismatch detected, and no valid branch $machine_branch detected"
fi
bbnote "dev kernel: adjusting branch to $machine_branch, srcrev to: $force_srcrev"
fi
else
bbnote "SRCREV validation is not required for AUTOREV"
fi
elif [ "${machine_srcrev}" = "" ]; then
if [ "${SRCREV}" != "AUTOINC" ] && [ "${SRCREV}" != "INVALID" ]; then
# SRCREV_machine_<MACHINE> was not set. This means that a custom recipe