X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=buildscripts%2Fmass-link.py;h=17412e5559f6aa7b34a0a17c5e1561703aaa3bff;hb=1ee79e6b8d4386a5885960a3eafb87db933d7f63;hp=1f0ff074c6455675661990620651e6ca0682e34a;hpb=3c08f91969cc562bb9aa354e2b9f4da7f0715260;p=lilypond.git diff --git a/buildscripts/mass-link.py b/buildscripts/mass-link.py index 1f0ff074c6..17412e5559 100644 --- a/buildscripts/mass-link.py +++ b/buildscripts/mass-link.py @@ -1,20 +1,41 @@ #!@PYTHON@ # mass-link.py -# USAGE: mass-link.py symbolic | hard SOURCEDIR DESTDIR FILES +# USAGE: mass-link.py [--prepend-suffix SUFFIX] symbolic | hard SOURCEDIR DESTDIR FILES # # create hard or symbolic links to SOURCEDIR/FILES in DESTDIR # -# 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) -link_type, source_dir, dest_dir = sys.argv[1:4] -files = sys.argv[4:] +prepended_suffix = '' +for x in optlist: + if x[0] == '--prepend-suffix': + prepended_suffix = x[1] + +if prepended_suffix: + def insert_suffix (p): + l = p.split ('.') + if len (l) >= 2: + l[-2] += prepended_suffix + return '.'.join (l) + return p + prepended_suffix +else: + insert_suffix = lambda p: p if link_type == 'symbolic': link = os.symlink @@ -28,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, 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)