]> git.donarmstrong.com Git - lilypond.git/blobdiff - buildscripts/mass-link.py
Merge branch 'lilypond/translation' of ssh://jomand@git.sv.gnu.org/srv/git/lilypond
[lilypond.git] / buildscripts / mass-link.py
index 61ea81e2db40a5f24036ab3117c3614be2294e3e..17412e5559f6aa7b34a0a17c5e1561703aaa3bff 100644 (file)
@@ -5,20 +5,23 @@
 #
 # create hard or symbolic links to SOURCEDIR/FILES in DESTDIR
 #
-# if --prepend-suffix is specified, link to foo.bar will be called fooSUFFIX.bar
-# shell-wildcard expansion is performed on FILES.
-
-print "mass_link.py"
+# If --prepend-suffix is specified, link to foo.bar will be called fooSUFFIX.bar.
+# Shell wildcards expansion is performed on FILES.
 
 import sys
 import os
 import glob
 import getopt
 
+print "mass-link.py"
+
 optlist, args = getopt.getopt (sys.argv[1:], '', ['prepend-suffix='])
 link_type, source_dir, dest_dir = args[0:3]
 files = args[3:]
 
+source_dir = os.path.normpath (source_dir)
+dest_dir = os.path.normpath (dest_dir)
+
 prepended_suffix = ''
 for x in optlist:
     if x[0] == '--prepend-suffix':
@@ -46,11 +49,19 @@ sourcefiles = []
 for pattern in files:
     sourcefiles += (glob.glob (os.path.join (source_dir, pattern)))
 
-destfiles = map (lambda f: os.path.join (dest_dir, insert_suffix (os.path.basename (f))), sourcefiles)
+def relative_path (f):
+    if source_dir == '.':
+        return f
+    return f[len (source_dir) + 1:]
+
+destfiles = [os.path.join (dest_dir, insert_suffix (relative_path (f))) for f in sourcefiles]
+
+destdirs = set ([os.path.dirname (dest) for dest in destfiles])
+[os.makedirs (d) for d in destdirs if not os.path.exists (d)]
 
 def force_link (src,dest):
     if os.path.exists (dest):
-        os.system ('rm -rf ' + dest)
+        os.system ('rm -f ' + dest)
     link (src, dest)
 
 map (force_link, sourcefiles, destfiles)