##// END OF EJS Templates
setup.py: reload __version__.py after writing it....
Alexis S. L. Carvalho -
r4066:cff3e4b4 default
parent child Browse files
Show More
@@ -1,74 +1,79 b''
1 # Copyright (C) 2005, 2006 by Intevation GmbH
1 # Copyright (C) 2005, 2006 by Intevation GmbH
2 # Author(s):
2 # Author(s):
3 # Thomas Arendsen Hein <thomas@intevation.de>
3 # Thomas Arendsen Hein <thomas@intevation.de>
4 #
4 #
5 # This program is free software under the GNU GPL (>=v2)
5 # This program is free software under the GNU GPL (>=v2)
6 # Read the file COPYING coming with the software for details.
6 # Read the file COPYING coming with the software for details.
7
7
8 """
8 """
9 Mercurial version
9 Mercurial version
10 """
10 """
11
11
12 import os
12 import os
13 import os.path
13 import os.path
14 import re
14 import re
15 import time
15 import time
16 import util
16 import util
17
17
18 unknown_version = 'unknown'
18 unknown_version = 'unknown'
19 remembered_version = False
19 remembered_version = False
20
20
21 def get_version():
21 def get_version(doreload=False):
22 """Return version information if available."""
22 """Return version information if available."""
23 try:
23 try:
24 from mercurial.__version__ import version
24 import mercurial.__version__
25 if doreload:
26 reload(mercurial.__version__)
27 version = mercurial.__version__.version
25 except ImportError:
28 except ImportError:
26 version = unknown_version
29 version = unknown_version
27 return version
30 return version
28
31
29 def write_version(version):
32 def write_version(version):
30 """Overwrite version file."""
33 """Overwrite version file."""
31 if version == get_version():
34 if version == get_version():
32 return
35 return
33 directory = os.path.dirname(__file__)
36 directory = os.path.dirname(__file__)
34 for suffix in ['py', 'pyc', 'pyo']:
37 for suffix in ['py', 'pyc', 'pyo']:
35 try:
38 try:
36 os.unlink(os.path.join(directory, '__version__.%s' % suffix))
39 os.unlink(os.path.join(directory, '__version__.%s' % suffix))
37 except OSError:
40 except OSError:
38 pass
41 pass
39 f = open(os.path.join(directory, '__version__.py'), 'w')
42 f = open(os.path.join(directory, '__version__.py'), 'w')
40 f.write("# This file is auto-generated.\n")
43 f.write("# This file is auto-generated.\n")
41 f.write("version = %r\n" % version)
44 f.write("version = %r\n" % version)
42 f.close()
45 f.close()
46 # reload the file we've just written
47 get_version(True)
43
48
44 def remember_version(version=None):
49 def remember_version(version=None):
45 """Store version information."""
50 """Store version information."""
46 global remembered_version
51 global remembered_version
47 if not version and os.path.isdir(".hg"):
52 if not version and os.path.isdir(".hg"):
48 f = os.popen("hg identify 2> %s" % util.nulldev) # use real hg installation
53 f = os.popen("hg identify 2> %s" % util.nulldev) # use real hg installation
49 ident = f.read()[:-1]
54 ident = f.read()[:-1]
50 if not f.close() and ident:
55 if not f.close() and ident:
51 ids = ident.split(' ', 1)
56 ids = ident.split(' ', 1)
52 version = ids.pop(0)
57 version = ids.pop(0)
53 if version[-1] == '+':
58 if version[-1] == '+':
54 version = version[:-1]
59 version = version[:-1]
55 modified = True
60 modified = True
56 else:
61 else:
57 modified = False
62 modified = False
58 if version.isalnum() and ids:
63 if version.isalnum() and ids:
59 for tag in ids[0].split('/'):
64 for tag in ids[0].split('/'):
60 # is a tag is suitable as a version number?
65 # is a tag is suitable as a version number?
61 if re.match(r'^(\d+\.)+[\w.-]+$', tag):
66 if re.match(r'^(\d+\.)+[\w.-]+$', tag):
62 version = tag
67 version = tag
63 break
68 break
64 if modified:
69 if modified:
65 version += time.strftime('+%Y%m%d')
70 version += time.strftime('+%Y%m%d')
66 if version:
71 if version:
67 remembered_version = True
72 remembered_version = True
68 write_version(version)
73 write_version(version)
69
74
70 def forget_version():
75 def forget_version():
71 """Remove version information."""
76 """Remove version information."""
72 if remembered_version:
77 if remembered_version:
73 write_version(unknown_version)
78 write_version(unknown_version)
74
79
General Comments 0
You need to be logged in to leave comments. Login now