#!@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):
)
-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()
\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)
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))
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')
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]
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:
makepatch(options.from_version, options.to_version, outfn)
-main()
+if __name__ == '__main__':
+ main()