summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xgit_sha1_gen.sh12
-rw-r--r--src/Makefile.am13
-rw-r--r--src/SConscript28
-rw-r--r--src/mesa/Android.libmesa_git_sha1.mk7
4 files changed, 22 insertions, 38 deletions
diff --git a/git_sha1_gen.sh b/git_sha1_gen.sh
new file mode 100755
index 00000000000..20ab8df8eae
--- /dev/null
+++ b/git_sha1_gen.sh
@@ -0,0 +1,12 @@
+#!/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 df912c442af..d8a2ee59fca 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
+ @sh $(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 d861af8e4d7..5e1171b5246 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 = [ 'sh', 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 0fd176bf7d5..a5a1ebb37f5 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) sh $(MESA_TOP)/git_sha1_gen.sh > $@
LOCAL_EXPORT_C_INCLUDE_DIRS := $(intermediates)