[Mesa-dev] [PATCH] git_sha1_gen: accept MESA_GIT_SHA1_OVERRIDE env var

Eric Engestrom eric.engestrom at imgtec.com
Tue Oct 10 10:54:42 UTC 2017


On Tuesday, 2017-10-10 00:57:47 +0000, Dylan Baker wrote:
> Quoting Brian Paul (2017-10-09 13:56:33)
> > If one uses a parent build script to download/build Mesa we may not
> > have a full git repository (maybe a tar archive) so the 'git rev-parse'
> > command will fail.
> > 
> > This updates the script to look for a MESA_GIT_SHA1_OVERRIDE env var.
> > If it's set, use that sha1 instead of using git rev-parse.  With this
> > change we can put a git hash in the GL_VERSION string even when we
> > don't have a git repo.
> > ---
> >  bin/git_sha1_gen.py | 52 +++++++++++++++++++++++++++++++++++++++-------------
> >  1 file changed, 39 insertions(+), 13 deletions(-)
> > 
> > diff --git a/bin/git_sha1_gen.py b/bin/git_sha1_gen.py
> > index 97981fb..ce35cdc 100755
> > --- a/bin/git_sha1_gen.py
> > +++ b/bin/git_sha1_gen.py
> > @@ -1,20 +1,46 @@
> >  #!/usr/bin/env python
> >  
> > +"""
> > +Generate the contents of the git_sha1.h file.
> > +The output of this script goes to stdout.
> > +"""
> > +
> > +
> > +import os
> >  import os.path
> >  import subprocess
> >  import sys
> >  
> > -git_dir = os.path.join(os.path.dirname(sys.argv[0]), '..', '.git')
> > -try:
> > -    git_sha1 = subprocess.check_output([
> > -        'git',
> > -        '--git-dir=' + git_dir,
> > -        'rev-parse',
> > -        '--short=10',
> > -        'HEAD',
> > -    ], stderr=open(os.devnull, 'w')).decode("ascii")
> > -except:
> > -    # don't print anything if it fails
> > -    pass
> > -else:
> > +def get_git_envvar():
> > +    """Try to get the git SHA1 from the MESA_GIT_SHA1_OVERRIDE env var."""
> > +    try:
> > +        git_sha1 = os.environ['MESA_GIT_SHA1_OVERRIDE']
> > +        git_sha1 = git_sha1[0:10]
> > +    except:
> > +        git_sha1 = None
> > +    return git_sha1
> > +
> > +
> > +def get_git_sha1():
> > +    """Try to get the git SHA1 with git rev-parse."""
> > +    git_dir = os.path.join(os.path.dirname(sys.argv[0]), '..', '.git')
> > +    try:
> > +        git_sha1 = subprocess.check_output([
> > +            'git',
> > +            '--git-dir=' + git_dir,
> > +            'rev-parse',
> > +            '--short=10',
> > +            'HEAD',
> > +        ], stderr=open(os.devnull, 'w')).decode("ascii")
> > +    except:
> > +        # don't print anything if it fails
> > +        git_sha1 = None
> > +    return git_sha1

why the temp var? how about `return subprocess.check_output()` and
`return None`?

anyway, having an env override is a good idea and the code does it well:
Reviewed-by: Eric Engestrom <eric.engestrom at imgtec.com>

> > +
> > +
> > +git_sha1 = get_git_envvar()
> > +if not git_sha1:
> > +    git_sha1 = get_git_sha1()
> 
> what about
> git_sha = os.environ.get('MESA_GIT_SHA1_OVERRIDE', get_git_sha1())[:10]
> 
> Then we can remove the --short argument from the git call and have a single
> place to control the length of the sha.

Good idea!

> 
> > +
> > +if git_sha1:
> >      sys.stdout.write('#define MESA_GIT_SHA1 "git-%s"\n' % git_sha1.rstrip())
> > -- 
> > 1.9.1
> > 
> > _______________________________________________
> > mesa-dev mailing list
> > mesa-dev at lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list