xref: /OK3568_Linux_fs/yocto/meta-rockchip/classes/local-git.bbclass (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun# Copyright (C) 2021, Rockchip Electronics Co., Ltd
2*4882a593Smuzhiyun# Released under the MIT license (see COPYING.MIT for the terms)
3*4882a593Smuzhiyun
4*4882a593Smuzhiyunpython () {
5*4882a593Smuzhiyun    from bb.fetch2 import git
6*4882a593Smuzhiyun    from bb.fetch2 import Fetch
7*4882a593Smuzhiyun    from bb.fetch2 import runfetchcmd
8*4882a593Smuzhiyun    import shlex
9*4882a593Smuzhiyun
10*4882a593Smuzhiyun    git = git.Git()
11*4882a593Smuzhiyun    bb.fetch2.get_srcrev(d)
12*4882a593Smuzhiyun    fetcher = Fetch(d.getVar('SRC_URI').split(), d)
13*4882a593Smuzhiyun    urldata = fetcher.ud
14*4882a593Smuzhiyun    for u in urldata:
15*4882a593Smuzhiyun        if not urldata[u].method.supports_srcrev():
16*4882a593Smuzhiyun            continue
17*4882a593Smuzhiyun
18*4882a593Smuzhiyun        ud = urldata[u]
19*4882a593Smuzhiyun        if ud.proto.lower() != 'file' or ud.type != 'git':
20*4882a593Smuzhiyun            continue
21*4882a593Smuzhiyun
22*4882a593Smuzhiyun        if not os.path.exists(ud.clonedir):
23*4882a593Smuzhiyun            continue
24*4882a593Smuzhiyun
25*4882a593Smuzhiyun        repourl = git._get_repo_url(ud)
26*4882a593Smuzhiyun
27*4882a593Smuzhiyun        # Try an early full fetching
28*4882a593Smuzhiyun        fetch_cmd = "LANG=C %s fetch %s" % (ud.basecmd, shlex.quote(repourl))
29*4882a593Smuzhiyun        try:
30*4882a593Smuzhiyun            runfetchcmd(fetch_cmd, d, workdir=ud.clonedir)
31*4882a593Smuzhiyun        except bb.fetch2.FetchError:
32*4882a593Smuzhiyun            # Ignoring errors
33*4882a593Smuzhiyun            return
34*4882a593Smuzhiyun}
35