Signed-off-by: Eric Engestrom <eric.engest...@imgtec.com> --- Note: Autotools and SCons are tested, but Android isn't. --- git_sha1_gen.sh | 13 +++++++++++++ src/Makefile.am | 13 +------------ src/SConscript | 28 ++++++++-------------------- src/mesa/Android.libmesa_git_sha1.mk | 7 +------ 4 files changed, 23 insertions(+), 38 deletions(-) create mode 100755 git_sha1_gen.sh
diff --git a/git_sha1_gen.sh b/git_sha1_gen.sh new file mode 100755 index 0000000000..9630067be0 --- /dev/null +++ b/git_sha1_gen.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash +set -eu + +# run git from the sources directory +cd "$(dirname "${BASH_SOURCE[0]}")" + +# don't print anything if git fails +if ! git_sha1=$(git rev-parse --short=10 HEAD) +then + exit +fi + +printf '#define MESA_GIT_SHA1 "git-%s"\n' "$git_sha1" diff --git a/src/Makefile.am b/src/Makefile.am index df912c442a..e49b3bd9cf 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -21,18 +21,7 @@ .PHONY: git_sha1.h.tmp git_sha1.h.tmp: - @# Don't assume that $(top_srcdir)/.git is a directory. It may be - @# a gitlink file if $(top_srcdir) is a submodule checkout or a linked - @# worktree. - @# If we are building from a release tarball copy the bundled header. - @touch git_sha1.h.tmp - @if test -e $(top_srcdir)/.git; then \ - if which git > /dev/null; then \ - printf '#define MESA_GIT_SHA1 "git-%s"\n' \ - `git --git-dir=$(top_srcdir)/.git rev-parse --short=10 HEAD` \ - > git_sha1.h.tmp ; \ - fi \ - fi + @bash $(top_srcdir)/git_sha1_gen.sh > $@ git_sha1.h: git_sha1.h.tmp @echo "updating git_sha1.h" diff --git a/src/SConscript b/src/SConscript index d861af8e4d..de72f0e6c6 100644 --- a/src/SConscript +++ b/src/SConscript @@ -22,27 +22,15 @@ def write_git_sha1_h_file(filename): 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() + with open(tempfile, "w") as f: + args = [ 'bash', Dir('#').abspath + '/git_sha1_gen.sh' ] + try: + subprocess.Popen(args, stdout=f) + except: + print "Warning: exception in write_git_sha1_h_file()" + return + 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. diff --git a/src/mesa/Android.libmesa_git_sha1.mk b/src/mesa/Android.libmesa_git_sha1.mk index 0fd176bf7d..bf99af49b4 100644 --- a/src/mesa/Android.libmesa_git_sha1.mk +++ b/src/mesa/Android.libmesa_git_sha1.mk @@ -46,12 +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) touch $@ - $(hide) if which git > /dev/null; then \ - git --git-dir $(MESA_TOP)/.git log -n 1 --oneline | \ - sed 's/^\([^ ]*\) .*/#define MESA_GIT_SHA1 "git-\1"/' \ - > $@; \ - fi + $(hide) bash $(MESA_TOP)/git_sha1_gen.sh > $@ LOCAL_EXPORT_C_INCLUDE_DIRS := $(intermediates) -- Cheers, Eric _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev