diff mbox series

[v3] kernel.bbclass: make do_symlink_kernelsrc reentrant

Message ID 20231218115310.438367-1-ecordonnier@snap.com
State New
Headers show
Series [v3] kernel.bbclass: make do_symlink_kernelsrc reentrant | expand

Commit Message

Etienne Cordonnier Dec. 18, 2023, 11:53 a.m. UTC
From: Etienne Cordonnier <ecordonnier@snap.com>

The function do_symlink_kernsrc is not reentrant in the case where S is defined
to a non-default value. This causes build-failures e.g. when building linux-yocto, then updating
poky to a commit which modifies kernel.bbclass, and then building linux-yocto again.

Bugzilla: https://bugzilla.yoctoproject.org/show_bug.cgi?id=15325

Signed-off-by: Etienne Cordonnier <ecordonnier@snap.com>
---
 meta/classes-recipe/kernel.bbclass | 5 +++++
 1 file changed, 5 insertions(+)

Comments

Etienne Cordonnier Dec. 18, 2023, 11:55 a.m. UTC | #1
patch v3: changed bb.warn to bb.info, improved comment, moved code to the
correct if block to avoid removal of kernsrc

On Mon, Dec 18, 2023 at 12:53 PM <ecordonnier@snap.com> wrote:

> From: Etienne Cordonnier <ecordonnier@snap.com>
>
> The function do_symlink_kernsrc is not reentrant in the case where S is
> defined
> to a non-default value. This causes build-failures e.g. when building
> linux-yocto, then updating
> poky to a commit which modifies kernel.bbclass, and then building
> linux-yocto again.
>
> Bugzilla: https://bugzilla.yoctoproject.org/show_bug.cgi?id=15325
>
> Signed-off-by: Etienne Cordonnier <ecordonnier@snap.com>
> ---
>  meta/classes-recipe/kernel.bbclass | 5 +++++
>  1 file changed, 5 insertions(+)
>
> diff --git a/meta/classes-recipe/kernel.bbclass
> b/meta/classes-recipe/kernel.bbclass
> index 9ff37f5c38..cdd5f8e9a1 100644
> --- a/meta/classes-recipe/kernel.bbclass
> +++ b/meta/classes-recipe/kernel.bbclass
> @@ -183,6 +183,11 @@ python do_symlink_kernsrc () {
>      s = d.getVar("S")
>      kernsrc = d.getVar("STAGING_KERNEL_DIR")
>      if s != kernsrc:
> +        if os.path.islink(s):
> +            # this happens for instance when a poky update modifies this
> class,
> +            # forcing symlink_kernsrc to run again after s was already
> moved to kernsrc
> +            bb.info("%s is already a symlink! Not symlinking kernel
> sources" % s)
> +            return 0
>          bb.utils.mkdirhier(kernsrc)
>          bb.utils.remove(kernsrc, recurse=True)
>          if s[-1] == '/':
> --
> 2.36.1.vfs.0.0
>
>
diff mbox series

Patch

diff --git a/meta/classes-recipe/kernel.bbclass b/meta/classes-recipe/kernel.bbclass
index 9ff37f5c38..cdd5f8e9a1 100644
--- a/meta/classes-recipe/kernel.bbclass
+++ b/meta/classes-recipe/kernel.bbclass
@@ -183,6 +183,11 @@  python do_symlink_kernsrc () {
     s = d.getVar("S")
     kernsrc = d.getVar("STAGING_KERNEL_DIR")
     if s != kernsrc:
+        if os.path.islink(s):
+            # this happens for instance when a poky update modifies this class,
+            # forcing symlink_kernsrc to run again after s was already moved to kernsrc
+            bb.info("%s is already a symlink! Not symlinking kernel sources" % s)
+            return 0
         bb.utils.mkdirhier(kernsrc)
         bb.utils.remove(kernsrc, recurse=True)
         if s[-1] == '/':