]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-book: Set include path for --output option (issue 2423).
authorJulien Rioux <jrioux@physics.utoronto.ca>
Tue, 20 Mar 2012 16:19:56 +0000 (12:19 -0400)
committerJulien Rioux <jrioux@physics.utoronto.ca>
Mon, 26 Mar 2012 10:25:01 +0000 (06:25 -0400)
Add the current working dir to the list of include paths.

scripts/lilypond-book.py

index 395551ca0519f7fea206f9e62f461676be763615..a78fdfc02e1733992778931f15d6de1d952cacaf 100644 (file)
@@ -608,6 +608,22 @@ def do_file (input_filename, included=False):
         progress (_ ("Removing `%s'") % output_filename)
         raise BookSnippet.CompileError
 
+def inverse_relpath (path, relpath):
+    """Given two paths, the second relative to the first,
+    return the first path relative to the second."""
+    if os.path.isabs (relpath):
+        return os.path.abspath (path)
+    relparts = ['']
+    parts = os.path.normpath (path).split (os.path.sep)
+    for part in os.path.normpath (relpath).split (os.path.sep):
+        if part == '..':
+            relparts.append (parts[-1])
+            parts.pop ()
+        else:
+            relparts.append ('..')
+            parts.append (part)
+    return os.path.sep.join (relparts[::-1])
+
 def do_options ():
     global global_options
 
@@ -617,6 +633,10 @@ def do_options ():
     global_options.information = {'program_version': ly.program_version, 'program_name': ly.program_name }
     global_options.original_dir = original_dir
 
+    if global_options.output_dir:
+        global_options.output_dir = os.path.expanduser (global_options.output_dir)
+        global_options.include_path.insert (0, inverse_relpath (original_dir, global_options.output_dir))
+
     # Load the python packages (containing e.g. custom formatter classes)
     # passed on the command line
     nr = 0