+ output_dir_files is the list of files in the output directory.
+ """
+ class Missing(Exception):
+ pass
+
+ result = 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)
+
+ try:
+ for required in [base + '.ly',
+ base + '.txt',
+ base + '-systems.count']:
+ require_file (required)
+
+ 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 = 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
+
+ return result
+
+ def is_outdated (self, output_dir, current_files):
+ return self.all_output_files (output_dir, current_files) is None
+