build systems: uniformize git_sha1.h generation
authorEric Engestrom <eric.engestrom@imgtec.com>
Tue, 27 Jun 2017 11:08:41 +0000 (12:08 +0100)
committerEric Engestrom <eric.engestrom@imgtec.com>
Thu, 29 Jun 2017 15:24:58 +0000 (16:24 +0100)
Signed-off-by: Eric Engestrom <eric.engestrom@imgtec.com>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
git_sha1_gen.sh [new file with mode: 0755]
src/Makefile.am
src/SConscript
src/mesa/Android.libmesa_git_sha1.mk

diff --git a/git_sha1_gen.sh b/git_sha1_gen.sh
new file mode 100755 (executable)
index 0000000..20ab8df
--- /dev/null
@@ -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"
index df912c442af14a239e1f7a13b6517d6985f3c1b8..d8a2ee59fca648a6185f1565fbc98fdc8e7f16c1 100644 (file)
 
 .PHONY: git_sha1.h.tmp
 git_sha1.h.tmp:
 
 .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"
 
 git_sha1.h: git_sha1.h.tmp
        @echo "updating git_sha1.h"
index d861af8e4d719248b8f89dbb57f5656a6b2d7438..5e1171b5246b08e53960197a3ef3aaf5e9596628 100644 (file)
@@ -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."""
 
     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"
     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.
     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.
index 0fd176bf7d5d272917a1d30dbdfa404960fe88c8..a5a1ebb37f5150cbffa71dd89b9c36f1fe2f3dab 100644 (file)
@@ -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"
 $(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)
 
 
 LOCAL_EXPORT_C_INCLUDE_DIRS := $(intermediates)