]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-book: Remove the use of absolute paths (issue 2104).
authorJulien Rioux <jrioux@physics.utoronto.ca>
Wed, 14 Dec 2011 13:29:53 +0000 (08:29 -0500)
committerJulien Rioux <jrioux@physics.utoronto.ca>
Sun, 15 Jan 2012 18:06:41 +0000 (13:06 -0500)
Don't rewrite include paths; use relative paths whenever possible.
Similar to http://code.google.com/p/lilypond/issues/detail?id=1852#c1

python/book_base.py
python/book_snippets.py
scripts/lilypond-book.py

index b43b9e00d4b4477b5ea2fe0f05eea0be9e3ae8f5..1d0d9eca990407f3671a03c54af143515eef295e 100644 (file)
@@ -14,9 +14,11 @@ error = ly.error
 # Helper functions
 ########################################################################
 
-def find_file (name, include_path, raise_error=True):
-    for i in include_path:
+def find_file (name, include_path, working_dir=None, raise_error=True):
+    current_path = working_dir or os.getcwd();
+    for i in [current_path] + include_path:
         full = os.path.join (i, name)
+        full = os.path.normpath (os.path.join (current_path, full))
         if os.path.exists (full):
             return full
 
@@ -149,7 +151,8 @@ class BookOutputFormat:
         return []
 
     def input_fullname (self, input_filename):
-        return find_file (input_filename, self.global_options.include_path)
+        return find_file (input_filename, self.global_options.include_path,
+            self.global_options.original_dir)
 
     def adjust_snippet_command (self, cmd):
         return cmd
index 5e6bc4e71eb51cf1b3e3f125a8c90a5e08b0b916..e5a43110ffa268ae6733d09e7c96dc768503ef61 100644 (file)
@@ -804,7 +804,8 @@ class LilypondFileSnippet (LilypondSnippet):
         LilypondSnippet.__init__ (self, type, match, formatter, line_number, global_options)
         self.filename = self.substring ('filename')
         self.ext = os.path.splitext (os.path.basename (self.filename))[1]
-        self.contents = file (BookBase.find_file (self.filename, global_options.include_path)).read ()
+        self.contents = file (BookBase.find_file (self.filename,
+            global_options.include_path, global_options.original_dir)).read ()
 
     def get_snippet_code (self):
         return self.contents;
index 9e5777284982a924aac8f74db7e76b22cb0e81f7..8847419fe0dc46e698e06873f7494e4bf0bae6f2 100644 (file)
@@ -143,7 +143,7 @@ def get_option_parser ():
     p.add_option ("-I", '--include', help=_ ("add DIR to include path"),
                   metavar=_ ("DIR"),
                   action='append', dest='include_path',
-                  default=[os.path.abspath (os.getcwd ())])
+                  default=[])
 
     p.add_option ('--info-images-dir',
                   help=_ ("format Texinfo output so that Info will "
@@ -616,8 +616,7 @@ def do_options ():
     (global_options, args) = opt_parser.parse_args ()
 
     global_options.information = {'program_version': ly.program_version, 'program_name': ly.program_name }
-
-    global_options.include_path =  map (os.path.abspath, global_options.include_path)
+    global_options.original_dir = original_dir
 
     # Load the python packages (containing e.g. custom formatter classes)
     # passed on the command line
@@ -667,7 +666,7 @@ def main ():
         if global_options.lily_output_dir:
             # This must be first, so lilypond prefers to read .ly
             # files in the other lybookdb dir.
-            includes = [os.path.abspath(global_options.lily_output_dir)] + includes
+            includes = [global_options.lily_output_dir] + includes
         global_options.process_cmd += ' '.join ([' -I %s' % ly.mkarg (p)
                                                  for p in includes])
 
@@ -713,7 +712,7 @@ def main ():
                      base_file_name + global_options.formatter.default_extension)
 
     os.chdir (original_dir)
-    file (dep_file, 'w').write ('%s: %s'
+    file (dep_file, 'w').write ('%s: %s\n'
                                 % (final_output_file, ' '.join (inputs)))
 
 if __name__ == '__main__':