X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=bin%2Fmake-patch.py;h=9909bf9b730be6beebe2095c8603fb0dae979f19;hb=c844072722a39a5fcd20372b0497d9130bd41dd7;hp=6600ec2e7dbbbfb7788a110497b1234d64a1b5ef;hpb=63c9cee8ce190aaae4a5db3d2e200d35a570838d;p=lilypond.git diff --git a/bin/make-patch.py b/bin/make-patch.py index 6600ec2e7d..9909bf9b73 100755 --- a/bin/make-patch.py +++ b/bin/make-patch.py @@ -19,7 +19,7 @@ import getopt import pipes -mp_version = '0.3' +mp_version = '0.51' class Options: def __init__(self): @@ -32,25 +32,16 @@ options = Options() 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() @@ -58,12 +49,16 @@ header = 'Generated by make-patch, old = %s, new = %s\n\ \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) @@ -71,52 +66,58 @@ def remove_automatic(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 @@ -124,7 +125,62 @@ def main(): 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() +