2 from lilypython import *
11 self.to_version = lilydirs.version_tuple()
12 self.from_version = prev_version(self.to_version)
19 'Generate a patch to go to this version.\n'
20 ' --from=FROM, -f FROM old is FROM\n'
21 ' --to=TO, -t TO to version TO\n'
27 return 'lilypond-' + version_tuple_to_str(v)
30 return lilydirs.release_dir + dirname(v) + '.tar.gz'
33 sys.stderr.write('untarring ' + fn)
34 os.system ('tar xzf ' + fn)
35 sys.stderr.write('\n')
39 header = 'Generated by make-patch, old = %s, new = %s\n\
43 cd lilypond-source-dir; patch -E -p0 < patch-$new\n\
45 Patches do not contain automatically generated files, \n\
46 i.e. you should rerun configure\n\n'
56 def my_find(patterns, dir = os.curdir):
58 names = os.listdir(dir)
61 if name in (os.curdir, os.pardir):
63 fullname = os.path.join(dir, name)
65 if fnmatch.fnmatch(name, pat):
67 if os.path.isdir(fullname) and not os.path.islink(fullname):
69 if fnmatch.fnmatch(name, p):
70 if _debug: print "skip", `fullname`
73 if _debug: print "descend into", `fullname`
74 found = my_find(patterns, fullname)
79 def multiple_find(pats, dirnames):
83 l = l + my_find(pats, d)
86 pats = ['*.lsm', 'configure', '*.text', 'lilypond.spec']
87 def remove_automatic(dirnames):
89 files = files + multiple_find(pats, dirnames)
94 def makepatch(fv, tv, patfile_nm):
99 remove_automatic([dirname(fv), dirname(tv)])
101 os.chdir(dirname(tv))
104 patfile_nm = '../patch-%s' % version_tuple_to_str(tv)
106 f = open(patfile_nm, 'w')
107 f.write(header % (version_tuple_to_str(fv), version_tuple_to_str(tv)))
110 sys.stderr.write('diffing ... ')
111 os.system('diff -urN ../%s . >> %s' % (dirname(fv), patfile_nm))
112 #os.system('gzip -9f %s' % patfile_nm)
115 sys.stderr.write('cleaning ... ')
116 os.system('rm -fr %s %s' % (dirname(tv), dirname(fv)))
117 sys.stderr.write('\n')
120 sys.stderr.write('This is make-patch version %s\n' % mp_version)
121 (cl_options, files) = getopt.getopt(sys.argv[1:],
122 'hf:o:t:', ['output=', 'help=', 'from=', 'to='])
124 for opt in cl_options:
127 if o == '--from' or o == '-f':
128 options.from_version = version_str_to_tuple(a)
129 elif o == '--to' or o == '-t':
130 options.to_version = version_str_to_tuple(a)
131 elif o== '--help' or o == '-h':
133 elif o == '--output' or o == '-o':
134 outfn = os.path.join(os.getcwd(), a)
139 pn = 'patch-%s' % version_tuple_to_str(options.to_version)
140 outfn = os.path.join(os.getcwd(), pn)
142 makepatch(options.from_version, options.to_version, outfn)