[bitbake-devel] [PATCH] fetch2/gitsm: Unpack shallow mirror tarballs

Paul Barker pbarker at konsulko.com
Mon Feb 24 21:46:31 UTC 2020


On Mon, 24 Feb 2020 at 21:32, Richard Purdie
<richard.purdie at linuxfoundation.org> wrote:
>
> On Mon, 2020-02-24 at 20:16 +0000, Paul Barker wrote:
> > When a shallow mirror tarball is used to satisfy a gitsm URI it needs to
> > be unpacked so that the .gitmodules file can be examined.
> >
> > Signed-off-by: Paul Barker <pbarker at konsulko.com>
> > ---
> >  lib/bb/fetch2/gitsm.py | 6 ++++++
> >  1 file changed, 6 insertions(+)
> >
> > diff --git a/lib/bb/fetch2/gitsm.py b/lib/bb/fetch2/gitsm.py
> > index aa121cbe..98f5dae5 100644
> > --- a/lib/bb/fetch2/gitsm.py
> > +++ b/lib/bb/fetch2/gitsm.py
> > @@ -169,6 +169,12 @@ class GitSM(Git):
> >                  raise
> >
> >          Git.download(self, ud, d)
> > +
> > +        # If we're using a shallow mirror tarball it needs to be unpacked so
> > +        # that we can examine the .gitmodules file
> > +        if ud.shallow and os.path.exists(ud.fullshallow) and Git.need_update(self, ud, d):
> > +            bb.utils.mkdirhier(ud.clonedir)
> > +            runfetchcmd("tar -xzf %s" % ud.fullshallow, d, workdir=ud.clonedir)
> >          self.process_submodules(ud, ud.clonedir, download_submodule, d)
> >
> >      def unpack(self, ud, destdir, d):
>
> Does this mean we're missing a test?

Possibly. Maybe a two step test with a recipe using a `gitsm://` URL:
1) Fetch the recipe with BB_GENERATE_MIRROR_TARBALLS,
BB_GENERATE_SHALLOW_TARBALLS and BB_GIT_SHALLOW set. Copy the mirror
tarballs out of the downloads directory to a local mirror directory.
Throw away DL_DIR, SSTATE_DIR and TMPDIR.
2) Using the mirror generated in step 1 try to fetch and unpack the recipe.

Does that sound like a sensible test? I think it would have to go in
oeqa rather than the bitbake tests if we do it that way.


More information about the bitbake-devel mailing list