X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=python%2Fbook_snippets.py;h=4bc4252e79da3bad9cb15876eb2f4218a4f24d2f;hb=2bbacb364aa29041af9cbbbd32cfad2e8e387cb3;hp=e8fbd50317d4ca0e094b45129ba9e28f91c775af;hpb=a24772e986386801a35cc49eea9971cdabc93bc4;p=lilypond.git diff --git a/python/book_snippets.py b/python/book_snippets.py index e8fbd50317..4bc4252e79 100644 --- a/python/book_snippets.py +++ b/python/book_snippets.py @@ -7,11 +7,8 @@ import re import os import copy import shutil -# TODO: We are using os.popen3, which has been deprecated since python 2.6. The -# suggested replacement is the Popen function of the subprocess module. -# Unfortunately, on windows this needs the msvcrt module, which doesn't seem -# to be available in GUB?!?!?! -# from subprocess import Popen, PIPE +import subprocess +import sys progress = ly.progress warning = ly.warning @@ -621,7 +618,7 @@ printing diff against existing file." % filename) def link_all_output_files (self, output_dir, output_dir_files, destination): existing, missing = self.all_output_files (output_dir, output_dir_files) if missing: - print '\nMissing', missing + error (_ ('Missing files: %s') % ', '.join (missing)) raise CompileError(self.basename()) for name in existing: if (self.global_options.use_source_file_names @@ -647,11 +644,21 @@ printing diff against existing file." % filename) if not os.path.isdir (dst_path): os.makedirs (dst_path) try: - os.link (src, dst) - except AttributeError: - shutil.copyfile (src, dst) - except OSError: - print '\nCould not overwrite file', dst + if (self.global_options.use_source_file_names + and isinstance (self, LilypondFileSnippet)): + fout = open (dst, 'w') + fin = open (src, 'r') + for line in fin.readlines (): + fout.write (line.replace (self.basename (), self.final_basename ())) + fout.close () + fin.close () + else: + try: + os.link (src, dst) + except AttributeError: + shutil.copyfile (src, dst) + except (IOError, OSError): + error (_ ('Could not overwrite file %s') % dst) raise CompileError(self.basename()) def additional_files_to_consider (self, base, full): @@ -740,10 +747,11 @@ printing diff against existing file." % filename) debug (_ ("Running through filter `%s'") % cmd, True) - # TODO: Use Popen once we resolve the problem with msvcrt in Windows: - (stdin, stdout, stderr) = os.popen3 (cmd) - # p = Popen(cmd, shell=True, stdin=PIPE, stdout=PIPE, stderr=PIPE, close_fds=True) - # (stdin, stdout, stderr) = (p.stdin, p.stdout, p.stderr) + closefds = True + if (sys.platform == "mingw32"): + closefds = False + p = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=closefds) + (stdin, stdout, stderr) = (p.stdin, p.stdout, p.stderr) stdin.write (input) status = stdin.close ()