diff options
author | Brian Paul <[email protected]> | 2011-09-28 08:15:22 -0600 |
---|---|---|
committer | Brian Paul <[email protected]> | 2011-09-28 08:15:22 -0600 |
commit | f83af361a4e44ee89c63e769501ed93caa22e30f (patch) | |
tree | 07f0c244260c6abbd16612fd57a7a703abf28971 /src/mesa | |
parent | 83df7fbe62be2798d557142a47e01af86ec9e2e2 (diff) |
scons: generate git_sha1.h file as with Makefile build
So that GL_VERSION includes the git head hash id when building with scons.
Reviewed-by: José Fonseca <[email protected]>
Diffstat (limited to 'src/mesa')
-rw-r--r-- | src/mesa/SConscript | 41 |
1 files changed, 35 insertions, 6 deletions
diff --git a/src/mesa/SConscript b/src/mesa/SConscript index ff1ffe008e0..595f8fc8f28 100644 --- a/src/mesa/SConscript +++ b/src/mesa/SConscript @@ -3,6 +3,9 @@ Import('*') +import filecmp +import os +import subprocess env = env.Clone() @@ -458,13 +461,39 @@ if env['gcc'] and env['platform'] != 'windows': env.Append(CPPPATH = [matypes[0].dir]) -# Create the git_sha1.h file if it doesn't exist already -try: - f = open('main/git_sha1.h', 'r') - f.close() -except IOError: - f = open('main/git_sha1.h', 'w') + + +def write_git_sha1_h_file(filename): + """Mesa looks for a git_sha1.h file at compile time in order to display + the current git hash id in the GL_VERSION string. This function tries + to retrieve the git hashid and write the header file. An empty file + will be created if anything goes wrong.""" + + args = [ 'git', 'log', '-n', '1', '--oneline' ] + try: + (commit, foo) = subprocess.Popen(args, stdout=subprocess.PIPE).communicate() + except: + # git log command didn't work + if not os.path.exists(filename): + # create an empty file if none already exists + f = open(filename, "w") + f.close() + return + + commit = '#define MESA_GIT_SHA1 "%s"\n' % commit[0:7] + tempfile = "git_sha1.h.tmp" + f = open(tempfile, "w") + f.write(commit) f.close() + if not os.path.exists(filename) or not filecmp.cmp(tempfile, filename): + # The filename does not exist or it's different from the new file, + # so replace old file with new. + os.rename(tempfile, filename) + return + + +# Create the git_sha1.h header file +write_git_sha1_h_file("main/git_sha1.h") # and update CPPPATH so the git_sha1.h header can be found env.Append(CPPPATH = ["#" + env['build_dir'] + "/mesa/main"]) |