Re: [Mesa-dev] [PATCH] scons: put the generated git_sha1.h file in top-level src/ directory

2016-06-17 Thread Eric Engestrom
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

2016-06-17 Thread Jose Fonseca

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

2016-06-16 Thread Brian Paul
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

2016-06-16 Thread Brian Paul

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

2016-06-16 Thread Eric Engestrom
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

2016-06-16 Thread Brian Paul

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

2016-06-16 Thread Emil Velikov
On 15 June 2016 at 18:58, Brian Paul  wrote:
> 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

2016-06-16 Thread Eric Engestrom
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

2016-06-16 Thread Jose Fonseca

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

2016-06-15 Thread Brian Paul
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