]> git.donarmstrong.com Git - lilypond.git/blobdiff - scripts/update-lily.py
fixjes
[lilypond.git] / scripts / update-lily.py
index e1a51d4a3c5a21d0aa8ae2813286956bb2ed6283..ad34a284abe7bb9b77a743212fbf8313d38f85fc 100644 (file)
@@ -26,6 +26,7 @@ import re
 import operator
 import os
 import tempfile
+import shutil
 import stat
 import string
 import sys
@@ -289,6 +290,7 @@ rm -f %n &&
 ln -s %n-%v %n
 '''
 
+### URL lib
 
 def list_file (user, passwd, host, dir, file):
        match = []
@@ -328,31 +330,6 @@ def list_url (url):
        s = "list_%s ('%s', '%s', '%s', '%s', '%s')" % split_url (url)
        return eval (s)
 
-def version_tuple_to_str (t):
-       if t[3]:
-               my = '.%s%d' % (t[3], t[4])
-       else:
-               my = ''
-       return ('%d.%d.%d' % t[0:3]) + my
-
-def version_str_to_tuple (s):
-       t = string.split (s, '.')
-       if len (t) >= 4:
-               my_name = t[3][:-1]
-               my_number = string.atoi (t[3][-1])
-       else:
-               my_name = None
-               my_number = None
-       return (string.atoi (t[0]), string.atoi (t[1]), string.atoi (t[2]),
-               my_name, my_number)
-
-def split_package (p):
-       m = re.match ('(.*)-([0-9]*.*).tar.gz', p)
-       return (m.group (1), version_str_to_tuple (m.group (2)))
-
-def join_package (t):
-       return t[0] + '-' + version_tuple_to_str (t[1])
-
 def copy_file (user, passwd, host, dir, file):
        os.system ('cp %s/%s .' % (dir, file))
 
@@ -385,14 +362,69 @@ def copy_ftp (user, passwd, host, dir, file):
                ftp.close ()
        return list
        
-
-
 def copy_url (url, dir):
        os.chdir (dir)
        s = "copy_%s ('%s', '%s', '%s', '%s', '%s')" % split_url (url)
        eval (s)
 
+### End URL lib
 
+def version_tuple_to_str (t):
+       if t[3]:
+               my = '.%s%d' % (t[3], t[4])
+       else:
+               my = ''
+       return ('%d.%d.%d' % t[0:3]) + my
+
+def version_str_to_tuple (s):
+       t = string.split (s, '.')
+       if len (t) >= 4:
+               my_name = t[3][:-1]
+               my_number = string.atoi (t[3][-1])
+       else:
+               my_name = None
+               my_number = None
+       return (string.atoi (t[0]), string.atoi (t[1]), string.atoi (t[2]),
+               my_name, my_number)
+
+def next_version (t):
+       l = list (t)
+       if len (l) >= 4:
+               if l[4]:
+                       l[4] += 1
+               else:
+                       l[3] = l[4] = ''
+                       l[2] += 1
+       else:
+               l[2] += 1
+
+       return tuple (l)
+
+def prev_version(t):
+       l = list (t)
+       if len (l) >= 4:
+               if l[4]:
+                       l[4] += 1
+               else:
+                       l[3] = l[4] = ''
+                       l[2] -= 1
+       else:
+               l[2] -= 1
+               
+       return tuple (l)
+
+def split_package (p):
+       m = re.match ('(.*)-([0-9]*.*?)(.tar.gz)?$', p)
+       return (m.group (1), version_str_to_tuple (m.group (2)))
+
+def join_package (t):
+       return t[0] + '-' + version_tuple_to_str (t[1])
+
+def diff_name (p):
+       t = split_package (p)
+       return '%s-%s-%s' % (t[0], version_tuple_to_str (prev_version (t[1])),
+                            version_tuple_to_str (t[1]))
+       
 def find_latest (url):
        progress (_ ("Listing `%s'...") % url)
        list = map (split_package, list_url (url))
@@ -469,8 +501,9 @@ if 1:
        get_base = url[:string.rindex (url, '/')] + '/'
        if os.path.isdir (patch_dir):
                os.chdir (patch_dir)
-               if not os.path.isfile (latest + '.diff.gz'):
-                       get = get_base + latest + '.diff.gz'
+               latest_diff = diff_name (latest)
+               if not os.path.isfile (latest_diff + '.diff.gz'):
+                       get = get_base + latest_diff + '.diff.gz'
                        progress (_ ("Fetching `%s'...") % get)
                        copy_url (get, '.')