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>
13 # from flower import *
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 (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 = lower (self.Name)
50 if self.name == 'lilypond':
51 self.nickname = 'lelie'
53 self.nickname = self.name
54 self.NAME = upper (self.Name)
60 m= os.environ['MAILADDRESS']
62 m= '(address unknown)'
66 def full_version_tup(tup):
75 def split_my_patchlevel(str):
76 return (regsub.sub('[0-9]*$', '', str),
77 atoi(regsub.sub('[^0-9]*', '', str)))
80 def next_version(tup):
81 l = list(full_version_tup (tup))
84 (t3name,t3num)= split_my_patchlevel (l[3])
86 t3num = '%d' % (t3num + 1)
92 return tuple(l[0:3] + [t3name + t3num])
94 def prev_version(tup):
95 l = list(full_version_tup (tup))
98 (t3name,t3num)= split_my_patchlevel (l[3])
99 if t3num and t3num - 1 > 0:
100 t3num = '%d' %(t3num - 1)
107 return tuple(l[0:3] + [t3name + t3num])
109 def version_tuple_to_str(tup):
110 tup = full_version_tup (tup)
115 return ('%d.%d.%d' % tup[0:3]) + my
117 def version_str_to_tuple(str):
123 return (atoi(t[0]), atoi(t[1]), atoi(t[2]), mypatch)
125 def version_compare (tupl, tupr):
126 tupl = full_version_tup (tupl)
127 tupr = full_version_tup (tupr)
129 if tupl[i] - tupr[i]: return tupl[i] - tupr[i]
130 if tupl[3] and tupr[3]:
131 lname = regsub.sub('[0-9]*$', '', tupl[3])
132 lnum = atoi(regsub.sub('[^0-9]*', '', tupl[3]))
133 rname = regsub.sub('[0-9]*$', '', tupr[3])
134 rnum = atoi(regsub.sub('[^0-9]*', '', tupr[3]))
137 return sign (lnum - rnum)
144 if __name__ == '__main__':
147 print v, prev_version(v), next_version(v)
149 print version_tuple_to_str(pv), prev_version(pv), next_version(pv)
150 print version_tuple_to_str((0,1,1,''))
151 print full_version_tup ((0,1))
166 sys.stderr.write( 'can\'t open file %s\n ' % f)
170 sys.stderr.write( 'gulped empty file: %s\n'% f)