[Mesa-dev] [PATCH mesa] build systems: uniformize git_sha1.h generation

Eric Engestrom eric.engestrom at imgtec.com
Tue Jun 27 12:47:12 UTC 2017


Signed-off-by: Eric Engestrom <eric.engestrom at 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



More information about the mesa-dev mailing list