From: <Mikko.Rapeli@bmw.de>
To: <richard.purdie@linuxfoundation.org>
Cc: openembedded-core@lists.openembedded.org
Subject: Re: [PATCH] kernel.bbclass: allow exporting files from kernel recipes to sysroot
Date: Mon, 24 Sep 2018 14:19:54 +0000 [thread overview]
Message-ID: <20180924141953.GM9430@hiutale> (raw)
In-Reply-To: <6e907abfede0cad4292c4c44ea74f4f8bbe90093.camel@linuxfoundation.org>
On Mon, Sep 24, 2018 at 02:56:49PM +0100, richard.purdie@linuxfoundation.org wrote:
> On Mon, 2018-09-24 at 09:43 -0400, Bruce Ashfield wrote:
> > > On Mon, 2018-09-24 at 13:20 +0000, Mikko.Rapeli@bmw.de wrote:
> > > > On Mon, Sep 24, 2018 at 02:11:13PM +0100, Richard Purdie wrote:
> > > > > On Mon, 2018-09-24 at 12:19 +0000, Mikko.Rapeli@bmw.de wrote:
> > > > > > > That was one old way, but not the only. And not for
> > > > > > > exposing
> > > > > > > non
> > > > > > > uapi
> > > > > > > headers.
> > > > > >
> > > > > > What other ways exist?
> > > > > >
> > > > > > I don't care how, but I must export custom kernel specific
> > > > > > headers
> > > > > > and
> > > > > > other files to other recipes in a build in ways which are
> > > > > > compatible
> > > > > > with
> > > > > > yocto upstream.
> > > > > >
> > > > > > I have not seen any documented ways for this.
> > > > >
> > > > > It may not be documented, perhaps because its actually very
> > > > > simple.
> > > > >
> > > > > Any recipe can expose headers into the recipe sysroot, they
> > > > > simply
> > > > > install them where needed in do_install as normal.
> > > > >
> > > > > So all you need is a recipe which installs the right headers
> > > > > and
> > > > > then
> > > > > you DEPEND on that recipe. Where that recipe gets the headers
> > > > > isn't
> > > > > relevant.
> > > >
> > > > No, this does not work on sumo. My patch is needed for this to
> > > > work.
> > > >
> > > > Without my patch, users of kernel.bbclass have zero files in
> > > > tmp/sysroot-components even if they install extra files and extra
> > > > header only binary packages.
> > > >
> > > > A generated image or SDK will have the files if the binary
> > > > package is
> > > > installed but sysroot not.
> > >
> > > I was replying from the perspective of how this should work in
> > > general.
> > > I agree that for this to work with a kernel recipe we do need the
> > > change that started this thread and that is probably a reasonable
> > > thing
> > > to do.
> >
> > We have a Yocto bugzilla that can be closed if you are ok with the
> > approach.
> >
> > To answer the other question about what I've done (and proposed
> > before) was
> > to maintain the kernel.bbclass protections, all call the staging
> > routines myself.
> >
> > i.e.
> >
> > do_install_append() {
> > make headers_install
> > INSTALL_HDR_PATH=${D}${KERNEL_ALT_HEADER_DIR}
> >
> > # remove export artifacts
> > find ${D}${KERNEL_ALT_HEADER_DIR} -name .install -exec rm {}
> > \;
> > find ${D}${KERNEL_ALT_HEADER_DIR} -name ..install.cmd -exec
> > rm {} \;
> > }
> >
> > sysroot_stage_all_append() {
> > sysroot_stage_dir ${D}${KERNEL_ALT_HEADER_DIR}
> > ${SYSROOT_DESTDIR}${KERNEL_ALT_HEADER_DIR}
> > }
> >
> > And that works to get things exported.
>
> I'm fine with this approach, I'm kind of surprised anyone thinks
> otherwise as I've always assumed this was what people were doing!
>
> I'd propose that:
>
> a) We document the above approach. I prefer it to Mikko's patch since
> it doesn't mess with the blacklist and installs exactly what the recipe
> wants to install which is how we normally write recipes.
> b) To document it, I suggest a comment/reference in kernel.bbclass and
> we add something somewhere in the manual. Adding Scott Rifenbark to cc
> so he can help us sort this out.
> c) Close out the bug Bruce mentions with this documentation as a
> reference.
>
> I think this means we probably don't need Mikko's patch and it is
> mainly a documentation issue?
My only complaint is that it's not obvious in a kernel recipe that
more than do_install() is needed to export files to sysroot.
It's easy to miss the sysroot_stage_all_append() step.
Overwriting files from kernel recipe fails when they are used to prepare
sysroots for user recipes, but not when the kernel recipe is build:
ERROR: linux-image-1.0.0-r21 do_prepare_recipe_sysroot: The file /usr/include/scsi/scsi_bsg_fc.h is installed by both linux-libc-headers and linux, aborting
ERROR: linux-image-1.0.0-r21 do_prepare_recipe_sysroot: Function failed: extend_recipe_sysroot
In this case linux recipe added kernel specific headers to /usr/include
which conflict with linux-libc-headers and this was only cought when building
the kernel image.
-Mikko
next prev parent reply other threads:[~2018-09-24 14:19 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-21 11:49 [PATCH] kernel.bbclass: allow exporting files from kernel recipes to sysroot Mikko Rapeli
2018-09-21 12:38 ` Bruce Ashfield
2018-09-24 7:25 ` Mikko.Rapeli
2018-09-24 12:12 ` Bruce Ashfield
2018-09-24 12:19 ` Mikko.Rapeli
2018-09-24 13:11 ` Richard Purdie
2018-09-24 13:20 ` Mikko.Rapeli
2018-09-24 13:38 ` richard.purdie
2018-09-24 13:42 ` Mikko.Rapeli
2018-09-24 13:44 ` richard.purdie
2018-09-24 13:46 ` Bruce Ashfield
2018-09-24 13:48 ` Bruce Ashfield
2018-09-24 13:55 ` Mikko.Rapeli
2018-09-24 14:16 ` richard.purdie
2018-09-24 13:43 ` Bruce Ashfield
2018-09-24 13:56 ` richard.purdie
2018-09-24 14:19 ` Mikko.Rapeli [this message]
2018-09-24 14:34 ` richard.purdie
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=20180924141953.GM9430@hiutale \
--to=mikko.rapeli@bmw.de \
--cc=openembedded-core@lists.openembedded.org \
--cc=richard.purdie@linuxfoundation.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.