[Mesa-dev] [PATCH] Convert git_sha1_gen script to Python.

Eric Engestrom eric.engestrom at imgtec.com
Tue Aug 1 13:50:50 UTC 2017


On Tuesday, 2017-08-01 14:47:31 +0100, Eric Engestrom wrote:
> On Tuesday, 2017-08-01 14:38:31 +0100, Jose Fonseca wrote:
> > Python is the scripting language we've been using for scripts that need
> > to run across all supported platforms.
> > 
> > Shell is *not* a portable language for scripts.
> 
> You beat me to it :)
> I have a note below, but the patch is
> Reviewed-by: Eric Engestrom <eric.engestrom at imgtec.com>
> 
> Thank you for fixing my mistake :/
> 
> > ---
> >  Makefile.am                          |  2 +-
> >  bin/git_sha1_gen.py                  | 20 ++++++++++++++++++++
> >  bin/git_sha1_gen.sh                  | 12 ------------
> >  src/Makefile.am                      |  2 +-
> >  src/SConscript                       |  3 ++-
> >  src/mesa/Android.libmesa_git_sha1.mk |  2 +-
> >  6 files changed, 25 insertions(+), 16 deletions(-)
> >  create mode 100755 bin/git_sha1_gen.py
> >  delete mode 100755 bin/git_sha1_gen.sh
> > 
> > diff --git a/Makefile.am b/Makefile.am
> > index cf52c834aa..538c38ddeb 100644
> > --- a/Makefile.am
> > +++ b/Makefile.am
> > @@ -53,7 +53,7 @@ EXTRA_DIST = \
> >  	common.py \
> >  	docs \
> >  	doxygen \
> > -	bin/git_sha1_gen.sh \
> > +	bin/git_sha1_gen.py \
> >  	scons \
> >  	SConstruct
> >  
> > diff --git a/bin/git_sha1_gen.py b/bin/git_sha1_gen.py
> > new file mode 100755
> > index 0000000000..6d13db1e16
> > --- /dev/null
> > +++ b/bin/git_sha1_gen.py
> > @@ -0,0 +1,20 @@
> > +#!/usr/bin/env python
> > +
> > +import os.path
> > +import subprocess
> > +import sys
> > +
> 
> In the version I just wrote, I also have this here, which I believe is
> necessary for out-of-tree builds:
> 
>   # run git from the sources directory
>   scriptpath = os.path.abspath(__file__)
>   srcdir = os.path.dirname(scriptpath)
>   os.chdir(srcdir)
> 
> > +git_dir = os.path.join(os.path.dirname(sys.argv[0]), '..', '.git')

... and I just re-read your code, and noticed this line contains more
than I saw at first.
Disregard my note above, your patch is r-b as is :)

> > +try:
> > +    git_sha1 = subprocess.check_output([
> > +        'git',
> > +        '--git-dir=' + git_dir,
> > +        'rev-parse',
> > +        '--short=10',
> > +        'HEAD',
> > +    ], stderr=open(os.devnull, 'w'))
> > +except subprocess.CalledProcessError as e:
> > +    # don't print anything if git fails
> > +    pass
> > +else:
> > +    sys.stdout.write('#define MESA_GIT_SHA1 "git-%s"\n' % git_sha1.rstrip())
> > diff --git a/bin/git_sha1_gen.sh b/bin/git_sha1_gen.sh
> > deleted file mode 100755
> > index 898e590758..0000000000
> > --- a/bin/git_sha1_gen.sh
> > +++ /dev/null
> > @@ -1,12 +0,0 @@
> > -#!/bin/sh
> > -
> > -# run git from the sources directory
> > -cd "$(dirname "$0")"
> > -
> > -# don't print anything if git fails
> > -if ! git_sha1=$(git --git-dir=../.git rev-parse --short=10 HEAD 2>/dev/null)
> > -then
> > -  exit
> > -fi
> > -
> > -printf '#define MESA_GIT_SHA1 "git-%s"\n' "$git_sha1"
> > diff --git a/src/Makefile.am b/src/Makefile.am
> > index 5aee6b0141..8d7483fc75 100644
> > --- a/src/Makefile.am
> > +++ b/src/Makefile.am
> > @@ -21,7 +21,7 @@
> >  
> >  .PHONY: git_sha1.h.tmp
> >  git_sha1.h.tmp:
> > -	@sh $(top_srcdir)/bin/git_sha1_gen.sh > $@
> > +	@python $(top_srcdir)/bin/git_sha1_gen.py > $@
> >  
> >  git_sha1.h: git_sha1.h.tmp
> >  	@echo "updating git_sha1.h"
> > diff --git a/src/SConscript b/src/SConscript
> > index 82bc28518e..bd20d4e210 100644
> > --- a/src/SConscript
> > +++ b/src/SConscript
> > @@ -1,6 +1,7 @@
> >  import filecmp
> >  import os
> >  import subprocess
> > +from sys import executable as python_cmd
> >  
> >  Import('*')
> >  
> > @@ -25,7 +26,7 @@ def write_git_sha1_h_file(filename):
> >  
> >      tempfile = "git_sha1.h.tmp"
> >      with open(tempfile, "w") as f:
> > -        args = [ 'sh', Dir('#').abspath + '/bin/git_sha1_gen.sh' ]
> > +        args = [ python_cmd, Dir('#').abspath + '/bin/git_sha1_gen.py' ]
> >          try:
> >              subprocess.Popen(args, stdout=f).wait()
> >          except:
> > diff --git a/src/mesa/Android.libmesa_git_sha1.mk b/src/mesa/Android.libmesa_git_sha1.mk
> > index 7d64b1c809..f66f88484b 100644
> > --- a/src/mesa/Android.libmesa_git_sha1.mk
> > +++ b/src/mesa/Android.libmesa_git_sha1.mk
> > @@ -46,7 +46,7 @@ LOCAL_GENERATED_SOURCES += $(addprefix $(intermediates)/, git_sha1.h)
> >  $(intermediates)/git_sha1.h: $(wildcard $(MESA_TOP)/.git/logs/HEAD)
> >  	@mkdir -p $(dir $@)
> >  	@echo "GIT-SHA1: $(PRIVATE_MODULE) <= git"
> > -	$(hide) sh $(MESA_TOP)/bin/git_sha1_gen.sh > $@
> > +	$(hide) python $(MESA_TOP)/bin/git_sha1_gen.py > $@
> >  
> >  LOCAL_EXPORT_C_INCLUDE_DIRS := $(intermediates)
> >  
> > -- 
> > 2.11.0
> > 


More information about the mesa-dev mailing list