> -----Original Message-----
> From: openembedded-core@lists.openembedded.org <openembedded-
> c...@lists.openembedded.org> On Behalf Of Andre McCurdy
> Sent: den 21 april 2022 01:25
> To: Paul Gortmaker <paul.gortma...@windriver.com>
> Cc: OE Core mailing list <openembedded-core@lists.openembedded.org>;
> Richard Purdie <richard.pur...@linuxfoundation.org>
> Subject: Re: [OE-core] [PATCH] devshell: introduce intercepts as per
> native / nativesdk
> 
> On Wed, Apr 20, 2022 at 8:12 AM Paul Gortmaker
> <paul.gortma...@windriver.com> wrote:
> >
> > In a devshell, recent versions of git will complain if the repo is owned
> > by someone other than the current UID - consider this example:
> >
> >  ------
> >   bitbake -c devshell linux-yocto
> >
> >   [...]
> >
> >   kernel-source#git branch
> >   fatal: unsafe repository ('/home/paul/poky/build-qemuarm64/tmp/work-
> shared/qemuarm64/kernel-source' is owned by someone else)
> >   To add an exception for this directory, call:
> >
> >         git config --global --add safe.directory /home/paul/poky/build-
> qemuarm64/tmp/work-shared/qemuarm64/kernel-source
> >   kernel-source#
> >  ------
> >
> > Of course the devshell has UID zero and the "real" UID is for "paul" in
> > this case.  And so recent git versions complain.
> >
> > As the whole purpose of the devshell is to invoke a shell where
> development
> > can take place, having a non-functional git is clearly unacceptable.
> >
> > Richard suggested we could use PSEUDO_UNLOAD=1 to evade this issue, and
> I
> > suggested we probably will see other similar instances like this and
> should
> > make use of PATH to intercept via devshell wrappers - conveniently we
> already
> > have examples of this.
> >
> > Here, we copy the existing "ar" example and tune it to the needs of git
> to
> > combine Richard's suggestion and mine.
> >
> > As such we now also can store commit logs and use send-email with our
> user
> > specific settings, instead of "root", so in additon to fixing basic
> > commands like "git branch" it should also increase general usefulness.
> 
> It looks like this will address the performance issues of using git
> from a devshell too. Trying to run git log, git blame, etc for
> largeish repos in a devshell is annoyingly slow due to the overhead of
> pseudo.
> 
> I always wondered what people do in a devshell which actually _does_
> need to run under pseudo...

To look at the output from, e.g., do_install to see it the way bitbakes 
sees it when it comes to users/groups of the files.

//Peter

> 
> > Cc: Richard Purdie <richard.pur...@linuxfoundation.org>
> > Signed-off-by: Paul Gortmaker <paul.gortma...@windriver.com>
> >
> > diff --git a/meta/classes/devshell.bbclass
> b/meta/classes/devshell.bbclass
> > index 62dc958d9a4a..7ac134e0950f 100644
> > --- a/meta/classes/devshell.bbclass
> > +++ b/meta/classes/devshell.bbclass
> > @@ -2,6 +2,8 @@ inherit terminal
> >
> >  DEVSHELL = "${SHELL}"
> >
> > +PATH:prepend = "${COREBASE}/scripts/devshell-intercept:"
> > +
> >  python do_devshell () {
> >      if d.getVarFlag("do_devshell", "manualfakeroot"):
> >         d.prependVar("DEVSHELL", "pseudo ")
> > diff --git a/scripts/devshell-intercept/git b/scripts/devshell-
> intercept/git
> > new file mode 100755
> > index 000000000000..8adf5c9ecb71
> > --- /dev/null
> > +++ b/scripts/devshell-intercept/git
> > @@ -0,0 +1,19 @@
> > +#!/usr/bin/env python3
> > +#
> > +# Wrapper around 'git' that doesn't think we are root
> > +
> > +import os
> > +import shutil
> > +import sys
> > +
> > +os.environ['PSEUDO_UNLOAD'] = '1'
> > +
> > +# calculate path to the real 'git'
> > +path = os.environ['PATH']
> > +path = path.replace(os.path.dirname(sys.argv[0]), '')
> > +real_git = shutil.which('git', path=path)
> > +
> > +if len(sys.argv) == 1:
> > +    os.execl(real_git, 'git')
> > +
> > +os.execv(real_git, sys.argv)
> > --
> > 2.17.1
> >
> >
> >
> >
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#164756): 
https://lists.openembedded.org/g/openembedded-core/message/164756
Mute This Topic: https://lists.openembedded.org/mt/90585970/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to