|
dvander@2784
|
1 |
# vim: set ts=2 sw=2 tw=99 noet ft=python: |
|
dvander@2784
|
2 |
import os |
|
dvander@2784
|
3 |
import re |
|
dvander@2784
|
4 |
import subprocess |
|
dvander@2784
|
5 |
from ambuild.cache import Cache |
|
dvander@2784
|
6 |
import ambuild.command as command |
|
dvander@2784
|
7 |
|
|
dvander@2784
|
8 |
#Quickly try to ascertain the current repository revision |
|
dvander@2784
|
9 |
def GetVersion(): |
|
dvander@2784
|
10 |
args = ['hg', 'parent', '-R', AMBuild.sourceFolder] |
|
dvander@2784
|
11 |
p = command.RunDirectCommand(AMBuild, args) |
|
dvander@2784
|
12 |
m = re.match('changeset:\s+(\d+):(.+)', p.stdoutText) |
|
dvander@2784
|
13 |
if m == None: |
|
dvander@2784
|
14 |
raise Exception('Could not determine repository version') |
|
dvander@2784
|
15 |
return m.groups() |
|
dvander@2784
|
16 |
|
|
dvander@2784
|
17 |
def PerformReversioning(): |
|
dvander@2784
|
18 |
rev, cset = GetVersion() |
|
dvander@2784
|
19 |
cacheFile = os.path.join(AMBuild.outputFolder, '.ambuild', 'hgcache') |
|
dvander@2784
|
20 |
cache = Cache(cacheFile) |
|
dvander@2784
|
21 |
if os.path.isfile(cacheFile): |
|
dvander@2784
|
22 |
cache.LoadCache() |
|
dvander@2784
|
23 |
if cache.HasVariable('cset') and cache['cset'] == cset: |
|
dvander@2784
|
24 |
return False |
|
dvander@2784
|
25 |
cache.CacheVariable('cset', cset) |
|
dvander@2784
|
26 |
|
|
dvander@2784
|
27 |
productFile = open(os.path.join(AMBuild.sourceFolder, 'product.version'), 'r') |
|
dvander@2784
|
28 |
productContents = productFile.read() |
|
dvander@2784
|
29 |
productFile.close() |
|
asherkin@3630
|
30 |
m = re.match('(\d+)\.(\d+)\.(\d+)-?(.*)', productContents) |
|
dvander@2784
|
31 |
if m == None: |
|
dvander@2784
|
32 |
raise Exception('Could not detremine product version') |
|
dvander@2784
|
33 |
major, minor, release, tag = m.groups() |
|
asherkin@3630
|
34 |
|
|
asherkin@3630
|
35 |
fullstring = "{0}.{1}.{2}".format(major, minor, release) |
|
asherkin@3630
|
36 |
if tag != "": |
|
asherkin@3630
|
37 |
fullstring += "-{0}".format(tag) |
|
asherkin@3630
|
38 |
if tag == "dev": |
|
asherkin@3630
|
39 |
fullstring += "+{0}".format(rev) |
|
asherkin@3630
|
40 |
|
|
dvander@2784
|
41 |
incFolder = os.path.join(AMBuild.outputFolder, 'includes') |
|
dvander@2784
|
42 |
if not os.path.isdir(incFolder): |
|
dvander@2784
|
43 |
os.makedirs(incFolder) |
|
dvander@2784
|
44 |
incFile = open(os.path.join(incFolder, 'sourcemod_version_auto.h'), 'w') |
|
dvander@2784
|
45 |
incFile.write(""" |
|
dvander@2784
|
46 |
#ifndef _SOURCEMOD_AUTO_VERSION_INFORMATION_H_ |
|
dvander@2784
|
47 |
#define _SOURCEMOD_AUTO_VERSION_INFORMATION_H_ |
|
dvander@2784
|
48 |
|
|
asherkin@3630
|
49 |
#define SM_BUILD_TAG \"{0}\" |
|
asherkin@3630
|
50 |
#define SM_BUILD_REV \"{1}\" |
|
asherkin@3630
|
51 |
#define SM_BUILD_CSET \"{2}\" |
|
asherkin@3630
|
52 |
#define SM_BUILD_MAJOR \"{3}\" |
|
asherkin@3630
|
53 |
#define SM_BUILD_MINOR \"{4}\" |
|
asherkin@3630
|
54 |
#define SM_BUILD_RELEASE \"{5}\" |
|
asherkin@3630
|
55 |
|
|
asherkin@3630
|
56 |
#define SM_BUILD_UNIQUEID SM_BUILD_REV \":\" SM_BUILD_CSET |
|
asherkin@3630
|
57 |
|
|
asherkin@3630
|
58 |
#define SM_VERSION_STRING \"{6}\" |
|
asherkin@3630
|
59 |
#define SM_VERSION_FILE {7},{8},{9},0 |
|
dvander@2784
|
60 |
|
|
dvander@2784
|
61 |
#endif /* _SOURCEMOD_AUTO_VERSION_INFORMATION_H_ */ |
|
dvander@2784
|
62 |
|
|
asherkin@3630
|
63 |
""".format(tag, rev, cset, major, minor, release, fullstring, major, minor, release)) |
|
asherkin@3630
|
64 |
incFile.close() |
|
asherkin@3630
|
65 |
|
|
asherkin@3630
|
66 |
incFile = open(os.path.join(incFolder, 'version_auto.inc'), 'w') |
|
asherkin@3630
|
67 |
incFile.write(""" |
|
asherkin@3630
|
68 |
#if defined _auto_version_included |
|
asherkin@3630
|
69 |
#endinput |
|
asherkin@3630
|
70 |
#endif |
|
asherkin@3630
|
71 |
#define _auto_version_included |
|
asherkin@3630
|
72 |
|
|
asherkin@3630
|
73 |
#define SOURCEMOD_V_TAG \"{0}\" |
|
asherkin@3630
|
74 |
#define SOURCEMOD_V_REV {1} |
|
asherkin@3630
|
75 |
#define SOURCEMOD_V_CSET \"{2}\" |
|
asherkin@3630
|
76 |
#define SOURCEMOD_V_MAJOR {3} |
|
asherkin@3630
|
77 |
#define SOURCEMOD_V_MINOR {4} |
|
asherkin@3630
|
78 |
#define SOURCEMOD_V_RELEASE {5} |
|
asherkin@3630
|
79 |
|
|
asherkin@3630
|
80 |
#define SOURCEMOD_VERSION \"{6}\" |
|
asherkin@3630
|
81 |
|
|
asherkin@3630
|
82 |
""".format(tag, rev, cset, major, minor, release, fullstring)) |
|
dvander@2784
|
83 |
incFile.close() |
|
dvander@2784
|
84 |
|
|
dvander@2784
|
85 |
cache.WriteCache() |
|
dvander@2784
|
86 |
|
|
dvander@2784
|
87 |
PerformReversioning() |
|
dvander@2784
|
88 |
|
|
dvander@2784
|
89 |
|