import pipes
-mp_version = '0.3'
+mp_version = '0.51'
class Options:
def __init__(self):
def help():
sys.stdout.write(
'Generate a patch to go to this version.\n'
- ' --from=FROM, -f FROM old is FROM\n'
- ' --to=TO, -t TO to version TO\n'
-
+ ' -f, --from=FROM old is FROM\n'
+ ' -d, --dir=DIR diff to (or from) directory DIR\n'
+ ' -r, --release diff against latest release\n'
+ ' -t, --to=TO to version TO\n'
)
-
-
def untar(fn):
# os.system('pwd');
- sys.stderr.write('untarring ' + fn)
-# can't seem to fix errors:
-# gzip: stdout: Broken pipe
-# tar: Child returned status 1
-# os.system ('tar xzf ' + fn)
-# sys.stderr.write('\n')
-# ugh, even this does not work, but one error message less :-)
+ sys.stderr.write('untarring ' + fn + '\n')
os.system ('gzip --quiet -dc ' + fn + '| tar xf - ')
-# so print soothing message:
- sys.stderr.write('make-patch:ugh: Please ignore error: gzip: stdout: Broken pipe\n');
sys.stderr.flush()
\n\
usage \n\
\n\
- cd lilypond-source-dir; patch -E -p0 < %s\n\
+ cd lilypond-source-dir; patch -E -p1 < %s\n\
\n\
Patches do not contain automatically generated files, \n\
-i.e. you should rerun configure\n\n'
+i.e. you should rerun autoconf and configure\n\n'
+
+# ugh, how to get rid of .tex files generated by lily?
+# pats = ['*.lsm', 'configure', '*.txt', '.dstreamrc', 'lilypond.spec']
+pats = ['*.lsm', 'configure', '*.txt', '.dstreamrc', 'lilypond.spec',
+ 'AUTHORS', 'INSTALL', 'PATCHES']
-pats = ['*.lsm', 'configure', '*.txt', 'lilypond.spec']
def remove_automatic(dirnames):
files = []
files = files + multiple_find(pats, dirnames)
for f in files:
os.remove(f)
-def makepatch(fv, tv, patfile_nm):
- import tempfile
- prev_cwd = os.getcwd();
- os.chdir ('/tmp')
- untar(released_tarball(fv))
- untar(released_tarball(tv))
- remove_automatic([dirname(fv), dirname(tv)])
+def makepatch(fromdir, todir, patfile_nm):
- os.chdir(dirname(tv))
-
- if not patfile_nm:
- patfile_nm = '../patch-%s' % version_tuple_to_str(tv)
+ remove_automatic([fromdir, todir])
+ os.chdir(todir)
+
f = open(patfile_nm, 'w')
f.write(header %\
- (version_tuple_to_str(fv), version_tuple_to_str(tv), \
+ (fromdir, todir, \
os.path.basename(patfile_nm)))
f.close()
sys.stderr.write('diffing to %s... ' % patfile_nm)
- os.system('diff -urN ../%s . >> %s' % (dirname(fv), patfile_nm))
- #os.system('gzip -9f %s' % patfile_nm)
- os.chdir('/tmp')
-
- sys.stderr.write('cleaning ... ')
- os.system('rm -fr %s %s' % (dirname(tv), dirname(fv)))
- sys.stderr.write('\n')
- os.chdir(prev_cwd)
-
+ os.system('pwd')
+ print ('diff -urN ../%s . >> %s' % (fromdir, patfile_nm))
+ os.system('diff -urN ../%s . >> %s' % (fromdir, patfile_nm))
+ os.system('gzip --quiet -9f %s' % patfile_nm)
+
def main():
+ os.environ['GZIP'] = '-q'
sys.stderr.write('This is make-patch version %s\n' % mp_version)
(cl_options, files) = getopt.getopt(sys.argv[1:],
- 'hf:o:t:', ['output=', 'help', 'from=', 'to='])
+ 'd:hf:o:rt:', ['output=', 'help', 'from=', 'to='])
outfn = ''
+ srcdir = ''
+
+ # on default, we want to diff tar balls, again :-)
+ from_b=1
+ to_b=1
for opt in cl_options:
o = opt[0]
a = opt[1]
if o == '--from' or o == '-f':
options.from_version = version_str_to_tuple(a)
+ from_b=1
elif o == '--to' or o == '-t':
- options.to_version = version_str_to_tuple(a)
- elif o== '--help' or o == '-h':
+ options.to_version = version_str_to_tuple(a)
+ to_b=1
+ elif o == '--dir' or o == '-d':
+ srcdir = a;
+ to_b=0
+ elif o == '--help' or o == '-h':
help()
return 0;
elif o == '--output' or o == '-o':
outfn = os.path.join(os.getcwd(), a)
+ elif o == '--release' or o == '-r':
+# huh?
+# if options.from_version[3]:
+# options.from_version[3] = '';
+ options.from_version = (options.from_version[0],
+ options.from_version[1], options.from_version[2], '');
else:
raise getopt.error
pn = 'patch-%s' % version_tuple_to_str(options.to_version)
outfn = os.path.join(os.getcwd(), pn)
- makepatch(options.from_version, options.to_version, outfn)
+ import tempfile
+ prev_cwd = os.getcwd();
+
+ os.system('rm -rf /tmp/make-patch')
+ try:
+ os.mkdir ('/tmp/make-patch')
+ except:
+ pass
+
+ fromdir = dirname(options.from_version)
+ todir = dirname(options.to_version)
+
+ diffdir = ''
+ if srcdir != '':
+ diffdir = '/tmp/make-patch/' + 'lilypond-%s'\
+ % version_tuple_to_str(options.to_version)
+
+ if from_b != 0 or (from_b == 0 and to_b == 0):
+ os.chdir ('/tmp/make-patch')
+ untar(released_tarball(options.from_version))
+ os.chdir(prev_cwd)
+ else:
+ fromdir = diffdir
+ sys.stderr.write('copying ' + srcdir + ' to ' + diffdir + '\n')
+ # os.system('cp -pr %s %s' % (srcdir, diffdir))
+ os.system('mkdir -p %s '% (diffdir))
+ os.chdir (srcdir)
+ os.system('tar cf - --exclude out . | tar -xf - -C %s'
+ % diffdir)
+
+ if to_b != 0:
+ os.chdir ('/tmp/make-patch')
+ untar(released_tarball(options.to_version))
+ os.chdir(prev_cwd)
+ else:
+ todir = diffdir
+ sys.stderr.write('copying ' + srcdir + ' to ' + diffdir + '\n')
+ os.system('mkdir -p %s '% (diffdir))
+ # os.system('cp -pr %s %s' (srcdir, diffdir))%
+ os.chdir (srcdir)
+ os.system('tar -cf - --exclude out . | tar -xf - -C %s '
+ % diffdir)
+
+ os.chdir('/tmp/make-patch')
+ os.chdir(todir)
+ # os.system('rm -f *.aux *.dvi *.midi *.log *.ps *.tex *.ly')
+ os.chdir ('/tmp/make-patch')
+
+ makepatch(fromdir, todir, outfn)
+
+ os.chdir('/tmp/make-patch')
+ sys.stderr.write('cleaning ... ')
+ os.system('rm -fr %s %s' % (fromdir, todir))
+ sys.stderr.write('\n')
+ os.chdir(prev_cwd)
if __name__ == '__main__':
main()
+