3 # packagepython.py -- implement general StepMake-wide python stuff
5 # source file of the GNU LilyPond music typesetter
7 # (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
8 # Jan Nieuwenhuizen <janneke@gnu.org>
18 make_assign_re = regex.compile('^\([A-Z_]*\)=\(.*\)$')
20 def read_makefile (fn):
22 lines = file.readlines()
29 if make_assign_re.search(l) <> -1:
30 nm = make_assign_re.group(1)
31 val = make_assign_re.group(2)
36 def __init__ (self, dirname):
37 dict = read_makefile (dirname + '/VERSION')
39 for x in [ 'MAJOR_VERSION', 'MINOR_VERSION', 'PATCH_LEVEL']:
40 version_list.append (string.atoi (dict[x]))
41 version_list.append (dict['MY_PATCH_LEVEL'])
43 self.groupdir = self.topdir + '/..'
44 self.patch_dir = self.groupdir + '/patches/'
45 self.release_dir = self.groupdir + '/releases/'
46 self.test_dir = self.groupdir + '/test/'
47 self.version = tuple(version_list)
48 self.Name = dict['PACKAGE_NAME']
49 self.name = string.lower (self.Name)
50 if self.name == 'lilypond':
51 self.nickname = 'lelie'
53 self.nickname = self.name
54 self.NAME = string.upper (self.Name)
60 m= os.environ['MAILADDRESS']
62 m= '(address unknown)'
65 m= os.environ['WEBMASTER']
71 def full_version_tup(tup):
80 def split_my_patchlevel(str):
81 return (regsub.sub('[0-9]*$', '', str),
82 string.atoi(regsub.sub('[^0-9]*', '', str)))
85 def next_version(tup):
86 l = list(full_version_tup (tup))
89 (t3name,t3num)= split_my_patchlevel (l[3])
91 t3num = '%d' % (t3num + 1)
97 return tuple(l[0:3] + [t3name + t3num])
99 def prev_version(tup):
100 l = list(full_version_tup (tup))
103 (t3name,t3num)= split_my_patchlevel (l[3])
104 if t3num and t3num - 1 > 0:
105 t3num = '%d' %(t3num - 1)
112 return tuple(l[0:3] + [t3name + t3num])
114 def version_tuple_to_str(tup):
115 tup = full_version_tup (tup)
120 return ('%d.%d.%d' % tup[0:3]) + my
122 def version_str_to_tuple(str):
123 t = string.split(str, '.')
128 return (string.atoi(t[0]), string.atoi(t[1]), string.atoi(t[2]), mypatch)
130 def version_compare (tupl, tupr):
131 tupl = full_version_tup (tupl)
132 tupr = full_version_tup (tupr)
134 if tupl[i] - tupr[i]: return tupl[i] - tupr[i]
135 if tupl[3] and tupr[3]:
136 lname = regsub.sub('[0-9]*$', '', tupl[3])
137 lnum = string.atoi(regsub.sub('[^0-9]*', '', tupl[3]))
138 rname = regsub.sub('[0-9]*$', '', tupr[3])
139 rnum = string.atoi(regsub.sub('[^0-9]*', '', tupr[3]))
142 return sign (lnum - rnum)
149 if __name__ == '__main__':
152 print v, prev_version(v), next_version(v)
154 print version_tuple_to_str(pv), prev_version(pv), next_version(pv)
155 print version_tuple_to_str((0,1,1,''))
156 print full_version_tup ((0,1))