]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/user/running.itely
Merge branch 'master' of carldsorensen@git.sv.gnu.org:/srv/git/lilypond
[lilypond.git] / Documentation / user / running.itely
1 @c -*- coding: utf-8; mode: texinfo; -*-
2 @c This file is part of lilypond-program.tely
3 @ignore
4     Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
5
6     When revising a translation, copy the HEAD committish of the
7     version that you are working on.  See TRANSLATION for details.
8 @end ignore
9
10 @c \version "2.11.61"
11
12
13 @node Running LilyPond
14 @chapter Running LilyPond
15
16 This chapter details the technicalities of running LilyPond.
17
18 @menu
19 * Normal usage::
20 * Command-line usage::
21 * Error messages::
22 * Updating files with convert-ly::
23 * Reporting bugs::
24 @end menu
25
26
27 @node Normal usage
28 @section Normal usage
29
30 Most users run LilyPond through a GUI; see @rlearning{First steps} if
31 you have not read this already.
32
33
34 @node Command-line usage
35 @section Command-line usage
36
37 This section contains extra information about using LilyPond on the
38 command-line.  This may be desirable to pass extra options to the
39 program.  In addition, there are certain extra @q{helper} programs (such
40 as @code{midi2ly}) which are only available on the command-line.
41
42 By @q{command-line}, we mean the command line in the operating system.
43 Windows users might be more familiar with the terms @q{DOS shell} or
44 @q{command shell}; MacOS@tie{}X users might be more familiar with the terms
45 @q{terminal} or @q{console}.  They should also consult @ref{Setup
46 for MacOS X}.
47
48 Describing how to use this part of an operating system is outside the
49 scope of this manual; please consult other documentation on this topic
50 if you are unfamiliar with the command-line.
51
52 @menu
53 * Invoking lilypond::
54 * Command line options for lilypond::
55 * Environment variables::
56 @end menu
57
58 @node Invoking lilypond
59 @subsection Invoking @command{lilypond}
60
61 @cindex Invoking @command{lilypond}
62 @cindex command line options for @command{lilypond}
63 @cindex options, command line
64 @cindex switches
65
66
67 The @command{lilypond} executable may be called as follows from the command line.
68
69 @example
70 lilypond [@var{option}]@dots{} @var{file}@dots{}
71 @end example
72
73
74 When invoked with a filename that has no extension, the @file{.ly}
75 extension is tried first.  To read input from stdin, use a
76 dash (@code{-}) for @var{file}.
77
78 When @file{filename.ly} is processed it will produce @file{filename.ps}
79 and @file{filename.pdf} as output.  Several files can be specified;
80 they will each be processed independently.  @footnote{The status of
81 GUILE is not reset after processing a @code{.ly} file, so be careful
82 not to change any system defaults from within Scheme.}
83
84 If @file{filename.ly} contains more than one @code{\score}
85 block, then the rest of the scores will be output in numbered files,
86 starting with @file{filename-1.pdf}.  In addition, the value of
87 @code{output-suffix} will be inserted between the basename and the
88 number.  An input file containing
89
90 @example
91 #(define output-suffix "violin")
92 \book @{ @dots{} @}
93 #(define output-suffix "cello")
94 \book @{ @dots{} @}
95 @end example
96
97 @noindent
98 will output @var{base}@file{-violin.pdf} and
99 @var{base}@file{-cello-1.pdf}.
100
101
102 @node Command line options for lilypond
103 @subsection Command line options for @command{lilypond}
104
105 The following options are supported:
106
107 @table @code
108
109 @item -e,--evaluate=@var{expr}
110 Evaluate the Scheme @var{expr} before parsing any @file{.ly} files.
111 Multiple @code{-e} options may be given, they will be evaluated
112 sequentially.
113
114 The expression will be evaluated in the @code{guile-user} module, so
115 if you want to use definitions in @var{expr}, use
116
117 @example
118 lilypond -e '(define-public a 42)'
119 @end example
120
121 @noindent
122 on the command-line, and include
123
124 @example
125 #(use-modules (guile-user))
126 @end example
127
128 @noindent
129 at the top of the @code{.ly} file.
130
131 @item -f,--format=@var{format}
132 which formats should be written.  Choices for @code{format} are
133 @code{svg}, @code{ps}, @code{pdf}, and @code{png}.
134
135 Example: @code{lilypond -fpng @var{filename}.ly}
136
137
138
139 @item -d,--define-default=@var{var}=@var{val}
140 This sets the internal program option @var{var} to the Scheme value
141 @var{val}.  If @var{val} is not supplied, then @var{#t} is used.  To
142 switch off an option, @code{no-} may be prefixed to @var{var}, e.g.
143
144 @cindex point and click, command line
145
146 @example
147 -dno-point-and-click
148 @end example
149
150 @noindent
151 is the same as
152 @example
153 -dpoint-and-click='#f'
154 @end example
155
156 Here are a few interesting options.
157
158 @table @samp
159 @item help
160 Running @code{lilypond -dhelp} will print all of the @code{-d} options
161 available.
162
163 @item paper-size
164 This option sets the default paper-size,
165 @example
166 -dpaper-size=\"letter\"
167 @end example
168
169 @noindent
170 Note that the string must be enclosed in escaped quotes ( @code{\"} ).
171 @c Match " in previous line to help context-sensitive editors
172
173 @item safe
174 Do not trust the @code{.ly} input.
175
176 When LilyPond formatting is available through a web server, either the
177 @code{--safe} or the @code{--jail} option @b{MUST} be passed.  The
178 @code{--safe} option will prevent inline Scheme code from wreaking
179 havoc, for example
180
181 @quotation
182 @verbatim
183 #(system "rm -rf /")
184 {
185   c4^#(ly:export (ly:gulp-file "/etc/passwd"))
186 }
187 @end verbatim
188 @end quotation
189
190 The @code{-dsafe} option works by evaluating in-line Scheme
191 expressions in a special safe module.  This safe module is derived from
192 GUILE @file{safe-r5rs} module, but adds a number of functions of the
193 LilyPond API.  These functions are listed in @file{scm/@/safe@/-lily@/.scm}.
194
195 In addition, safe mode disallows @code{\include} directives and
196 disables the use of backslashes in @TeX{} strings.
197
198 In safe mode, it is not possible to import LilyPond variables
199 into Scheme.
200
201 @code{-dsafe} does @emph{not} detect resource overuse.  It is still possible to
202 make the program hang indefinitely, for example by feeding cyclic data
203 structures into the backend.  Therefore, if using LilyPond on a
204 publicly accessible webserver, the process should be limited in both
205 CPU and memory usage.
206
207 The safe mode will prevent many useful LilyPond snippets from being
208 compiled.  The @code{--jail} is a more secure alternative, but
209 requires more work to set up.
210
211 @item backend
212 the output format to use for the back-end.  Choices for @code{format} are
213 @table @code
214 @item ps
215  for PostScript.
216 @cindex PostScript output
217
218   Postscript files include TTF, Type1 and OTF fonts.  No subsetting of
219   these fonts is done.  When using oriental character sets, this can
220   lead to huge files.
221
222 @item eps
223  for encapsulated PostScript.  This dumps every page (system) as a separate
224 @file{EPS} file, without fonts, and as one collated @file{EPS} file with
225 all pages (systems) including fonts.
226
227 This mode is used by default by @command{lilypond-book}.
228
229 @item svg
230  for SVG (Scalable Vector Graphics).  This dumps every page as a separate
231 @file{SVG} file, with embedded fonts.
232 @cindex SVG (Scalable Vector Graphics)
233   You need a SVG viewer which supports embedded fonts, or a SVG
234   viewer which is able to replace the embedded fonts with OTF fonts.
235   Under UNIX, you may use @uref{http://www.inkscape.org,Inkscape}
236   (version 0.42 or later), after copying the OTF fonts from the LilyPond directory
237   (typically @file{/usr/share/lilypond/VERSION/fonts/otf/}) to @file{~/.fonts/}.
238 @item scm
239  for a dump of the raw, internal Scheme-based drawing commands.
240 @cindex Scheme dump
241 @end table
242
243 Example: @code{lilypond -dbackend=svg @var{filename}.ly}
244
245 @cindex output format, setting
246
247 @item preview
248 Generate an output file containing the titles and the first system
249
250 @item print-pages
251 Generate the full pages, the default.  @code{-dno-print-pages} is
252 useful in combination with @code{-dpreview}.
253
254 @end table
255
256
257
258 @item -h,--help
259 Show a summary of usage.
260
261 @item -H,--header=@var{FIELD}
262 Dump a header field to file @file{BASENAME.@var{FIELD}}.
263
264 @item --include, -I=@var{directory}
265 Add @var{directory} to the search path for input files.
266 @cindex file searching
267 @cindex search path
268
269 @item -i,--init=@var{file}
270 Set init file to @var{file} (default: @file{init.ly}).
271
272 @item -o,--output=@var{FILE}
273 Set the default output file to @var{FILE}.  The appropriate
274 suffix will be added (e.g. @code{.pdf} for pdf)
275
276 @item --ps
277 Generate PostScript.
278
279 @item --png
280 Generate pictures of each page, in PNG format.  This implies
281 @code{--ps}.  The resolution in DPI of the image may be set with
282 @example
283 -dresolution=110
284 @end example
285
286 @item --pdf
287 Generate PDF.  This implies @code{--ps}.
288
289
290
291 @item -j,--jail=@var{user},@var{group},@var{jail},@var{dir}
292 Run @command{lilypond} in a chroot jail.
293
294 The @code{--jail} option provides a more flexible alternative to
295 @code{--safe} when LilyPond formatting is available through a web
296 server or whenever LilyPond executes externally provided
297 sources.
298
299 The @code{--jail} option works by changing the root of @command{lilypond} to
300 @var{jail} just before starting the actual compilation process.  The user
301 and group are then changed to match those provided, and the current
302 directory is changed to @var{dir}.  This setup guarantees that it is not
303 possible (at least in theory) to escape from the jail.  Note that for
304 @code{--jail} to work @command{lilypond} must be run as root, which is usually
305 accomplished in a safe way using @command{sudo}.
306
307 Setting up a jail is a slightly delicate matter, as we must be sure that
308 LilyPond is able to find whatever it needs to compile the source
309 @emph{inside the jail}.  A typical setup comprises the following items:
310
311 @table @asis
312 @item Setting up a separate filesystem
313 A separate filesystem should be created for LilyPond, so that it can be
314 mounted with safe options such as @code{noexec}, @code{nodev}, and
315 @code{nosuid}.  In this way, it is impossible to run executables or to
316 write directly to a device from LilyPond.  If you do not want to create a
317 separate partition, just create a file of reasonable size and use it to
318 mount a loop device.  A separate filesystem also guarantees that LilyPond
319 cannot write more space than it is allowed.
320
321 @item Setting up a separate user
322 A separate user and group (say, @code{lily}/@code{lily}) with low
323 privileges should be used to run LilyPond inside the jail.  There should
324 be a single directory writable by this user, which should be passed in
325 @var{dir}.
326
327 @item Preparing the jail
328 LilyPond needs to read a number of files while running.  All these files
329 are to be copied into the jail, under the same path they appear in the
330 real root filesystem.  The entire content of the LilyPond installation
331 (e.g., @file{/usr/share/lilypond})
332 should be copied.
333
334 If problems arise, the simplest way to trace them down is to run
335 LilyPond using @command{strace}, which will allow you to determine which
336 files are missing.
337
338 @item Running LilyPond
339 In a jail mounted with @code{noexec} it is impossible to execute any external
340 program.  Therefore LilyPond must be run with a backend that does not
341 require any such program.  As we already mentioned, it must be also run
342 with superuser privileges (which, of course, it will lose immediately),
343 possibly using @command{sudo}.  It is a good idea to limit the number of
344 seconds of CPU time LilyPond can use (e.g., using @command{ulimit
345 -t}), and, if your operating system supports it, the amount of memory
346 that can be allocated.
347 @end table
348
349
350 @item -v,--version
351 Show version information.
352
353 @item -V,--verbose
354 Be verbose: show full paths of all files read, and give timing
355 information.
356
357 @item -w,--warranty
358 Show the warranty with which GNU LilyPond comes. (It comes with
359 @strong{NO WARRANTY}!)
360 @end table
361
362 @node Environment variables
363 @subsection Environment variables
364
365
366 @cindex LANG
367 @cindex LILYPOND_DATADIR
368
369 @command{lilypond} recognizes the following environment variables:
370 @table @code
371 @item LILYPOND_DATADIR
372 This specifies a directory where locale messages and
373 data files will be looked up by default.  The directory should contain
374 subdirectories called @file{ly/}, @file{ps/}, @file{tex/}, etc.
375
376 @item LANG
377 This selects the language for the warning messages.
378
379 @item LILYPOND_GC_YIELD
380 With this variable the memory footprint and performance can be
381 adjusted.  It is a percentage tunes memory management behavior.  With
382 higher values, the program uses more memory, with smaller values, it
383 uses more CPU time.  The default value is @code{70}.
384
385 @end table
386
387
388 @node Error messages
389 @section Error messages
390
391 @cindex error messages
392 Different error messages can appear while compiling a file:
393
394 @table @emph
395
396 @item Warning
397 @cindex warning
398 Something looks suspect.  If you are requesting something out of the
399 ordinary then you will understand the message, and can ignore it.
400 However, warnings usually indicate that something is wrong with the
401 input file.
402
403 @item Error
404 Something is definitely wrong.  The current processing step (parsing,
405 interpreting, or formatting) will be finished, but the next step will
406 be skipped.
407
408 @item Fatal error
409 @cindex error
410 @cindex fatal error
411 Something is definitely wrong, and LilyPond cannot continue.  This
412 happens rarely.  The most usual cause is misinstalled fonts.
413
414 @item Scheme error
415 @cindex trace, Scheme
416 @cindex call trace
417 @cindex Scheme error
418 Errors that occur while executing Scheme code are caught by the Scheme
419 interpreter.  If running with the verbose option (@code{-V} or
420 @code{--verbose}) then a call trace of the offending
421 function call is printed.
422
423 @item Programming error
424 @cindex Programming error
425 There was some internal inconsistency.  These error messages are
426 intended to help the programmers and debuggers.  Usually, they can be
427 ignored.  Sometimes, they come in such big quantities that they obscure
428 other output.
429
430 @item Aborted (core dumped)
431 This signals a serious programming error that caused the program to
432 crash.  Such errors are considered critical.  If you stumble on one,
433 send a bug-report.
434 @end table
435
436 @cindex errors, message format
437 If warnings and errors can
438 be linked to some part of the input file, then error messages have the
439 following form
440
441 @example
442 @var{filename}:@var{lineno}:@var{columnno}: @var{message}
443 @var{offending input line}
444 @end example
445
446 A line-break is inserted in the offending line to indicate the column
447 where the error was found.  For example,
448
449 @example
450 test.ly:2:19: error: not a duration: 5
451   @{ c'4 e'
452            5 g' @}
453 @end example
454
455 These locations are LilyPond's best guess about where the warning or
456 error occurred, but (by their very nature) warnings and errors occur
457 when something unexpected happens.  If you can't see an error in the
458 indicated line of your input file, try checking one or two lines
459 above the indicated position.
460
461
462 @node Updating files with convert-ly
463 @section Updating files with @command{convert-ly}
464
465 @cindex Updating a LilyPond file
466 @cindex convert-ly
467
468 The LilyPond input syntax is routinely changed to simplify it or improve
469 it in different ways.  As a side effect of this, the LilyPond interpreter
470 often is no longer compatible with older input files.  To remedy this,
471 the program @command{convert-ly} can be used to deal with most of the
472 syntax changes between LilyPond versions.
473
474 It uses @code{\version} statements in the input files to detect the
475 old version number.  In most cases, to upgrade your input file it is
476 sufficient to run
477
478 @example
479 convert-ly -e myfile.ly
480 @end example
481
482 @noindent
483 MacOS@tie{}X users may execute this command under the menu entry
484 @code{Compile > Update syntax}.
485
486 If there are no changes to myfile.ly and file called myfile.ly.NEW
487 is created, then myfile.ly is already updated.
488
489 @menu
490 * Command line options for convert-ly::
491 * Problems with convert-ly::
492 @end menu
493
494 @node Command line options for convert-ly
495 @subsection Command line options for @command{convert-ly}
496
497 @command{convert-ly} always converts up to the last syntax change handled by
498 it.  This means that the @code{\version} number left in the file is
499 usually lower than the version of @command{convert-ly} itself.
500
501 To upgrade LilyPond fragments in texinfo files, use
502
503 @example
504 convert-ly --from=... --to=... --no-version *.itely
505 @end example
506
507 To see the changes in the LilyPond syntax between two versions, use
508
509 @example
510 convert-ly --from=... --to=... -s
511 @end example
512
513 To upgrade many files at once, combine @code{convert-ly} with
514 standard UNIX commands.  This example will upgrade all @code{.ly}
515 files in the current directory
516
517 @example
518 for f in *.ly; do convert-ly -e $f; done;
519 @end example
520
521 In general, the program is invoked as follows:
522
523 @example
524 convert-ly [@var{option}]@dots{} @var{file}@dots{}
525 @end example
526
527
528 The following options can be given:
529
530 @table @code
531 @item -e,--edit
532 Do an inline edit of the input file.  Overrides @code{--output}.
533
534 @item -f,--from=@var{from-patchlevel}
535 Set the version to convert from.  If this is not set, @command{convert-ly}
536 will guess this, on the basis of @code{\version} strings in the file.
537
538 @item -n,--no-version
539 Normally, @command{convert-ly} adds a @code{\version} indicator
540 to the output.  Specifying this option suppresses this.
541
542 @item -s, --show-rules
543 Show all known conversions and exit.
544
545 @item --to=@var{to-patchlevel}
546 Set the goal version of the conversion.  It defaults to the latest
547 available version.
548
549 @item -h, --help
550 Print usage help.
551 @end table
552
553
554 @node Problems with convert-ly
555 @subsection Problems with @code{convert-ly}
556
557 Not all language changes are handled.  Only one output option can be
558 specified.  Automatically updating scheme and LilyPond scheme
559 interfaces is quite unlikely; be prepared to tweak scheme code
560 manually.
561
562 @verbatim
563 There are a few things that the convert-ly cannot handle.  Here's a list
564 of limitations that the community has complained about.
565
566 This bug report structure has been chosen because convert-ly has a
567 structure that doesn't allow to smoothly implement all needed changes.
568 Thus this is just a wishlist, placed here for reference.
569
570 1.6->2.0:
571  Doesn't always convert figured bass correctly, specifically things like {<
572 >}.  Mats' comment on working around this:
573    To be able to run convert-ly
574    on it, I first replaced all occurrences of '{<' to some dummy like '{#'
575    and similarly I replaced '>}' with '&}'.  After the conversion, I could
576    then change back from '{ #' to '{ <' and from '& }' to '> }'.
577  Doesn't convert all text markup correctly.  In the old markup syntax,
578  it was possible to group a number of markup commands together within
579 parentheses, e.g.
580    -#'((bold italic) "string")
581    This will incorrectly be converted into
582    -\markup{{\bold italic} "string"}
583    instead of the correct
584    -\markup{\bold \italic "string"}
585 2.0->2.2:
586  Doesn't handle \partcombine
587  Doesn't do \addlyrics => \lyricsto, this breaks some scores with multiple
588 stanzas.
589 2.0->2.4:
590  \magnify isn't changed to \fontsize.
591     - \magnify #m => \fontsize #f, where f = 6ln(m)/ln(2)
592  remove-tag isn't changed.
593     - \applyMusic #(remove-tag '. . .) => \keepWithTag #'. . .
594  first-page-number isn't changed.
595     - first-page-number no => print-first-page-number = ##f
596  Line breaks in header strings aren't converted.
597     - \\\\  as line break in \header strings => \markup \center-align <
598       "First Line" "Second Line" >
599  Crescendo and decrescendo terminators aren't converted.
600     - \rced => \!
601     - \rc => \!
602 2.2->2.4:
603  \turnOff (used in \set Staff.VoltaBracket = \turnOff) is not properly
604 converted.
605 2.4.2->2.5.9
606  \markup{ \center-align <{ ... }> } should be converted to:
607  \markup{ \center-align {\line { ... }} }
608  but now, \line is missing.
609 2.4->2.6
610  Special LaTeX characters such as $~$ in text are not converted to UTF8.
611 2.8
612  \score{} must now begin with a music expression.  Anything else
613  (particularly \header{}) must come after the music.
614 @end verbatim
615
616
617 @node Reporting bugs
618 @section Reporting bugs
619
620 @cindex bugs
621 @cindex reporting bugs
622
623 If you have input that results in a crash or an erroneous output, then
624 that is a bug.  There is a list of current bugs on our Google bug tracker,
625
626 @uref{http://code.google.com/p/lilypond/issues/list}
627
628 If you have discovered a bug which is not listed, please report the
629 bug by following the directions on
630
631 @uref{http://lilypond.org/web/devel/participating/bugs}
632
633 Please construct and submit minimal examples of bugs in reports.  We do not
634 have the resources to investigate reports which are not as small as possible.
635
636
637