From b78541e04e7c3d45220286f233938461d0ca8ed7 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Tue, 25 Mar 2008 00:22:01 -0300 Subject: [PATCH] Explicitly record missing files --- scripts/lilypond-book.py | 86 +++++++++++++++++++--------------------- 1 file changed, 41 insertions(+), 45 deletions(-) diff --git a/scripts/lilypond-book.py b/scripts/lilypond-book.py index 5e16f6b397..f2052910f3 100644 --- a/scripts/lilypond-book.py +++ b/scripts/lilypond-book.py @@ -1122,9 +1122,9 @@ class LilypondSnippet (Snippet): return re.sub (r'\\(version|sourcefileline|sourcefilename)[^\n]*\n', '', ly) def link_all_output_files (self, output_dir, output_dir_files, destination): - existing = self.all_output_files (output_dir, output_dir_files) - if existing is None: - print '\nMissing', self.basename() + existing, missing = self.all_output_files (output_dir, output_dir_files) + if missing: + print '\nMissing', missing raise CompileError(self.basename()) for name in existing: try: @@ -1142,65 +1142,61 @@ class LilypondSnippet (Snippet): output_dir_files is the list of files in the output directory. """ - class Missing(Exception): - pass - - result = set() + result = set () + missing = set () base = self.basename() full = os.path.join (output_dir, base) def consider_file (name): if name in output_dir_files: result.add (name) - + def require_file (name): - if name not in output_dir_files: - raise Missing - result.add (name) + if name in output_dir_files: + result.add (name) + else: + missing.add (name) skip_lily = global_options.skip_lilypond_run - try: - for required in [base + '.ly', - base + '.txt']: - require_file (required) - if not skip_lily: - require_file (base + '-systems.count') - - map (consider_file, [base + '.tex', - base + '.eps', - base + '.texidoc', - base + '-systems.texi', - base + '-systems.tex', - base + '-systems.pdftexi']) - - if base + '.eps' in result and self.format in (HTML, TEXINFO): - page_count = ps_page_count (full + '.eps') - if page_count <= 1: - require_file (base + '.png') - else: - for page in range (1, page_count + 1): - require_file (base + '-page%d.png' % page) - - system_count = 0 - if not skip_lily: - system_count = int(file (full + '-systems.count').read()) - for number in range(1, system_count + 1): - systemfile = '%s-%d' % (base, number) - require_file (systemfile + '.eps') - consider_file (systemfile + '.pdf') - except Missing: - return None + for required in [base + '.ly', + base + '.txt']: + require_file (required) + if not skip_lily: + require_file (base + '-systems.count') + + map (consider_file, [base + '.tex', + base + '.eps', + base + '.texidoc', + base + '-systems.texi', + base + '-systems.tex', + base + '-systems.pdftexi']) + + if base + '.eps' in result and self.format in (HTML, TEXINFO): + page_count = ps_page_count (full + '.eps') + if page_count <= 1: + require_file (base + '.png') + else: + for page in range (1, page_count + 1): + require_file (base + '-page%d.png' % page) + + system_count = 0 + if not skip_lily: + system_count = int(file (full + '-systems.count').read()) + for number in range(1, system_count + 1): + systemfile = '%s-%d' % (base, number) + require_file (systemfile + '.eps') + consider_file (systemfile + '.pdf') - return result + return (result, missing) def is_outdated (self, output_dir, current_files): - return self.all_output_files (output_dir, current_files) is None + found, missing = self.all_output_files (output_dir, current_files) + return missing def filter_text (self): """Run snippet bodies through a command (say: convert-ly). This functionality is rarely used, and this code must have bitrot. """ - code = self.substring ('code') s = filter_pipe (code, global_options.filter_cmd) d = { -- 2.39.2