On Wed, Jun 15, 2016 at 11:58:29AM -0600, Brian Paul wrote: > To match what's done in the automake build. > --- > src/SConscript | 43 +++++++++++++++++++++++++++++++++++++++++++ > src/mesa/SConscript | 43 ++----------------------------------------- > 2 files changed, 45 insertions(+), 41 deletions(-) > > diff --git a/src/SConscript b/src/SConscript > index 4ba0a32..719aa69 100644 > --- a/src/SConscript > +++ b/src/SConscript > @@ -1,5 +1,6 @@ > Import('*') > > +import os > > if env['platform'] == 'windows': > SConscript('getopt/SConscript') > @@ -12,6 +13,48 @@ if env['hostonly']: > # compilation > Return() > > + > +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' ]
You could take the opportunity to change this to: args = [ 'git', 'rev-parse', '--short', 'HEAD' ] to match what's being done on the make build: https://patchwork.freedesktop.org/patch/90532/ > + try: > + (commit, foo) = subprocess.Popen(args, > stdout=subprocess.PIPE).communicate() > + except: > + # git log command didn't work > + if not os.path.exists(filename): > + dirname = os.path.dirname(filename) > + if dirname and not os.path.exists(dirname): > + os.makedirs(dirname) > + # create an empty file if none already exists > + f = open(filename, "w") > + f.close() > + return > + > + commit = '#define MESA_GIT_SHA1 "git-%s"\n' % commit[0:7] That fixed truncation can give non-unique hashes. Switching to rev-parse (suggested above) fixes this. I had a quick grep and found Mesa has already 314 commits that can't be uniquely described from the first 7 chars of their hashes: $ git rev-list --all --abbrev=0 --abbrev-commit | grep -E '.{8,}' | wc -l 314 (I also tend to dislike overwriting a variable with something semantically different from what it contained before, but that's a matter of opinion, and you didn't author that code anyway.) The rest looks good, but I've never used SCons and my Python experience is very limited so I won't formally give an r-b on this. > + 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. > + if os.path.exists(filename): > + os.remove(filename) > + os.rename(tempfile, filename) > + return > + > + > +# Create the git_sha1.h header file > +write_git_sha1_h_file("git_sha1.h") > +# and update CPPPATH so the git_sha1.h header can be found > +env.Append(CPPPATH = ["#" + env['build_dir']]) > + > + > + > if env['platform'] != 'windows': > SConscript('loader/SConscript') > > diff --git a/src/mesa/SConscript b/src/mesa/SConscript > index 434800e..2a340ac 100644 > --- a/src/mesa/SConscript > +++ b/src/mesa/SConscript > @@ -4,7 +4,6 @@ > > Import('*') > import filecmp > -import os > import subprocess > from sys import executable as python_cmd > > @@ -18,10 +17,12 @@ env.Append(CPPPATH = [ > '#/src/mapi', > '#/src/glsl', > '#/src/mesa', > + '#/src/mesa/main', > '#/src/gallium/include', > '#/src/gallium/auxiliary', > Dir('../mapi'), # src/mapi build path > Dir('.'), # src/mesa build path > + Dir('main'), # src/mesa/main/ build path > ]) > > if env['platform'] == 'windows': > @@ -119,46 +120,6 @@ if env['platform'] not in ('cygwin', 'darwin', > 'windows', 'haiku'): > env.Append(CPPPATH = [matypes[0].dir]) > > > -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): > - dirname = os.path.dirname(filename) > - if not os.path.exists(dirname): > - os.makedirs(dirname) > - # create an empty file if none already exists > - f = open(filename, "w") > - f.close() > - return > - > - commit = '#define MESA_GIT_SHA1 "git-%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. > - if os.path.exists(filename): > - os.remove(filename) > - 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"]) > - > - > # > # Libraries > # > -- > 1.9.1 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev