8 lilypath = os.environ['LILYPOND_SOURCEDIR'] + '/'
10 print 'Please set LILYPOND_SOURCEDIR to the toplevel source, eg LILYPOND_SOURCEDIR=/home/foobar/lilypond-1.2.3/'
13 lilypath = lilypath + '/bin/'
14 sys.path.append(lilypath)
17 from lilypython import *
26 self.to_version = lilydirs.version_tuple()
27 self.from_version = prev_version(self.to_version)
34 'Generate a patch to go to this version.\n'
35 ' --from=FROM, -f FROM old is FROM\n'
36 ' --to=TO, -t TO to version TO\n'
37 ' --dir=DIR, -d TO directory\n'
44 sys.stderr.write('untarring ' + fn + '\n')
45 os.system ('gzip --quiet -dc ' + fn + '| tar xf - ')
49 header = 'Generated by make-patch, old = %s, new = %s\n\
53 cd lilypond-source-dir; patch -E -p1 < %s\n\
55 Patches do not contain automatically generated files, \n\
56 i.e. you should rerun autoconf and configure\n\n'
58 # ugh, how to get rid of .tex files generated by lily?
59 pats = ['*.lsm', 'configure', '*.txt', 'lilypond.spec']
61 def remove_automatic(dirnames):
63 files = files + multiple_find(pats, dirnames)
68 def makepatch(fromdir, todir, patfile_nm):
70 remove_automatic([fromdir, todir])
74 f = open(patfile_nm, 'w')
77 os.path.basename(patfile_nm)))
80 sys.stderr.write('diffing to %s... ' % patfile_nm)
82 print ('diff -urN ../%s . >> %s' % (fromdir, patfile_nm))
83 os.system('diff -urN ../%s . >> %s' % (fromdir, patfile_nm))
84 os.system('gzip -9f %s' % patfile_nm)
87 os.environ['GZIP'] = '-q'
88 sys.stderr.write('This is make-patch version %s\n' % mp_version)
89 (cl_options, files) = getopt.getopt(sys.argv[1:],
90 'd:hf:o:t:', ['output=', 'help', 'from=', 'to='])
94 # on default, we want to diff tar balls, again :-)
97 for opt in cl_options:
100 if o == '--from' or o == '-f':
101 options.from_version = version_str_to_tuple(a)
103 elif o == '--to' or o == '-t':
104 options.to_version = version_str_to_tuple(a)
106 elif o == '--dir' or o == '-d':
109 elif o== '--help' or o == '-h':
112 elif o == '--output' or o == '-o':
113 outfn = os.path.join(os.getcwd(), a)
118 pn = 'patch-%s' % version_tuple_to_str(options.to_version)
119 outfn = os.path.join(os.getcwd(), pn)
122 prev_cwd = os.getcwd();
124 os.system('rm -rf /tmp/make-patch')
126 os.mkdir ('/tmp/make-patch')
130 fromdir = dirname(options.from_version)
131 todir = dirname(options.to_version)
135 diffdir = '/tmp/make-patch/' + 'lilypond-%s'\
136 % version_tuple_to_str(options.to_version)
138 if from_b != 0 or (from_b == 0 and to_b == 0):
139 os.chdir ('/tmp/make-patch')
140 untar(released_tarball(options.from_version))
144 sys.stderr.write('copying ' + srcdir + ' to ' + diffdir + '\n')
145 # os.system('cp -pr %s %s' % (srcdir, diffdir))
146 os.system('mkdir -p %s '% (diffdir))
148 os.system('tar cf - --exclude out . | tar -xf - -C %s'
152 os.chdir ('/tmp/make-patch')
153 untar(released_tarball(options.to_version))
157 sys.stderr.write('copying ' + srcdir + ' to ' + diffdir + '\n')
158 os.system('mkdir -p %s '% (diffdir))
159 # os.system('cp -pr %s %s' (srcdir, diffdir))%
161 os.system('tar -cf - --exclude out . | tar -xf - -C %s '
164 os.chdir('/tmp/make-patch')
166 # os.system('rm -f *.aux *.dvi *.midi *.log *.ps *.tex *.ly')
167 os.chdir ('/tmp/make-patch')
169 makepatch(fromdir, todir, outfn)
171 os.chdir('/tmp/make-patch')
172 sys.stderr.write('cleaning ... ')
173 os.system('rm -fr %s %s' % (fromdir, todir))
174 sys.stderr.write('\n')
177 if __name__ == '__main__':