lilypond-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Adds redirect-lilypond-output option to lilypond-book (issue4664060)


From: address@hidden
Subject: Re: Adds redirect-lilypond-output option to lilypond-book (issue4664060)
Date: Sun, 17 Jul 2011 16:43:43 +0200

Hey all,

During a recent sudo make install I got this error.  I'm not sure if it has to 
do with recent pushes in the python code, but I figured I'd pass it along:

Compiling 
/Users/mikesolomon/devel/lilypond/Documentation/out/notation/notation.texi...
/Users/mikesolomon/devel/lilypond/Documentation/out/notation/notation.texi is 
up to date.
Processing include: notation/pitches.itely
Reading notation/pitches.itely...
Dissecting...
Writing snippets...
Processing...
Traceback (most recent call last):
  File "../scripts/lilypond-book.py", line 693, in <module>
    main ()
  File "../scripts/lilypond-book.py", line 675, in main
    chunks = do_file (files[0])
  File "../scripts/lilypond-book.py", line 585, in do_file
    chunks))
  File "../scripts/lilypond-book.py", line 581, in process_include
    return do_file (name, included=True)
  File "../scripts/lilypond-book.py", line 585, in do_file
    chunks))
  File "../scripts/lilypond-book.py", line 581, in process_include
    return do_file (name, included=True)
  File "../scripts/lilypond-book.py", line 569, in do_file
    do_process_cmd (chunks, input_fullname, global_options)
  File "../scripts/lilypond-book.py", line 437, in do_process_cmd
    options.formatter, options.lily_output_dir)
  File "../scripts/lilypond-book.py", line 390, in process_snippets
    logfile)
  File "../scripts/lilypond-book.py", line 367, in system_in_directory
    progress_p=1)
TypeError: subprocess_system() got an unexpected keyword argument 
'redirect_output'
make[1]: *** [out/notation.texi] Error 1
make: *** [install] Error 2

Cheers,
MS

On Jul 3, 2011, at 2:02 PM, address@hidden wrote:

