public inbox for openembedded-core@lists.openembedded.org
 help / color / mirror / Atom feed
From: Paul Barker <paul@paulbarker.me.uk>
To: Bruce Ashfield <bruce.ashfield@gmail.com>
Cc: OpenEmbedded Core <openembedded-core@lists.openembedded.org>
Subject: Re: [PATCH] kernel.bbclass: Allow ${S} to be overridden
Date: Wed, 9 Nov 2016 18:08:54 +0000	[thread overview]
Message-ID: <20161109180854.130d6804@nuc.betafive.co.uk> (raw)
In-Reply-To: <CADkTA4NmhstuGn7cZLD-MGB1OdNbAFLkiOKrf20Bri0KSEsuQA@mail.gmail.com>

On Wed, 9 Nov 2016 08:09:09 -0500
Bruce Ashfield <bruce.ashfield@gmail.com> wrote:

> On Wed, Nov 9, 2016 at 5:04 AM, Burton, Ross <ross.burton@intel.com> wrote:
> 
> >
> > On 9 November 2016 at 02:23, Bruce Ashfield <bruce.ashfield@gmail.com>
> > wrote:
> >
> >> I can ack this patch, since no defaults change .. there's no risk to
> >> existing users.
> >>
> >
> > Saying that of course doomed the patch:
> >
> 
> interesting.
> 
> Paul: obviously you were building with this in place, and my local test did
> work here
> as well .. so any idea to the difference ?
> 
> Let me know if you want any help looking into it.
> 
> Cheers,
> 
> Bruce
> 

The reason for this patch is that I'm using a tarball for the kernel
sources in the new meta-arduino layer. That tarball doesn't get
extracted to ${STAGING_KERNEL_DIR} and so it needs to be copied over to
there. Looking at kernel.bbclass, it looks like the logic to do this is
present:


    # Old style kernels may set ${S} = ${WORKDIR}/git for example
    # We need to move these over to STAGING_KERNEL_DIR. We can't just
    # create the symlink in advance as the git fetcher can't cope with
    # the symlink.
    do_unpack[cleandirs] += " ${S} ${STAGING_KERNEL_DIR} ${B} ${STAGING_KERNEL_BUILDDIR}"
    do_clean[cleandirs] += " ${S} ${STAGING_KERNEL_DIR} ${B} ${STAGING_KERNEL_BUILDDIR}"
    base_do_unpack_append () {
        s = d.getVar("S", True)
        if s[-1] == '/':
            # drop trailing slash, so that os.symlink(kernsrc, s) doesn't use s as directory name and fail
            s=s[:-1]
        kernsrc = d.getVar("STAGING_KERNEL_DIR", True)
        if s != kernsrc:
            bb.utils.mkdirhier(kernsrc)
            bb.utils.remove(kernsrc, recurse=True)
            if d.getVar("EXTERNALSRC", True):
                # With EXTERNALSRC S will not be wiped so we can symlink to it
                os.symlink(s, kernsrc)
            else:
                import shutil
                shutil.move(s, kernsrc)
                os.symlink(kernsrc, s)
    }

The problem is we can't set S to anything unless we can override it.

I've now looked into this futher and it seems to be working for some
kernel recipes but not others. The issue may be that we have an
assignment for S in bitbake.conf:

    S = "${WORKDIR}/${BP}"

That's obviously overriding the 'S ?= ...' assignment when my patch is
applied where S isn't also explicitly assigned in the recipe, some
other class or include file.

I'm not sure on how precedence is determined if a variable is assigned
using '=' multiple times.

I'll have another look into it and see where I get. I have a workaround
in place for the meta-arduino layer for now so it doesn't need an
urgent fix.

However, if it turns out we can't reliably override S in a kernel recipe
then should we still have that comment and base_do_unpack_append() in
kernel.bbclass?

Thanks,
Paul


  reply	other threads:[~2016-11-09 21:13 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-22 18:38 [PATCH] kernel.bbclass: Allow ${S} to be overridden Paul Barker
2016-11-05 10:14 ` Paul Barker
2016-11-09  1:04   ` Burton, Ross
2016-11-09  2:23     ` Bruce Ashfield
2016-11-09 10:04       ` Burton, Ross
2016-11-09 11:34         ` Burton, Ross
2016-11-09 13:09         ` Bruce Ashfield
2016-11-09 18:08           ` Paul Barker [this message]
2016-11-09 23:42             ` Andre McCurdy
2016-11-11 19:39               ` Paul Barker
2016-11-14  7:59                 ` Patrick Ohly

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20161109180854.130d6804@nuc.betafive.co.uk \
    --to=paul@paulbarker.me.uk \
    --cc=bruce.ashfield@gmail.com \
    --cc=openembedded-core@lists.openembedded.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox