Skip to content

Commit c2a8fd3

Browse files
committed
More version finding repair
When setup.py is run from an sdist distribution, it is expected that the version will come from stgit/builtin_version.py which was generated when the sdist was built. Thus setup.py is updated to look for the builtin version along with the describe and archival versions. Also repair stgit.version.git_archival_version() to strip the leading 'v' from the tag to get the version-proper. Signed-off-by: Peter Grayson <[email protected]>
1 parent 391b5bb commit c2a8fd3

File tree

2 files changed

+25
-11
lines changed

2 files changed

+25
-11
lines changed

setup.py

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,10 +59,21 @@ def __check_git_version():
5959
# ensure readable template files
6060
old_mask = os.umask(0o022)
6161

62-
try:
63-
ver = version.git_describe_version()
64-
except version.VersionUnavailable:
65-
ver = version.git_archival_version()
62+
for get_ver in [
63+
version.git_describe_version,
64+
version.git_archival_version,
65+
version.get_builtin_version,
66+
]:
67+
try:
68+
ver = get_ver()
69+
except version.VersionUnavailable:
70+
continue
71+
else:
72+
break
73+
else:
74+
print('StGit version unavailable', file=sys.stderr)
75+
sys.exit(1)
76+
6677
with open('stgit/builtin_version.py', 'w') as f:
6778
print(
6879
'# This file is automatically generated. Do not edit.',

stgit/version.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ def git_describe_version():
2222
raise VersionUnavailable(str(e))
2323
m = re.match(r'^v([0-9].*)', v)
2424
if m:
25-
v = m.group()
25+
v = m.group(1)
2626
else:
2727
raise VersionUnavailable('bad version: %s' % v)
2828
try:
@@ -37,19 +37,22 @@ def git_describe_version():
3737

3838

3939
def git_archival_version():
40-
tag_re = re.compile(r'(?<=\btag: )([^,]+)\b')
4140
archival_path = os.path.join(sys.path[0], '.git_archival.txt')
41+
if not os.path.isfile(archival_path):
42+
# The archival file will not be present in sdist archives.
43+
raise VersionUnavailable('%s does not exist' % archival_path)
44+
tag_re = re.compile(r'(?<=\btag: )([^,]+)\b')
4245
with open(archival_path) as f:
4346
for line in f:
4447
if line.startswith('ref-names:'):
45-
tags = tag_re.findall(line)
46-
if tags:
47-
return tags[0]
48+
for tag in tag_re.findall(line):
49+
if tag.startswith('v'):
50+
return tag[1:]
4851
else:
4952
raise VersionUnavailable('no tags found in %s' % archival_path)
5053

5154

52-
def builtin_version():
55+
def get_builtin_version():
5356
try:
5457
import stgit.builtin_version
5558
except ImportError:
@@ -59,7 +62,7 @@ def builtin_version():
5962

6063

6164
def get_version():
62-
for v in [builtin_version, git_describe_version, git_archival_version]:
65+
for v in [get_builtin_version, git_describe_version, git_archival_version]:
6366
try:
6467
return v()
6568
except VersionUnavailable:

0 commit comments

Comments
 (0)