[Mesa-dev] [PATCH] Convert git_sha1_gen script to Python.
Jose Fonseca
jfonseca at vmware.com
Tue Aug 1 13:38:31 UTC 2017
Python is the scripting language we've been using for scripts that need
to run across all supported platforms.
Shell is *not* a portable language for scripts.
---
Makefile.am | 2 +-
bin/git_sha1_gen.py | 20 ++++++++++++++++++++
bin/git_sha1_gen.sh | 12 ------------
src/Makefile.am | 2 +-
src/SConscript | 3 ++-
src/mesa/Android.libmesa_git_sha1.mk | 2 +-
6 files changed, 25 insertions(+), 16 deletions(-)
create mode 100755 bin/git_sha1_gen.py
delete mode 100755 bin/git_sha1_gen.sh
diff --git a/Makefile.am b/Makefile.am
index cf52c834aa..538c38ddeb 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -53,7 +53,7 @@ EXTRA_DIST = \
common.py \
docs \
doxygen \
- bin/git_sha1_gen.sh \
+ bin/git_sha1_gen.py \
scons \
SConstruct
diff --git a/bin/git_sha1_gen.py b/bin/git_sha1_gen.py
new file mode 100755
index 0000000000..6d13db1e16
--- /dev/null
+++ b/bin/git_sha1_gen.py
@@ -0,0 +1,20 @@
+#!/usr/bin/env python
+
+import os.path
+import subprocess
+import sys
+
+git_dir = os.path.join(os.path.dirname(sys.argv[0]), '..', '.git')
+try:
+ git_sha1 = subprocess.check_output([
+ 'git',
+ '--git-dir=' + git_dir,
+ 'rev-parse',
+ '--short=10',
+ 'HEAD',
+ ], stderr=open(os.devnull, 'w'))
+except subprocess.CalledProcessError as e:
+ # don't print anything if git fails
+ pass
+else:
+ sys.stdout.write('#define MESA_GIT_SHA1 "git-%s"\n' % git_sha1.rstrip())
diff --git a/bin/git_sha1_gen.sh b/bin/git_sha1_gen.sh
deleted file mode 100755
index 898e590758..0000000000
--- a/bin/git_sha1_gen.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/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 5aee6b0141..8d7483fc75 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -21,7 +21,7 @@
.PHONY: git_sha1.h.tmp
git_sha1.h.tmp:
- @sh $(top_srcdir)/bin/git_sha1_gen.sh > $@
+ @python $(top_srcdir)/bin/git_sha1_gen.py > $@
git_sha1.h: git_sha1.h.tmp
@echo "updating git_sha1.h"
diff --git a/src/SConscript b/src/SConscript
index 82bc28518e..bd20d4e210 100644
--- a/src/SConscript
+++ b/src/SConscript
@@ -1,6 +1,7 @@
import filecmp
import os
import subprocess
+from sys import executable as python_cmd
Import('*')
@@ -25,7 +26,7 @@ def write_git_sha1_h_file(filename):
tempfile = "git_sha1.h.tmp"
with open(tempfile, "w") as f:
- args = [ 'sh', Dir('#').abspath + '/bin/git_sha1_gen.sh' ]
+ args = [ python_cmd, Dir('#').abspath + '/bin/git_sha1_gen.py' ]
try:
subprocess.Popen(args, stdout=f).wait()
except:
diff --git a/src/mesa/Android.libmesa_git_sha1.mk b/src/mesa/Android.libmesa_git_sha1.mk
index 7d64b1c809..f66f88484b 100644
--- a/src/mesa/Android.libmesa_git_sha1.mk
+++ b/src/mesa/Android.libmesa_git_sha1.mk
@@ -46,7 +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) sh $(MESA_TOP)/bin/git_sha1_gen.sh > $@
+ $(hide) python $(MESA_TOP)/bin/git_sha1_gen.py > $@
LOCAL_EXPORT_C_INCLUDE_DIRS := $(intermediates)
--
2.11.0
More information about the mesa-dev
mailing list