From a3036a217ddf3ac281c534caf7d76a151d67d805 Mon Sep 17 00:00:00 2001 From: Julien Rioux Date: Wed, 14 Dec 2011 08:29:53 -0500 Subject: [PATCH] lilypond-book: Remove the use of absolute paths (issue 2104). 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 | 9 ++++++--- python/book_snippets.py | 3 ++- scripts/lilypond-book.py | 9 ++++----- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/python/book_base.py b/python/book_base.py index b43b9e00d4..1d0d9eca99 100644 --- a/python/book_base.py +++ b/python/book_base.py @@ -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 diff --git a/python/book_snippets.py b/python/book_snippets.py index 5e6bc4e71e..e5a43110ff 100644 --- a/python/book_snippets.py +++ b/python/book_snippets.py @@ -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; diff --git a/scripts/lilypond-book.py b/scripts/lilypond-book.py index 9e57772849..8847419fe0 100644 --- a/scripts/lilypond-book.py +++ b/scripts/lilypond-book.py @@ -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__': -- 2.39.2