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