summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorDavid Ostrovsky <david@ostrovsky.org>2020-06-21 16:56:57 +0200
committerMatthias Sohn <matthias.sohn@sap.com>2020-07-17 01:10:15 +0200
commitd35f0ffb7c33a11f8192ec64da5a736827ab472d (patch)
tree0730ca36c8d6e5bc0d6d5ad6d8633a6c9ae91e9f /tools
parent533272372945e0e5ddbab1502f185c5afd582f19 (diff)
downloadjgit-d35f0ffb7c33a11f8192ec64da5a736827ab472d.tar.gz
jgit-d35f0ffb7c33a11f8192ec64da5a736827ab472d.zip
Bazel: Add workspace status command to stamp final artifact
Include implementation version in jgit library. This version is used by other products that depend on JGit, and built using Bazel and not consume officially released artifact from Central or Eclipse own Maven repository. Most notably, in Gerrit Code Review JGit agent that was previously reported as "unknown", is now reported as: JGit/v5.8.0.202006091008-r-16-g14c43828d using this change [1]. [1] https://gerrit-review.googlesource.com/c/gerrit/+/272505 Change-Id: Ia50de9ac35b8dbe9e92d8ad7d0d14cd00f057863 Signed-off-by: David Ostrovsky <david@ostrovsky.org>
Diffstat (limited to 'tools')
-rw-r--r--tools/workspace_status.py45
1 files changed, 45 insertions, 0 deletions
diff --git a/tools/workspace_status.py b/tools/workspace_status.py
new file mode 100644
index 0000000000..ca9e0a98c9
--- /dev/null
+++ b/tools/workspace_status.py
@@ -0,0 +1,45 @@
+#!/usr/bin/env python
+# Copyright (C) 2020, David Ostrovsky <david@ostrovsky.org> and others
+#
+# This program and the accompanying materials are made available under the
+# terms of the Eclipse Distribution License v. 1.0 which is available at
+# http://www.eclipse.org/org/documents/edl-v10.php.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+
+# 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_JGIT_LABEL %s" % revision(ROOT, ROOT))