]> git.donarmstrong.com Git - lilypond.git/blobdiff - bin/make-patch.py
release: 0.1.45
[lilypond.git] / bin / make-patch.py
index ff070acdf7b88380c5321b2816e8e9231009e71f..6600ec2e7dbbbfb7788a110497b1234d64a1b5ef 100644 (file)
@@ -1,10 +1,25 @@
 #!@PYTHON@
+
+import sys
+import os
+
+lilypath =''
+try:
+    lilypath = os.environ['LILYPOND_SOURCEDIR'] + '/'
+except KeyError:
+    print 'Please set LILYPOND_SOURCEDIR to the toplevel source, eg LILYPOND_SOURCEDIR=/home/foobar/lilypond-1.2.3/'
+    sys.exit(1)
+
+lilypath = lilypath + '/bin/'
+sys.path.append(lilypath)
+
+
 from lilypython import *
 import getopt
 import pipes
 
 
-mp_version = '2'
+mp_version = '0.3'
 
 class Options:
     def __init__(self):
@@ -23,16 +38,19 @@ def help():
        )
 
 
-def dirname(v):
-    return 'lilypond-' + version_tuple_to_str(v)
-
-def tarball(v):
-    return lilydirs.release_dir + dirname(v)  + '.tar.gz'
 
 def untar(fn):
+    # os.system('pwd');
     sys.stderr.write('untarring ' + fn)
-    os.system ('tar xzf ' + fn)
-    sys.stderr.write('\n')
+# 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 :-)
+    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()
 
 
@@ -40,50 +58,12 @@ header = 'Generated by make-patch, old = %s, new = %s\n\
 \n\
 usage \n\
 \n\
-       cd lilypond-source-dir; patch -E -p0 < patch-$new\n\
+       cd lilypond-source-dir; patch -E -p0 < %s\n\
 \n\
 Patches do not contain automatically generated files, \n\
 i.e. you should rerun configure\n\n'
 
-import fnmatch
-import os
-
-_debug = 0
-
-_prune = ['(*)']
-
-
-def my_find(patterns, dir = os.curdir):
-        list = []
-        names = os.listdir(dir)
-        names.sort()
-        for name in names:
-                if name in (os.curdir, os.pardir):
-                        continue
-                fullname = os.path.join(dir, name)
-               for pat in patterns:
-                   if fnmatch.fnmatch(name, pat):
-                        list.append(fullname)
-                if os.path.isdir(fullname) and not os.path.islink(fullname):
-                        for p in _prune:
-                                if fnmatch.fnmatch(name, p):
-                                        if _debug: print "skip", `fullname`
-                                        break
-                        else:
-                                if _debug: print "descend into", `fullname`
-                               found = my_find(patterns, fullname)
-                               if found:
-                                   list = list + found
-        return list
-
-def multiple_find(pats, dirnames):
-    from find import find
-    l = []
-    for d in dirnames:
-       l = l + my_find(pats,  d)
-    return l
-
-pats = ['*.lsm', 'configure', '*.text', 'lilypond.spec']
+pats = ['*.lsm', 'configure', '*.txt', 'lilypond.spec']
 def remove_automatic(dirnames):
     files = []
     files = files + multiple_find(pats, dirnames)
@@ -93,9 +73,10 @@ def remove_automatic(dirnames):
 
 def makepatch(fv, tv, patfile_nm):
     import tempfile
+    prev_cwd = os.getcwd();
     os.chdir ('/tmp')
-    untar(tarball(fv))
-    untar(tarball(tv))
+    untar(released_tarball(fv))
+    untar(released_tarball(tv))
     remove_automatic([dirname(fv), dirname(tv)])
 
     os.chdir(dirname(tv))
@@ -104,10 +85,12 @@ def makepatch(fv, tv, patfile_nm):
        patfile_nm = '../patch-%s' % version_tuple_to_str(tv)
 
     f = open(patfile_nm, 'w')
-    f.write(header % (version_tuple_to_str(fv), version_tuple_to_str(tv)))
+    f.write(header %\
+           (version_tuple_to_str(fv), version_tuple_to_str(tv), \
+            os.path.basename(patfile_nm)))
     f.close()
            
-    sys.stderr.write('diffing ... ')
+    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')
@@ -115,11 +98,12 @@ def makepatch(fv, tv, patfile_nm):
     sys.stderr.write('cleaning ... ')
     os.system('rm -fr %s %s' % (dirname(tv), dirname(fv)))
     sys.stderr.write('\n')
+    os.chdir(prev_cwd)
     
 def main():
     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='])
+                                       'hf:o:t:', ['output=', 'help', 'from=', 'to='])
     outfn = ''
     for opt in cl_options:
        o = opt[0]
@@ -130,6 +114,7 @@ def main():
            options.to_version = version_str_to_tuple(a)
        elif o== '--help' or o == '-h':
            help()
+           return 0;
        elif o == '--output' or o == '-o':
            outfn = os.path.join(os.getcwd(), a)
        else:
@@ -141,4 +126,5 @@ def main():
 
     makepatch(options.from_version, options.to_version, outfn)
 
-main()
+if __name__ == '__main__':
+    main()