All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Bruce Ashfield" <bruce.ashfield@gmail.com>
To: Matteo Croce <mcroce@linux.microsoft.com>
Cc: Patches and discussions about the oe-core layer
	<openembedded-core@lists.openembedded.org>
Subject: Re: [OE-core] [PATCH] recipes-kernel: add libbpf
Date: Wed, 17 Feb 2021 22:51:21 -0500	[thread overview]
Message-ID: <CADkTA4OsXBJk-a29_=Sx6-FBOgRAR7M3X+=RdVqju7PDLBFnmw@mail.gmail.com> (raw)
In-Reply-To: <CAFnufp1BS2mZxJ5TAu6bVX7h76_k2vrnbrLDj6o83UbOCb5M_w@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 6603 bytes --]

On Wed, Feb 17, 2021 at 9:32 PM Matteo Croce <mcroce@linux.microsoft.com>
wrote:

> On Mon, Feb 8, 2021 at 9:13 PM Bruce Ashfield <bruce.ashfield@gmail.com>
> wrote:
> >
> > On Mon, Feb 8, 2021 at 1:18 PM Matteo Croce <mcroce@linux.microsoft.com>
> wrote:
> > >
> > > From: Matteo Croce <mcroce@microsoft.com>
> > >
> > > Add a recipe to build libbpf from https://github.com/libbpf/libbpf
> > > The only patch fixes a build issue, and it's already merged upstream.
> >
> > Thanks for the submission! I have a few comments / questions.
> >
> > To get this into oe-core, we should be commenting / documenting why it
> > should be in core, versus another layer. The standard criteria is that
> > there are enough varied users and that the functionality is common
> > enough, that it belongs in core.
> >
> > There should also be some sort of oe-selftest for the functionality,
> > otherwise, it is hard to detect breakages. Some sort of application
> > that uses the library and that can be executed in qemu would be
> > enough.
> >
> > What are the kernel requirements ? CONFIG_BPF is selected by other
> > kernel configs (it has no menu entry, so it must be), is it that, or
> > something else that is the requirement (classic BFP?). If that option
> > is now always on, is that true for the reference kernel versions in
> > master (5.4 and 5.10).
> >
>
> Something like this will work? I see a similar trick in the uprobe recipe:
>
> do_compile() {
>  if grep -q "CONFIG_BPF_SYSCALL=y" ${STAGING_KERNEL_BUILDDIR}/.config
>  then
>   oe_runmake
>  else
>   bbnote "BFP syscall is not enabled"
>  fi
> }
>
>
Since it already depends on virtual/kernel, that will indeed work. I can't
say
that I'm a huge fan of checking the .config, since it leaves us open to
changing config option names, but that is way less common now than it
used to be, so it isn't a problem as a basic sanity check. As you mention,
uprobe already sets the prior art on it anyway :D



>
> > Finally, does this work across all the supported architectures ? if
> > not, we'll need compatibility settings.
> >
>
> I'm adding this:
>
> COMPATIBLE_HOST = "(x86_64.*|i.86.*|aarch64).*-linux"
>
>
That's reasonable. Interested folks can add other architectures if they
are willing to help out and support.



> > >
> > > Signed-off-by: Matteo Croce <mcroce@microsoft.com>
> > > ---
> > >  ...01-install-don-t-preserve-file-owner.patch | 29 +++++++++++++++++++
> > >  meta/recipes-kernel/libbpf/libbpf_0.3.bb      | 25 ++++++++++++++++
> > >  2 files changed, 54 insertions(+)
> > >  create mode 100644
> meta/recipes-kernel/libbpf/libbpf/0001-install-don-t-preserve-file-owner.patch
> > >  create mode 100644 meta/recipes-kernel/libbpf/libbpf_0.3.bb
> > >
> > > diff --git
> a/meta/recipes-kernel/libbpf/libbpf/0001-install-don-t-preserve-file-owner.patch
> b/meta/recipes-kernel/libbpf/libbpf/0001-install-don-t-preserve-file-owner.patch
> > > new file mode 100644
> > > index 0000000000..4e65d8d80a
> > > --- /dev/null
> > > +++
> b/meta/recipes-kernel/libbpf/libbpf/0001-install-don-t-preserve-file-owner.patch
> > > @@ -0,0 +1,29 @@
> > > +From 7df10d91db6f533cc0f6c09f4ae8ad92918c6160 Mon Sep 17 00:00:00 2001
> > > +From: Matteo Croce <mcroce@microsoft.com>
> > > +Date: Tue, 26 Jan 2021 12:41:47 +0100
> > > +Subject: [PATCH] install: don't preserve file owner
> > > +
> > > +'cp -p' preserve file ownership, this may leave files owned by the
> > > +current in user in /lib .
> > > +
> >
> > We need the upstream status documented here, not just in the commit
> message.
> >
>
> You want the upstream commit, or just saying that it will go into 0.4 is
> enough?
>
>
We normally do something like:

