1*61046927SAndroid Build Coastguard Worker""" 2*61046927SAndroid Build Coastguard WorkerGenerate the contents of the git_sha1.h file. 3*61046927SAndroid Build Coastguard Worker""" 4*61046927SAndroid Build Coastguard Worker 5*61046927SAndroid Build Coastguard Workerimport argparse 6*61046927SAndroid Build Coastguard Workerimport os 7*61046927SAndroid Build Coastguard Workerimport os.path 8*61046927SAndroid Build Coastguard Workerimport subprocess 9*61046927SAndroid Build Coastguard Workerimport sys 10*61046927SAndroid Build Coastguard Worker 11*61046927SAndroid Build Coastguard Worker 12*61046927SAndroid Build Coastguard Workerdef get_git_sha1(): 13*61046927SAndroid Build Coastguard Worker """Try to get the git SHA1 with git rev-parse.""" 14*61046927SAndroid Build Coastguard Worker git_dir = os.path.join(os.path.dirname(sys.argv[0]), '..', '.git') 15*61046927SAndroid Build Coastguard Worker try: 16*61046927SAndroid Build Coastguard Worker git_sha1 = subprocess.check_output([ 17*61046927SAndroid Build Coastguard Worker 'git', 18*61046927SAndroid Build Coastguard Worker '--git-dir=' + git_dir, 19*61046927SAndroid Build Coastguard Worker 'rev-parse', 20*61046927SAndroid Build Coastguard Worker 'HEAD', 21*61046927SAndroid Build Coastguard Worker ], stderr=open(os.devnull, 'w')).decode("ascii") 22*61046927SAndroid Build Coastguard Worker except Exception: 23*61046927SAndroid Build Coastguard Worker # don't print anything if it fails 24*61046927SAndroid Build Coastguard Worker git_sha1 = '' 25*61046927SAndroid Build Coastguard Worker return git_sha1 26*61046927SAndroid Build Coastguard Worker 27*61046927SAndroid Build Coastguard Worker 28*61046927SAndroid Build Coastguard Workerdef write_if_different(contents): 29*61046927SAndroid Build Coastguard Worker """ 30*61046927SAndroid Build Coastguard Worker Avoid touching the output file if it doesn't need modifications 31*61046927SAndroid Build Coastguard Worker Useful to avoid triggering rebuilds when nothing has changed. 32*61046927SAndroid Build Coastguard Worker """ 33*61046927SAndroid Build Coastguard Worker if os.path.isfile(args.output): 34*61046927SAndroid Build Coastguard Worker with open(args.output, 'r') as file: 35*61046927SAndroid Build Coastguard Worker if file.read() == contents: 36*61046927SAndroid Build Coastguard Worker return 37*61046927SAndroid Build Coastguard Worker with open(args.output, 'w') as file: 38*61046927SAndroid Build Coastguard Worker file.write(contents) 39*61046927SAndroid Build Coastguard Worker 40*61046927SAndroid Build Coastguard Worker 41*61046927SAndroid Build Coastguard Workerparser = argparse.ArgumentParser() 42*61046927SAndroid Build Coastguard Workerparser.add_argument('--output', help='File to write the #define in', 43*61046927SAndroid Build Coastguard Worker required=True) 44*61046927SAndroid Build Coastguard Workerargs = parser.parse_args() 45*61046927SAndroid Build Coastguard Worker 46*61046927SAndroid Build Coastguard Workergit_sha1 = os.environ.get('MESA_GIT_SHA1_OVERRIDE', get_git_sha1())[:10] 47*61046927SAndroid Build Coastguard Workerif git_sha1: 48*61046927SAndroid Build Coastguard Worker write_if_different('#define MESA_GIT_SHA1 " (git-' + git_sha1 + ')"') 49*61046927SAndroid Build Coastguard Workerelse: 50*61046927SAndroid Build Coastguard Worker write_if_different('#define MESA_GIT_SHA1 ""') 51