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

Dylan Baker dylan at pnwbakers.com
Tue Oct 10 00:57:47 UTC 2017


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
> +
> +
> +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.

> +
> +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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: signature
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20171009/8a90aded/attachment.sig>


More information about the mesa-dev mailing list