Acked-by: Otavio Salvador <[email protected]> On Tue, Apr 26, 2011 at 07:45, Enrico Scholz <[email protected]> wrote: > gitpkgv runs the 'git rev-list | wc -l' several times when processing a > package using GITPKGV. This takes ages for packages like the linux > kernel which has a) a large repository and b) lots of subpackages. > > This patch caches the result of 'git rev-list' into the sources cache > directory and uses it on the next run. Because collisions of the sha1 > hash are very unlikely, the git revision is used directly as the key. > > Signed-off-by: Enrico Scholz <[email protected]> > --- > classes/gitpkgv.bbclass | 29 +++++++++++++++++++++++------ > 1 files changed, 23 insertions(+), 6 deletions(-) > > diff --git a/classes/gitpkgv.bbclass b/classes/gitpkgv.bbclass > index bedceb9..76c660b 100644 > --- a/classes/gitpkgv.bbclass > +++ b/classes/gitpkgv.bbclass > @@ -50,8 +50,11 @@ def gitpkgv_drop_tag_prefix(version): > def get_git_pkgv(d, use_tags): > import os > import bb > + from pipes import quote > > urls = bb.data.getVar('SRC_URI', d, 1).split() > + cachedir = bb.data.expand("${DL_DIR}/gitpkgv", d) > + bb.mkdirhier(cachedir) > > for url in urls: > (type, host, path, user, pswd, parm) = > bb.decodeurl(bb.data.expand(url, d)) > @@ -63,22 +66,36 @@ def get_git_pkgv(d, use_tags): > return None > > rev = bb.fetch.get_srcrev(d).split('+')[1] > + rev_file = os.path.join(cachedir, rev) > > - cwd = os.getcwd() > - os.chdir(repodir) > + vars = { 'repodir' : quote(repodir), > + 'rev' : quote(rev), > + } > > - commits = bb.fetch.runfetchcmd("git rev-list %s -- 2> > /dev/null | wc -l" % rev, d, quiet=True).strip() > + if not os.path.exists(rev_file) or > os.path.getsize(rev_file)==0: > + commits = bb.fetch.runfetchcmd( > + "cd %(repodir)s && " > + "git rev-list %(rev)s -- 2> /dev/null > | wc -l" % vars, > + d, quiet=True).strip() > + > + if commits != "0": > + oe.path.remove(rev_file, > recurse=False) > + open(rev_file, "w").write("%d\n" % > commits) > + else: > + commits = open(rev_file, > "r").readline(128).strip() > > if use_tags: > try: > - ver = > gitpkgv_drop_tag_prefix(bb.fetch.runfetchcmd("git describe %s 2>/dev/null" % > rev, d, quiet=True).strip()) > + tmp = bb.fetch.runfetchcmd( > + "cd %(repodir)s && " > + "git describe %(rev)s 2>/dev/null" % > vars, > + d, quiet=True).strip() > + ver = gitpkgv_drop_tag_prefix(tmp) > except Exception: > ver = "0.0-%s-g%s" % (commits, rev[:7]) > else: > ver = "%s+%s" % (commits, rev[:7]) > > - os.chdir(cwd) > - > return ver > > return "0+0" > -- > 1.7.4.4 > > > _______________________________________________ > Openembedded-devel mailing list > [email protected] > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel >
-- Otavio Salvador O.S. Systems E-mail: [email protected] http://www.ossystems.com.br Mobile: +55 53 9981-7854 http://projetos.ossystems.com.br _______________________________________________ Openembedded-devel mailing list [email protected] http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-devel
