1*61046927SAndroid Build Coastguard Worker#!/usr/bin/env python3 2*61046927SAndroid Build Coastguard Worker 3*61046927SAndroid Build Coastguard Workerimport argparse 4*61046927SAndroid Build Coastguard Workerimport git 5*61046927SAndroid Build Coastguard Workerfrom git import Repo 6*61046927SAndroid Build Coastguard Workerimport glob 7*61046927SAndroid Build Coastguard Workerimport os 8*61046927SAndroid Build Coastguard Workerimport shutil 9*61046927SAndroid Build Coastguard Workerimport sys 10*61046927SAndroid Build Coastguard Worker 11*61046927SAndroid Build Coastguard Worker# where should files go 12*61046927SAndroid Build Coastguard Workerdirs = { 13*61046927SAndroid Build Coastguard Worker '/classes/3d/': 'classes/', 14*61046927SAndroid Build Coastguard Worker '/classes/compute/': 'classes/', 15*61046927SAndroid Build Coastguard Worker '/classes/dma-copy/': 'classes/', 16*61046927SAndroid Build Coastguard Worker '/classes/host/': 'classes/', 17*61046927SAndroid Build Coastguard Worker '/classes/memory-to-memory-format/': 'classes/', 18*61046927SAndroid Build Coastguard Worker '/classes/inline-to-memory/': 'classes/', 19*61046927SAndroid Build Coastguard Worker '/classes/twod/': 'classes/', 20*61046927SAndroid Build Coastguard Worker} 21*61046927SAndroid Build Coastguard Workerbranch = 'master' 22*61046927SAndroid Build Coastguard Workertarget = os.path.abspath(os.path.dirname(__file__)) + "/nvidia/" 23*61046927SAndroid Build Coastguard Worker 24*61046927SAndroid Build Coastguard Workerparser = argparse.ArgumentParser(description='Updates Nvidia header files from git.') 25*61046927SAndroid Build Coastguard Workerparser.add_argument('git_path', type=str, help='Path to the open-gpu-doc repo') 26*61046927SAndroid Build Coastguard Worker 27*61046927SAndroid Build Coastguard Workerargs = parser.parse_args() 28*61046927SAndroid Build Coastguard Workerrepo_path = os.path.abspath(args.git_path) 29*61046927SAndroid Build Coastguard Worker 30*61046927SAndroid Build Coastguard Worker# 1. create repo object 31*61046927SAndroid Build Coastguard Workertry: 32*61046927SAndroid Build Coastguard Worker repo = Repo(repo_path) 33*61046927SAndroid Build Coastguard Worker assert not repo.bare 34*61046927SAndroid Build Coastguard Workerexcept git.exc.NoSuchPathError: 35*61046927SAndroid Build Coastguard Worker print("{} doesn't point to a git repository".format(repo_path)) 36*61046927SAndroid Build Coastguard Worker sys.exit(-1) 37*61046927SAndroid Build Coastguard Worker 38*61046927SAndroid Build Coastguard Worker# 2. update repo 39*61046927SAndroid Build Coastguard Workerrepo.remotes.origin.fetch() 40*61046927SAndroid Build Coastguard Workerrepo.git.checkout(branch) 41*61046927SAndroid Build Coastguard Workerrepo.git.rebase('origin/' + branch) 42*61046927SAndroid Build Coastguard Worker 43*61046927SAndroid Build Coastguard Worker# 3. check if all needed directories exist 44*61046927SAndroid Build Coastguard Workerfor dir in dirs.keys(): 45*61046927SAndroid Build Coastguard Worker path = repo_path + dir 46*61046927SAndroid Build Coastguard Worker if not os.path.isdir(path): 47*61046927SAndroid Build Coastguard Worker print(dir + " does not exist in repository. Was the correct repository choosen?") 48*61046927SAndroid Build Coastguard Worker sys.exit(-1) 49*61046927SAndroid Build Coastguard Worker 50*61046927SAndroid Build Coastguard Worker# 4. copy over files 51*61046927SAndroid Build Coastguard Workerfor src, dest in dirs.items(): 52*61046927SAndroid Build Coastguard Worker src = repo_path + src 53*61046927SAndroid Build Coastguard Worker dest = target + dest 54*61046927SAndroid Build Coastguard Worker for header in glob.glob(src + "*.h"): 55*61046927SAndroid Build Coastguard Worker print(header + " => " + dest) 56*61046927SAndroid Build Coastguard Worker shutil.copy(header, dest) 57