Re: [OE-core] [PATCH 1/6] linux-yocto-dev: base AUTOREV on specified version
From: Anuj Mittal <hidden>
Date: 2021-07-08 06:29:12
On Mon, 2021-07-05 at 22:53 -0400, Bruce Ashfield wrote:
On Mon, Jul 5, 2021 at 10:49 PM Mittal, Anuj [off-list ref] wrote:quoted
Hi Bruce, On Mon, 2021-07-05 at 09:52 -0400, Bruce Ashfield wrote:quoted
Hi Anuj, Could you queue this patch for cherry-picking into your next hardknott update ? It is now in master, and I designed it to help folks out using our -stable releases so linux-yocto-dev will stay on the version that was available in the release timeframe.Yes, I will include it. Would it also help to switch one of the build configurations on autobuilder for future releases to use -dev kernel so it gets built/tested?Hmm, yes, that is a good idea. I'm not exactly sure how to do that, do you have a pointer ? I know we've talked about testing -dev on the autobuilder, so having a config for this in master would work, and then it would trickle into released versions for more testing.
The autobuilder configuration would have to be changed: https://git.yoctoproject.org/cgit/cgit.cgi/yocto-autobuilder-helper/tree/config.json This will have impact on the test matrix and the time it takes to build so I am not sure what exactly should be added or changed. Perhaps we can add one more step to qemu-alt configurations to build only the minimal image using linux-yocto-dev kernel and then run testimage? Thanks, Anuj
Brucequoted
Thanks, Anujquoted
Bruce On Wed, Jun 16, 2021 at 4:48 PM [off-list ref] wrote:quoted
From: Bruce Ashfield <redacted> 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. Signed-off-by: Bruce Ashfield <redacted> --- meta/classes/kernel-yocto.bbclass | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+)diff --git a/meta/classes/kernel-yocto.bbclassb/meta/classes/kernel-yocto.bbclass index ba139dd7f8..0df61cdef0 100644--- a/meta/classes/kernel-yocto.bbclass +++ b/meta/classes/kernel-yocto.bbclass@@ -631,7 +631,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_virt ua l/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 -- 2.19.1