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