build systems: uniformize git_sha1.h generation

Signed-off-by: Eric Engestrom <eric.engestrom@imgtec.com>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
This commit is contained in:
Eric Engestrom 2017-06-27 12:08:41 +01:00
parent ccfac28835
commit 3fd425aed7
4 changed files with 22 additions and 38 deletions

12
git_sha1_gen.sh Executable file
View File

@ -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"

View File

@ -21,18 +21,7 @@
.PHONY: git_sha1.h.tmp .PHONY: git_sha1.h.tmp
git_sha1.h.tmp: git_sha1.h.tmp:
@# Don't assume that $(top_srcdir)/.git is a directory. It may be @sh $(top_srcdir)/git_sha1_gen.sh > $@
@# 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
git_sha1.h: git_sha1.h.tmp git_sha1.h: git_sha1.h.tmp
@echo "updating git_sha1.h" @echo "updating git_sha1.h"

View 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 to retrieve the git hashid and write the header file. An empty file
will be created if anything goes wrong.""" will be created if anything goes wrong."""
args = [ 'git', 'rev-parse', '--short=10', 'HEAD' ] tempfile = "git_sha1.h.tmp"
with open(tempfile, "w") as f:
args = [ 'sh', Dir('#').abspath + '/git_sha1_gen.sh' ]
try: try:
(commit, foo) = subprocess.Popen(args, stdout=subprocess.PIPE).communicate() subprocess.Popen(args, stdout=f)
except: except:
print "Warning: exception in write_git_sha1_h_file()" 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 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()
if not os.path.exists(filename) or not filecmp.cmp(tempfile, filename): 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, # The filename does not exist or it's different from the new file,
# so replace old file with new. # so replace old file with new.

View File

@ -46,12 +46,7 @@ LOCAL_GENERATED_SOURCES += $(addprefix $(intermediates)/, git_sha1.h)
$(intermediates)/git_sha1.h: $(wildcard $(MESA_TOP)/.git/logs/HEAD) $(intermediates)/git_sha1.h: $(wildcard $(MESA_TOP)/.git/logs/HEAD)
@mkdir -p $(dir $@) @mkdir -p $(dir $@)
@echo "GIT-SHA1: $(PRIVATE_MODULE) <= git" @echo "GIT-SHA1: $(PRIVATE_MODULE) <= git"
$(hide) touch $@ $(hide) sh $(MESA_TOP)/git_sha1_gen.sh > $@
$(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
LOCAL_EXPORT_C_INCLUDE_DIRS := $(intermediates) LOCAL_EXPORT_C_INCLUDE_DIRS := $(intermediates)