Re: [Mesa-dev] [PATCH] scons: put the generated git_sha1.h file in top-level src/ directory
On Thu, Jun 16, 2016 at 11:15:55AM -0600, Brian Paul wrote: > To match what's done in the automake build. > > v2: Use git rev-parse to get a 10-character hash ID > Fix Python imports > --- Perfect, thanks! Reviewed-by: Eric Engestrom___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH] scons: put the generated git_sha1.h file in top-level src/ directory
On 16/06/16 18:15, Brian Paul wrote: To match what's done in the automake build. v2: Use git rev-parse to get a 10-character hash ID Fix Python imports --- src/SConscript | 49 - src/mesa/SConscript | 45 ++--- 2 files changed, 50 insertions(+), 44 deletions(-) diff --git a/src/SConscript b/src/SConscript index 4ba0a32..d861af8 100644 --- a/src/SConscript +++ b/src/SConscript @@ -1,5 +1,8 @@ -Import('*') +import filecmp +import os +import subprocess +Import('*') if env['platform'] == 'windows': SConscript('getopt/SConscript') @@ -12,6 +15,50 @@ 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', 'rev-parse', '--short=10', 'HEAD' ] +try: +(commit, foo) = subprocess.Popen(args, stdout=subprocess.PIPE).communicate() +except: +print "Warning: exception in write_git_sha1_h_file()" +# 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 + +# note that commit[:-1] removes the trailing newline character +commit = '#define MESA_GIT_SHA1 "git-%s"\n' % commit[:-1] +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..d20b158 100644 --- a/src/mesa/SConscript +++ b/src/mesa/SConscript @@ -3,9 +3,6 @@ Import('*') -import filecmp -import os -import subprocess from sys import executable as python_cmd env = env.Clone() @@ -18,10 +15,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 +118,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 # LGTM. Reviewed-by: Jose Fonseca___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
[Mesa-dev] [PATCH] scons: put the generated git_sha1.h file in top-level src/ directory
To match what's done in the automake build. v2: Use git rev-parse to get a 10-character hash ID Fix Python imports --- src/SConscript | 49 - src/mesa/SConscript | 45 ++--- 2 files changed, 50 insertions(+), 44 deletions(-) diff --git a/src/SConscript b/src/SConscript index 4ba0a32..d861af8 100644 --- a/src/SConscript +++ b/src/SConscript @@ -1,5 +1,8 @@ -Import('*') +import filecmp +import os +import subprocess +Import('*') if env['platform'] == 'windows': SConscript('getopt/SConscript') @@ -12,6 +15,50 @@ 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', 'rev-parse', '--short=10', 'HEAD' ] +try: +(commit, foo) = subprocess.Popen(args, stdout=subprocess.PIPE).communicate() +except: +print "Warning: exception in write_git_sha1_h_file()" +# 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 + +# note that commit[:-1] removes the trailing newline character +commit = '#define MESA_GIT_SHA1 "git-%s"\n' % commit[:-1] +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..d20b158 100644 --- a/src/mesa/SConscript +++ b/src/mesa/SConscript @@ -3,9 +3,6 @@ Import('*') -import filecmp -import os -import subprocess from sys import executable as python_cmd env = env.Clone() @@ -18,10 +15,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 +118,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
Re: [Mesa-dev] [PATCH] scons: put the generated git_sha1.h file in top-level src/ directory
On 06/16/2016 10:31 AM, Eric Engestrom wrote: On Thu, Jun 16, 2016 at 09:48:54AM -0600, Brian Paul wrote: On 06/16/2016 07:35 AM, Eric Engestrom wrote: That fixed truncation can give non-unique hashes. Switching to rev-parse (suggested above) fixes this. rev-parse --short produces a 7-char hash. No it doesn't, not in the general case. You may well have tested it on a commit whose hash was unique at that length, but in general it gives you the shortest hash that's unique at the point in time when it's run (with a minimum, default = 7). Ah, OK. I was going from the portion of the man page which says: """ --short, --short=number Instead of outputting the full SHA-1 values of object names try to abbreviate them to a shorter unique name. When no length is specified 7 is used. The minimum length is 4. """ I had never come across git rev-parse before today. I feel like I know about 1% of git to be honest. I think I didn't explain my point very well, so I'll say it differently: - If a commit hash is meant as a short lived information, the minimal unique hash at that point is good enough. Manually truncating doesn't guarantee that. - If the commit hash is meant to be long lived, the full hash should be used. (This is typically the case in a commit message.) In this case, the hash is meaningless once it becomes old, so the first option is good enough. It still needs to be unique, at least when generated. For this reason, manually truncating it is not a good method. (This is, of course, my opinion. I know other people have other opinions (in both directions), which I respect. I'm just sharing mine.) The commit[0:7] part above is used to strip the trailing newline from the string (though that could be expressed better). The original command (log) printed more informations on that line, which is what this code was stripping. I don't know if python needs newlines to be stripped, but if it does, please use an other method (would `commit[0:-1]` do that?). Yeah, when I was testing without the substring specifier I was getting a newline character in my C string and that, of course, broke things. Yeah, I think I'll bump the hash length to ten. Please do so using `rev-parse --short=10` :) Yup, that's what my patch is doing. I still need to test it on Windows... v2 patch coming in a bit... -Brian Cheers, Eric PS: I promise I'm not trying to be mean, but I feel like I'm coming across as such :( Nope, thanks for the helpful feedback! -Brian ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH] scons: put the generated git_sha1.h file in top-level src/ directory
On Thu, Jun 16, 2016 at 09:48:54AM -0600, Brian Paul wrote: > On 06/16/2016 07:35 AM, Eric Engestrom wrote: > > That fixed truncation can give non-unique hashes. Switching to rev-parse > > (suggested above) fixes this. > > rev-parse --short produces a 7-char hash. No it doesn't, not in the general case. You may well have tested it on a commit whose hash was unique at that length, but in general it gives you the shortest hash that's unique at the point in time when it's run (with a minimum, default = 7). I think I didn't explain my point very well, so I'll say it differently: - If a commit hash is meant as a short lived information, the minimal unique hash at that point is good enough. Manually truncating doesn't guarantee that. - If the commit hash is meant to be long lived, the full hash should be used. (This is typically the case in a commit message.) In this case, the hash is meaningless once it becomes old, so the first option is good enough. It still needs to be unique, at least when generated. For this reason, manually truncating it is not a good method. (This is, of course, my opinion. I know other people have other opinions (in both directions), which I respect. I'm just sharing mine.) > The commit[0:7] part above is > used to strip the trailing newline from the string (though that could be > expressed better). The original command (log) printed more informations on that line, which is what this code was stripping. I don't know if python needs newlines to be stripped, but if it does, please use an other method (would `commit[0:-1]` do that?). > Yeah, I think I'll bump the hash length to ten. Please do so using `rev-parse --short=10` :) > > v2 patch coming in a bit... > > -Brian > Cheers, Eric PS: I promise I'm not trying to be mean, but I feel like I'm coming across as such :( ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH] scons: put the generated git_sha1.h file in top-level src/ directory
On 06/16/2016 07:35 AM, Eric Engestrom wrote: 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://urldefense.proofpoint.com/v2/url?u=https-3A__patchwork.freedesktop.org_patch_90532_=CwIBaQ=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs=T0t4QG7chq2ZwJo6wilkFznRSFy-8uDKartPGbomVj8=0zzXqbMZULPltpwVbCJ7fMOHXGh4Br2grMgXY81QxQo=jgTYcNCdGznhwVF_DEuJaDfG6_ACwJnhVROqpu0ZWvg= Will do. +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. rev-parse --short produces a 7-char hash. The commit[0:7] part above is used to strip the trailing newline from the string (though that could be expressed better). 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 Yeah, I think I'll bump the hash length to ten. v2 patch coming in a bit... -Brian (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
Re: [Mesa-dev] [PATCH] scons: put the generated git_sha1.h file in top-level src/ directory
On 15 June 2016 at 18:58, Brian Paulwrote: > To match what's done in the automake build. Considering the grief that it caused for autoconf builds I've deliberately left scons as-is the moment. There's even one more corner case that I will send a patch out in a moment. -Emil ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH] scons: put the generated git_sha1.h file in top-level src/ directory
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") > -
Re: [Mesa-dev] [PATCH] scons: put the generated git_sha1.h file in top-level src/ directory
On 15/06/16 18:58, 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 Nitpick: personally I prefer the Python import at the top. Either way, Reviewed-by: Jose Fonseca___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
[Mesa-dev] [PATCH] scons: put the generated git_sha1.h file in top-level src/ directory
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' ] +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] +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