Don't rewrite include paths; use relative paths whenever possible.
Similar to http://code.google.com/p/lilypond/issues/detail?id=1852#c1
# 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
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
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;
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 "
(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
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])
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__':