xref: /aosp_15_r20/external/mesa3d/src/nouveau/headers/update-from-open-gpu-doc.py (revision 6104692788411f58d303aa86923a9ff6ecaded22)
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