X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=bin%2Fgit_sha1_gen.py;h=7741159816b66ebae822551c353053cf3af0d1c1;hb=03ec67221309b641e690418572b23a24b30eb9a8;hp=e26d3a3f76478973a6593b84b6b88d7cf241f4ab;hpb=aab06494873bd9f46e8db960ea1f889701d43400;p=mesa.git diff --git a/bin/git_sha1_gen.py b/bin/git_sha1_gen.py index e26d3a3f764..7741159816b 100755 --- a/bin/git_sha1_gen.py +++ b/bin/git_sha1_gen.py @@ -1,20 +1,52 @@ #!/usr/bin/env python +""" +Generate the contents of the git_sha1.h file. +The output of this script goes to stdout. +""" + + +import argparse +import os import os.path import subprocess import sys -git_dir = os.path.join(os.path.dirname(sys.argv[0]), '..', '.git') -try: - git_sha1 = subprocess.check_output([ - 'git', - '--git-dir=' + git_dir, - 'rev-parse', - '--short=10', - 'HEAD', - ], stderr=open(os.devnull, 'w')) -except: - # don't print anything if it fails - pass + +def get_git_sha1(): + """Try to get the git SHA1 with git rev-parse.""" + git_dir = os.path.join(os.path.dirname(sys.argv[0]), '..', '.git') + try: + git_sha1 = subprocess.check_output([ + 'git', + '--git-dir=' + git_dir, + 'rev-parse', + 'HEAD', + ], stderr=open(os.devnull, 'w')).decode("ascii") + except: + # don't print anything if it fails + git_sha1 = '' + return git_sha1 + +def write_if_different(contents): + """ + Avoid touching the output file if it doesn't need modifications + Useful to avoid triggering rebuilds when nothing has changed. + """ + if os.path.isfile(args.output): + with open(args.output, 'r') as file: + if file.read() == contents: + return + with open(args.output, 'w') as file: + file.write(contents) + +parser = argparse.ArgumentParser() +parser.add_argument('--output', help='File to write the #define in', + required=True) +args = parser.parse_args() + +git_sha1 = os.environ.get('MESA_GIT_SHA1_OVERRIDE', get_git_sha1())[:10] +if git_sha1: + write_if_different('#define MESA_GIT_SHA1 " (git-' + git_sha1 + ')"') else: - sys.stdout.write('#define MESA_GIT_SHA1 "git-%s"\n' % git_sha1.rstrip()) + write_if_different('#define MESA_GIT_SHA1 ""')