aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLev Stipakov2022-12-19 17:56:38 +0200
committerGert Doering2022-12-19 17:45:28 +0100
commit4a165e1ea58eb395865a9975cefcfbfe7b41c356 (patch)
tree7bd1d49e37e1e6a22166b840d637d84dc94606e8
parent1ec71f4568e13f2876e6ec15f1efda530693d2e9 (diff)
downloadopenvpn-4a165e1ea58eb395865a9975cefcfbfe7b41c356.zip
openvpn-4a165e1ea58eb395865a9975cefcfbfe7b41c356.tar.gz
git-version.py: proper support for tags
Git magic to get branch name git rev-parse --symbolic-full-name HEAD doesn't work when we're on tag, which is the case when we build releases. First, try to get tag name with git describe --exact-match and if this fails, get branch name as before. Use subprocess.Popen() to suppress stdout/stderr output. Github: Fixes OpenVPN/openvpn#199 Signed-off-by: Lev Stipakov <lev@openvpn.net> Acked-by: Frank Lichtenheld <frank@lichtenheld.com> Message-Id: <20221219155638.497-1-lstipakov@gmail.com> URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg25773.html Signed-off-by: Gert Doering <gert@greenie.muc.de> (cherry picked from commit 91ab3d022e2652a46e6d6f25ab62f7c903e583c1)
-rw-r--r--build/msvc/msvc-generate/git-version.py20
1 files changed, 15 insertions, 5 deletions
diff --git a/build/msvc/msvc-generate/git-version.py b/build/msvc/msvc-generate/git-version.py
index 814dc86..0045895 100644
--- a/build/msvc/msvc-generate/git-version.py
+++ b/build/msvc/msvc-generate/git-version.py
@@ -24,15 +24,25 @@
import os
import sys
+import subprocess
+
+def run_command(args):
+ sp = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.DEVNULL)
+ o, _ = sp.communicate()
+ return o.decode("utf-8")[:-1]
def get_branch_commit_id():
- commit_id = os.popen("git rev-parse --short=16 HEAD").read()[:-1]
+ commit_id = run_command(["git", "rev-parse", "--short=16", "HEAD"])
if not commit_id:
raise
- l = os.popen("git rev-parse --symbolic-full-name HEAD").read().split("/")[2:]
- if not l:
- l = ["none\n"]
- branch = "/" .join(l)[:-1]
+ branch = run_command(["git", "describe", "--exact-match"])
+ if not branch:
+ # this returns an array like ["master"] or ["release", "2.6"]
+ branch = run_command(["git", "rev-parse", "--symbolic-full-name", "HEAD"]).split("/")[2:]
+ if not branch:
+ branch = ["none"]
+ branch = "/" .join(branch) # handle cases like release/2.6
+
return branch, commit_id
def main():