diff options
author | Lev Stipakov | 2022-12-19 17:56:38 +0200 |
---|---|---|
committer | Gert Doering | 2022-12-19 17:45:28 +0100 |
commit | 4a165e1ea58eb395865a9975cefcfbfe7b41c356 (patch) | |
tree | 7bd1d49e37e1e6a22166b840d637d84dc94606e8 | |
parent | 1ec71f4568e13f2876e6ec15f1efda530693d2e9 (diff) | |
download | openvpn-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.py | 20 |
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(): |