Synchronize status command between gerrit and gitiles This is a prepation step for linking JGit as a submodule. For stamping of JGit artifacts, revision version must be exposed in workspace status command. Use this opportunity to synchronize status command between gerrit and gitiles repositories and migrate shell script to python. Change-Id: If30c42578396f31beee45998e5f2fa75d69703af
diff --git a/.bazelrc b/.bazelrc index dde54fe..52d8749 100644 --- a/.bazelrc +++ b/.bazelrc
@@ -1,4 +1,4 @@ -build --workspace_status_command=./tools/workspace-status.sh +build --workspace_status_command="python3 ./tools/workspace_status.py" build --repository_cache=~/.gerritcodereview/bazel-cache/repository build --experimental_strict_action_env build --action_env=PATH
diff --git a/tools/workspace-status.sh b/tools/workspace-status.sh deleted file mode 100755 index 9cc40e9..0000000 --- a/tools/workspace-status.sh +++ /dev/null
@@ -1,17 +0,0 @@ -#!/usr/bin/env bash - -# This script will be run by bazel when the build process starts to -# generate key-value information that represents the status of the -# workspace. The output should be like -# -# KEY1 VALUE1 -# KEY2 VALUE2 -# -# If the script exits with non-zero code, it's considered as a failure -# and the output will be discarded. - -function rev() { - cd $1; git describe --always --match "v[0-9].*" --dirty -} - -echo STABLE_BUILD_GITILES_LABEL $(rev .)
diff --git a/tools/workspace_status.py b/tools/workspace_status.py new file mode 100644 index 0000000..aae9318 --- /dev/null +++ b/tools/workspace_status.py
@@ -0,0 +1,38 @@ +#!/usr/bin/env python3 + +# This script will be run by bazel when the build process starts to +# generate key-value information that represents the status of the +# workspace. The output should be like +# +# KEY1 VALUE1 +# KEY2 VALUE2 +# +# If the script exits with non-zero code, it's considered as a failure +# and the output will be discarded. + +from __future__ import print_function +import os +import subprocess +import sys + +ROOT = os.path.abspath(__file__) +while not os.path.exists(os.path.join(ROOT, 'WORKSPACE')): + ROOT = os.path.dirname(ROOT) +CMD = ['git', 'describe', '--always', '--match', 'v[0-9].*', '--dirty'] + + +def revision(directory, parent): + try: + os.chdir(directory) + return subprocess.check_output(CMD).strip().decode("utf-8") + except OSError as err: + print('could not invoke git: %s' % err, file=sys.stderr) + sys.exit(1) + except subprocess.CalledProcessError as err: + # ignore "not a git repository error" to report unknown version + return None + finally: + os.chdir(parent) + + +print("STABLE_BUILD_GITILES_LABEL %s" % revision(ROOT, ROOT))