4 # lily-python.py -- implement general LilyPond-wide python stuff
6 # source file of the GNU LilyPond music typesetter
8 # (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
24 version_re = regex.compile('\\version *\"\(.*\)\"')
25 # now used as shell script in configure too!
26 # make_assign_re = regex.compile('^\([A-Z_]*\) *= *\(.*\)$')
27 make_assign_re = regex.compile('^\([A-Z_]*\)=\(.*\)$')
29 def version_tuple(file):
30 lines = file.readlines()
36 if make_assign_re.search(l) <> -1:
37 nm = make_assign_re.group(1)
38 val = make_assign_re.group(2)
39 # if nm == 'TOPLEVEL_MAJOR_VERSION':
40 if nm == 'MAJOR_VERSION':
42 # elif nm == 'TOPLEVEL_MINOR_VERSION':
43 elif nm == 'MINOR_VERSION':
45 # elif nm == 'TOPLEVEL_PATCH_LEVEL':
46 elif nm == 'PATCH_LEVEL':
48 # elif nm == 'TOPLEVEL_MY_PATCH_LEVEL':
49 elif nm == 'MY_PATCH_LEVEL':
53 def next_version(tup):
54 return (tup[0], tup[1], tup[2] + 1, tup[3]);
56 def prev_version(tup):
59 return (tup[0], tup[1], tup[2], '');
61 return (tup[0], tup[1] -1, tup[2], '');
63 return (tup[0], tup[1], tup[2] - 1, '');
67 return 'lilypond-' + version_tuple_to_str(v)
70 return dirname(v) + '.tar.gz'
72 def released_tarball(v):
73 return lilydirs.release_dir + tarball(v)
76 def tuple_to_list(tup):
82 def version_str_to_tuple(str):
89 return (atoi(t[0]), atoi(t[1]), atoi(t[2]), mypatch)
93 def guess_mudela_version(filename):
98 if version_re.search(l) <> -1:
99 return version_re.group(1)
103 def version_tuple_to_str(tup):
106 mypatch = '.' + tup[3]
108 return ('%d.%d.%d' % tup[0:3]) + mypatch
113 self.topdir = os.environ['LILYPOND_SOURCEDIR'] + '/'
116 print 'Please set LILYPOND_SOURCEDIR to the toplevel source, eg LILYPOND_SOURCEDIR=/home/foobar/lilypond-1.2.3/'
120 self.groupdir = os.environ['LILYPOND_GROUPDIR'] + '/'
122 self.groupdir = self.topdir + '../'
124 self.release_dir = self.groupdir + '/releases/'
125 self.patch_dir = self.groupdir + '/patches/'
127 def version_tuple(self):
128 f = open (self.topdir + 'VERSION')
135 lilydirs = Lilydirs()
137 if __name__ == '__main__':
138 v= lilydirs.version_tuple()
139 print v, prev_version(v), next_version(v)
140 mv = guess_mudela_version(lilydirs.topdir + 'init/symbol.ly')
142 print version_tuple_to_str(pv), prev_version(pv), next_version(pv)
143 print version_tuple_to_str((0,1,1,''))
144 print mv, version_str_to_tuple(mv)
161 header_regex = regex.compile('\\header[ \t\n]*{\([^}]*\)}')
162 header_entry_regex = regex.compile('[\n\t ]*\([^\n\t ]+\)[\n\t ]*=[\n \t]*\([^;]+\)[\n \t]*;')
165 # FIXME breaks on multiple strings.
167 def read_mudela_header (fn):
169 s = regsub.gsub('%.*$', '', s)
170 s = regsub.gsub('\n', ' ', s)
173 if header_regex.search(s) <> -1:
174 h = header_regex.group(1)
178 while regex.search('=', h) <> -1:
180 if header_entry_regex.search (h) == -1:
184 h = regsub.sub(header_entry_regex, '', h)
185 left = header_entry_regex.group(1)
186 right = header_entry_regex.group(2)
188 right = regsub.gsub('\([^\\]\)\"', '\\1', right)
189 right = regsub.gsub('^"', '', right)
190 left = regsub.gsub('\([^\\]\)\"', '', left)
191 left = regsub.gsub('^"', '', left)
201 # lily-python.py -- implement general LilyPond-wide python stuff
203 # source file of the GNU LilyPond music typesetter
205 # (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
221 version_re = regex.compile('\\version *\"\(.*\)\"')
222 # now used as shell script in configure too!
223 # make_assign_re = regex.compile('^\([A-Z_]*\) *= *\(.*\)$')
224 make_assign_re = regex.compile('^\([A-Z_]*\)=\(.*\)$')
226 def version_tuple(file):
227 lines = file.readlines()
233 if make_assign_re.search(l) <> -1:
234 nm = make_assign_re.group(1)
235 val = make_assign_re.group(2)
236 # if nm == 'TOPLEVEL_MAJOR_VERSION':
237 if nm == 'MAJOR_VERSION':
239 # elif nm == 'TOPLEVEL_MINOR_VERSION':
240 elif nm == 'MINOR_VERSION':
242 # elif nm == 'TOPLEVEL_PATCH_LEVEL':
243 elif nm == 'PATCH_LEVEL':
245 # elif nm == 'TOPLEVEL_MY_PATCH_LEVEL':
246 elif nm == 'MY_PATCH_LEVEL':
250 def next_version(tup):
251 return (tup[0], tup[1], tup[2] + 1, tup[3]);
253 def prev_version(tup):
256 return (tup[0], tup[1], tup[2], '');
258 return (tup[0], tup[1] -1, tup[2], '');
260 return (tup[0], tup[1], tup[2] - 1, '');
264 return 'lilypond-' + version_tuple_to_str(v)
267 return dirname(v) + '.tar.gz'
269 def released_tarball(v):
270 return lilydirs.release_dir + tarball(v)
273 def tuple_to_list(tup):
279 def version_str_to_tuple(str):
286 return (atoi(t[0]), atoi(t[1]), atoi(t[2]), mypatch)
290 def guess_mudela_version(filename):
292 lines = f.readlines()
295 if version_re.search(l) <> -1:
296 return version_re.group(1)
300 def version_tuple_to_str(tup):
303 mypatch = '.' + tup[3]
305 return ('%d.%d.%d' % tup[0:3]) + mypatch
310 self.topdir = os.environ['LILYPOND_SOURCEDIR'] + '/'
313 print 'Please set LILYPOND_SOURCEDIR to the toplevel source, eg LILYPOND_SOURCEDIR=/home/foobar/lilypond-1.2.3/'
317 self.groupdir = os.environ['LILYPOND_GROUPDIR'] + '/'
319 self.groupdir = self.topdir + '../'
321 self.release_dir = self.groupdir + '/releases/'
322 self.patch_dir = self.groupdir + '/patches/'
324 def version_tuple(self):
325 f = open (self.topdir + 'VERSION')
332 lilydirs = Lilydirs()
334 if __name__ == '__main__':
335 v= lilydirs.version_tuple()
336 print v, prev_version(v), next_version(v)
337 mv = guess_mudela_version(lilydirs.topdir + 'init/symbol.ly')
339 print version_tuple_to_str(pv), prev_version(pv), next_version(pv)
340 print version_tuple_to_str((0,1,1,''))
341 print mv, version_str_to_tuple(mv)
358 header_regex = regex.compile('\\header[ \t\n]*{\([^}]*\)}')
359 header_entry_regex = regex.compile('[\n\t ]*\([^\n\t ]+\)[\n\t ]*=[\n \t]*\([^;]+\)[\n \t]*;')
362 # FIXME breaks on multiple strings.
364 def read_mudela_header (fn):
366 s = regsub.gsub('%.*$', '', s)
367 s = regsub.gsub('\n', ' ', s)
370 if header_regex.search(s) <> -1:
371 h = header_regex.group(1)
375 while regex.search('=', h) <> -1:
377 if header_entry_regex.search (h) == -1:
381 h = regsub.sub(header_entry_regex, '', h)
382 left = header_entry_regex.group(1)
383 right = header_entry_regex.group(2)
385 right = regsub.gsub('\([^\\]\)\"', '\\1', right)
386 right = regsub.gsub('^"', '', right)
387 left = regsub.gsub('\([^\\]\)\"', '', left)
388 left = regsub.gsub('^"', '', left)