- Notifications
You must be signed in to change notification settings - Fork 892
/
Copy pathfind_version.py
75 lines (66 loc) · 2.6 KB
/
find_version.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
importsys
importsubprocess
fromdatetimeimportdate
if__name__=="__main__":
contrib=sys.argv[1]
headless=sys.argv[2]
rolling=sys.argv[3]
ci_build=sys.argv[4]
opencv_version=""
# dig out the version from OpenCV sources
version_file_path="opencv/modules/core/include/opencv2/core/version.hpp"
withopen(version_file_path, "r") asf:
forlineinf:
words=line.split()
if"CV_VERSION_MAJOR"inwords:
opencv_version+=words[2]
opencv_version+="."
if"CV_VERSION_MINOR"inwords:
opencv_version+=words[2]
opencv_version+="."
if"CV_VERSION_REVISION"inwords:
opencv_version+=words[2]
break
# used in local dev releases
git_hash= (
subprocess.check_output(["git", "rev-parse", "--short", "HEAD"])
.splitlines()[0]
.decode()
)
# this outputs the annotated tag if we are exactly on a tag, otherwise <tag>-<n>-g<shortened sha-1>
try:
tag= (
subprocess.check_output(
["git", "describe", "--tags"], stderr=subprocess.STDOUT
)
.splitlines()[0]
.decode()
.split("-")
)
exceptsubprocess.CalledProcessErrorase:
# no tags reachable (e.g. on a topic branch in a fork), see
# https://stackoverflow.com/questions/4916492/git-describe-fails-with-fatal-no-names-found-cannot-describe-anything
ife.output.rstrip() ==b"fatal: No names found, cannot describe anything.":
tag= []
else:
print(e.output)
raise
iflen(tag) ==1:
# tag identifies the build and should be a sequential revision number
version=tag[0]
opencv_version+=".{}".format(version)
# rolling has converted into string using get_and_set_info() function in setup.py
elifrolling=="True":
# rolling version identifier, will be published in a dedicated rolling PyPI repository
version=date.today().strftime('%Y%m%d')
opencv_version+=".{}".format(version)
else:
# local version identifier, not to be published on PyPI
version=git_hash
opencv_version+="+{}".format(version)
withopen("cv2/version.py", "w") asf:
f.write('opencv_version = "{}"\n'.format(opencv_version))
f.write("contrib = {}\n".format(contrib))
f.write("headless = {}\n".format(headless))
f.write("rolling = {}\n".format(rolling))
f.write("ci_build = {}".format(ci_build))