> Reviewers: Graham Percival,
> 
> Message:
> Please review the patch set to add the redirect option.
> 
> Description:
> Adds a new option to lilypond-book that causes the lilypond
> output to be directed to logfiles.  The option is:
> --redirect-lilypond-output.
> 
> This is a possible pre-cursor to further build work, but
> only possible.
> 
> Test cases and further information at:
> http://www.holmessoft.co.uk/homepage/private/lilypond/
> 
> Please review this at http://codereview.appspot.com/4664060/
> 
> Affected files:
>  M python/lilylib.py
>  M scripts/lilypond-book.py
> 
> 
> Index: python/lilylib.py
> diff --git a/python/lilylib.py b/python/lilylib.py
> index 
> dac53c16cf4dd5d83c2111e4ba49e28701f410b0..06bb5c361b835a78779c2bb1038c2b033cea99e2
>  100644
> --- a/python/lilylib.py
> +++ b/python/lilylib.py
> @@ -23,6 +23,7 @@ import re
> import shutil
> import sys
> import optparse
> +import time
> 
> ################################################################
> # Users of python modules should include this snippet
> @@ -118,6 +119,7 @@ def subprocess_system (cmd,
>                        ignore_error=False,
>                        progress_p=True,
>                        be_verbose=False,
> +                       redirect_output=False,
>                        log_file=None):
>     import subprocess
> 
> @@ -125,34 +127,52 @@ def subprocess_system (cmd,
>     name = command_name (cmd)
>     error_log_file = ''
> 
> -    if be_verbose:
> -     show_progress = 1
> -     progress (_ ("Invoking `%s\'") % cmd)
> +    if redirect_output:
> +        progress (_ ("Processing %s.ly") % log_file)
> +        progress ('\n')
>     else:
> -     progress ( _("Running %s...") % name)
> -
> +        if be_verbose:
> +            show_progress = 1
> +            progress (_ ("Invoking `%s\'") % cmd)
> +        else:
> +            progress ( _("Running %s...") % name)
> 
>     stdout_setting = None
> +    stderr_setting = None
>     if not show_progress:
> -     stdout_setting = subprocess.PIPE
> +        stdout_setting = subprocess.PIPE
> +
> +    if redirect_output:
> +        stdout_filename = ''.join([log_file, '.log'])
> +        stderr_filename = ''.join([log_file, '.err.log'])
> +        stdout_setting = open(stdout_filename, 'w')
> +        stderr_setting = open(stderr_filename, 'w')
> 
>     proc = subprocess.Popen (cmd,
>                              shell=True,
>                              universal_newlines=True,
>                              stdout=stdout_setting,
> -                             stderr=stdout_setting)
> +                             stderr=stderr_setting)
> 
>     log = ''
> 
> -    if show_progress:
> -     retval = proc.wait()
> +    if redirect_output:
> +        while proc.poll()==None:
> +            time.sleep(1)
> +        retval = proc.returncode
> +        stdout_setting.close()
> +        stderr_setting.close()
>     else:
> -     log = proc.communicate ()
> -     retval = proc.returncode
> -
> +        if show_progress:
> +            retval = proc.wait()
> +        else:
> +            log = proc.communicate ()
> +            retval = proc.returncode
> 
>     if retval:
>         print >>sys.stderr, 'command failed:', cmd
> +        if redirect_output:
> +            print >>sys.stderr, "Look in logfile", stderr_filename
>         if retval < 0:
>             print >>sys.stderr, "Child was terminated by signal", -retval
>         elif retval > 0:
> Index: scripts/lilypond-book.py
> diff --git a/scripts/lilypond-book.py b/scripts/lilypond-book.py
> index 
> 9617f3666d3a4c878325a089b3d898def9771a8d..cb3ff4de3269861c09f0e5d83bb46a2bbdd39ca4
>  100644
> --- a/scripts/lilypond-book.py
> +++ b/scripts/lilypond-book.py
> @@ -179,6 +179,11 @@ def get_option_parser ():
>                   action='store',
>                   dest='process_cmd', default='')
> 
> +    p.add_option ('--redirect-lilypond-output',
> +                  help = _ ("Redirect the lilypond output"),
> +                  action='store_true',
> +                  dest='redirect_output', default=False)
> +
>     p.add_option ('-s', '--safe', help=_ ("Compile snippets in safe mode"),
>                   action="store_true",
>                   default=False,
> @@ -347,7 +352,7 @@ def find_toplevel_snippets (input_string, formatter):
> 
>     return snippets
> 
> -def system_in_directory (cmd, directory):
> +def system_in_directory (cmd, directory, logfile):
>     """Execute a command in a different directory.
> 
>     Because of win32 compatibility, we can't simply use subprocess.
> @@ -355,7 +360,10 @@ def system_in_directory (cmd, directory):
> 
>     current = os.getcwd()
>     os.chdir (directory)
> -    ly.system(cmd, be_verbose=global_options.verbose,
> +    ly.system(cmd,
> +              be_verbose=global_options.verbose,
> +              redirect_output=global_options.redirect_output,
> +              log_file=logfile,
>               progress_p=1)
>     os.chdir (current)
> 
> @@ -374,11 +382,12 @@ def process_snippets (cmd, snippets,
>                           + list (set ([snip.basename() + '.ly' for snip in 
> snippets])))
>     name = os.path.join (lily_output_dir,
>                          'snippet-names-%d.ly' % checksum)
> +    logfile = name.replace('.ly', '')
>     file (name, 'wb').write (contents)
> 
>     system_in_directory (' '.join ([cmd, ly.mkarg (name)]),
> -                         lily_output_dir)
> -
> +                         lily_output_dir,
> +                         logfile)
> 
> def snippet_list_checksum (snippets):
>     return hash (' '.join([l.basename() for l in snippets]))
> 
> 
> 
> _______________________________________________
> lilypond-devel mailing list
> address@hidden
> https://lists.gnu.org/mailman/listinfo/lilypond-devel




reply via email to

[Prev in Thread] Current Thread [Next in Thread]