[poky] [PATCH 10/11] bb.fetch2: add git unpack
Yu Ke
ke.yu at intel.com
Tue Jan 25 20:41:10 PST 2011
On Jan 25, 14:39, Bruce Ashfield wrote:
> On Tue, Jan 25, 2011 at 1:07 PM, Richard Purdie
> <richard.purdie at linuxfoundation.org> wrote:
> > Hi Ke,
> >
> > On Wed, 2011-01-19 at 01:48 +0800, Yu Ke wrote:
> >> git download will clone git repo to local, and git unpack just do a clone with referrence to the original repo
> >>
> >> Signed-off-by: Yu Ke <ke.yu at intel.com>
> >> ---
> >> bitbake/lib/bb/fetch2/git.py | 16 ++++++++++++++++
> >> 1 files changed, 16 insertions(+), 0 deletions(-)
> >>
> >> diff --git a/bitbake/lib/bb/fetch2/git.py b/bitbake/lib/bb/fetch2/git.py
> >> index 438756a..bb62a87 100644
> >> --- a/bitbake/lib/bb/fetch2/git.py
> >> +++ b/bitbake/lib/bb/fetch2/git.py
> >> @@ -193,6 +193,22 @@ class Git(Fetch):
> >> os.chdir(ud.clonedir)
> >> bb.utils.prunedir(codir)
> >>
> >> + def unpack(self, ud, destdir, d):
> >> + """ unpack the downloaded src to destdir"""
> >> + subdir = ud.parm.get("subpath", "")
> >> + if subdir != "":
> >> + readpathspec = ":%s" % (subdir)
> >> + else:
> >> + readpathspec = ""
> >> +
> >> + # extract to ${WORKDIR}/git
> >> + destdir = destdir + "/git/"
> >> +
> >> + os.chdir(ud.clonedir)
> >> + runfetchcmd("%s read-tree %s%s" % (ud.basecmd, ud.tag, readpathspec), d)
> >> + runfetchcmd("%s checkout-index -q -f --prefix=%s -a" % (ud.basecmd, destdir), d)
> >> + return 1
> >> +
> >> def supports_srcrev(self):
> >> return True
> >
> > I know we talked about this via email and you revised the description
> > to:
> >
> > http://git.pokylinux.org/cgit/cgit.cgi/poky-contrib/commit/?h=kyu3/fetcher-api-v3&id=6df3037ea3679b804c2679afba8377b7e3796aca
> >
> > I'm wondering if we could optimise this cp command to be a "git clone
> > -l" or a "git clone -s" (see man git-clone). I'm cc'ing Bruce for his
> > thoughts on this and whether the linux-yocto tools would have a problem
> > with either of these.
>
> Neither will pose a problem, and for what it is worth, I think using git
> for the copy from src/dest is a good idea. In other build systems, I'm
> doing the same thing with --shared (so I know for sure that works), and
> --local should also be fine.
"git clone" is my first try when cooking the patch, unfortunately I meet one issue here. the git clone target dir is ${WORKDIR}, while git requires the target dir to be empty, which is not true for ${WORKDIR}, so git clone will fail. so I fall back to cp approach.
But I agree that git clone is better. So I'd like use this apprach: git clone to {WORKDIR}/git/, and modify the kernel-yocto.bbclass:do_kernel_checkout() to use the new layout.
I will revise the patch accordingly for review.
Regards
Ke
>
> >
> > The idea would be one central checkout with the references in and then
> > the subcomponents would all just reference the one local clone saving
> > diskspace and time.
>
> Absolutely. And if someone does something to the central checkout,
> minor errors ensue, but that can be recovered as well.
>
> Cheers,
>
> Bruce
>
> >
> > Cheers,
> >
> > Richard
> >
> >
> >
> > _______________________________________________
> > poky mailing list
> > poky at yoctoproject.org
> > https://lists.yoctoproject.org/listinfo/poky
> >
>
>
>
> --
> "Thou shalt not follow the NULL pointer, for chaos and madness await
> thee at its end"
> _______________________________________________
> poky mailing list
> poky at yoctoproject.org
> https://lists.yoctoproject.org/listinfo/poky
More information about the poky
mailing list