Upstream-status: submitted (0.4 release) <link to the pull request or
mailing list submission>

That way it is abundantly clear that we aren't carrying it ourselves, and
when we can drop it.



> > > +Signed-off-by: Matteo Croce <mcroce@microsoft.com>
> > > +---
> > > + Makefile | 2 +-
> > > + 1 file changed, 1 insertion(+), 1 deletion(-)
> > > +
> > > +diff --git a/Makefile b/Makefile
> > > +index da33613..ab66edc 100644
> > > +--- a/Makefile
> > > ++++ b/Makefile
> > > +@@ -130,7 +130,7 @@ define do_s_install
> > > +       $(Q)if [ ! -d '$(DESTDIR)$2' ]; then            \
> > > +               $(INSTALL) -d -m 755 '$(DESTDIR)$2';    \
> > > +       fi;
> > > +-      $(Q)cp -fpR $1 '$(DESTDIR)$2'
> > > ++      $(Q)cp -fR $1 '$(DESTDIR)$2'
> > > + endef
> > > +
> > > + install: all install_headers install_pkgconfig
> > > +--
> > > +2.29.2
> > > +
> > > diff --git a/meta/recipes-kernel/libbpf/libbpf_0.3.bb
> b/meta/recipes-kernel/libbpf/libbpf_0.3.bb
> > > new file mode 100644
> > > index 0000000000..402e57257f
> > > --- /dev/null
> > > +++ b/meta/recipes-kernel/libbpf/libbpf_0.3.bb
> > > @@ -0,0 +1,25 @@
> > > +SUMMARY = "Library for BPF handling"
> > > +DESCRIPTION = "Library for BPF handling"
> > > +HOMEPAGE = "https://github.com/libbpf/libbpf"
> > > +SECTION = "libs"
> > > +LICENSE = "LGPLv2.1+"
> > > +
> > > +LIC_FILES_CHKSUM =
> "file://../LICENSE.LPGL-2.1;md5=b370887980db5dd40659b50909238dbd"
> > > +
> > > +DEPENDS = "zlib elfutils"
> > > +
> > > +SRC_URI = "git://github.com/libbpf/libbpf.git;protocol=https"
> > > +SRCREV = "051a4009f94d5633a8f734ca4235f0a78ee90469"
> > > +
> > > +# Backported from version 0.4
> > > +SRC_URI += "file://0001-install-don-t-preserve-file-owner.patch"
> > > +
> > > +S = "${WORKDIR}/git/src"
> > > +
> > > +inherit pkgconfig
> >
> > I see inherit pkgconfig, but no PACKAGECONFIG setting. Is it actually
> > used here ?
> >
> > > +
> > > +do_install() {
> > > +       make install DESTDIR=${D} LIBDIR=${libdir}
> >
> > Rather than a bare 'make' call, this should likely be oe_runmake
> >
>
> Right.
> While at it, what about adding DESTDIR and LIBDIR to ${EXTRA_OEMAKE}?
> They are ignored in the build phase
>
>
yep. that is doable. oe_runmake will pass them along if in the right
variable.

Bruce



> > Bruce
> >
> > > +}
> > > +
> > > +BBCLASSEXTEND = "native"
> > > --
> > > 2.29.2
> > >
> > >
> > > 
> > >
> >
> >
> > --
> > - Thou shalt not follow the NULL pointer, for chaos and madness await
> > thee at its end
> > - "Use the force Harry" - Gandalf, Star Trek II
>
> Regards,
> --
> per aspera ad upstream
>


-- 
- Thou shalt not follow the NULL pointer, for chaos and madness await thee
at its end
- "Use the force Harry" - Gandalf, Star Trek II

[-- Attachment #2: Type: text/html, Size: 10750 bytes --]

  reply	other threads:[~2021-02-18  3:51 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-08 18:17 [PATCH] recipes-kernel: add libbpf Matteo Croce
2021-02-08 20:13 ` [OE-core] " Bruce Ashfield
2021-02-08 20:24   ` Bruce Ashfield
2021-02-08 21:22   ` Matteo Croce
2021-02-08 21:34     ` Bruce Ashfield
2021-02-09 16:44       ` Khem Raj
2021-02-09 17:02         ` Matteo Croce
2021-02-18  2:31   ` Matteo Croce
2021-02-18  3:51     ` Bruce Ashfield [this message]
2021-02-18 23:04       ` Matteo Croce
2021-02-22 16:54         ` Bruce Ashfield

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='CADkTA4OsXBJk-a29_=Sx6-FBOgRAR7M3X+=RdVqju7PDLBFnmw@mail.gmail.com' \
    --to=bruce.ashfield@gmail.com \
    --cc=mcroce@linux.microsoft.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 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.