@c -*- coding: utf-8; mode: texinfo; -*-
@c This file is part of lilypond-program.tely
@ignore
Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
When revising a translation, copy the HEAD committish of the
version that you are working on. See TRANSLATION for details.
@end ignore
@c \version "2.11.61"
@ifclear INSTALL
@node Install
@chapter Install
@end ifclear
There are two sets of releases for LilyPond: stable releases, and
unstable development releases. Stable versions have an even-numbered
@q{minor} version number (i.e. 2.8, 2.10, 2.12, etc). Development
versions have an odd-numbered @q{minor} version number (i.e. 2.7, 2.9,
2.11, etc).
Building LilyPond is a very involved process, so we @strong{highly}
recommend using the precompiled binaries.
@menu
* Precompiled binaries::
* Compiling from source::
@end menu
@node Precompiled binaries
@section Precompiled binaries
@unnumberedsubsec Downloading
Check out @uref{http://lilypond.org/web/install/} for up to date
information on binary packages for your platform. If your operating
system is not covered on that general page, please see the complete list
at @uref{http://download.linuxaudio.org/lilypond/binaries/}
We currently create binaries for
@example
darwin-ppc - MacOS X powerpc
darwin-x86 - MacOS X intel
freebsd-64 - FreeBSD 6.x, x86_64
freebsd-x86 - FreeBSD 4.x, x86
linux-64 - Any GNU/Linux distribution, x86_64
linux-ppc - Any GNU/Linux distribution, powerpc
linux-x86 - Any GNU/Linux distribution, x86
mingw - Windows x86
@end example
@knownissues
If you have MacOS 10.3 or 10.4 and you would like to use Python
scripts such as @command{convert-ly} and @command{lilypond-book}, see
@ref{Setup for MacOS X,,,lilypond-program,Application Usage}.
@node Compiling from source
@section Compiling from source
@ignore
You can also compile LilyPond directly from the source code. This
requires that you can read English, so this section is not
translated. If you really want to compile LilyPond, see
@iftex
@c DO NOT translate the following line at all.
@ref{Compiling from source,,,lilypond-program,Application Usage}.
@end iftex
@ifhtml
@c Please translate the following line (but not the .html file name)
the @uref{Compiling-from-source.html,documentation in English}.
@end ifhtml
@end ignore
@c TRANSLATORS:
@c Please **do not** translate anything below this line. Users
@c should not be compiling LilyPond themselves; if they really
@c want to do so, they should be able to read the English docs,
@c because they'll probably need to ask questions in English
@c on the -devel list. -gp
@c Instead, please uncomment and translate the paragraph above,
@c and remove all stuff (menu, nodes, contents) below this line.
@menu
* Downloading source code::
* Requirements::
* Building LilyPond::
* Building documentation::
* Testing LilyPond::
* Problems::
@end menu
@node Downloading source code
@subsection Downloading source code
Download source
@itemize
@item tarballs from
@uref{http://lilypond.org/download/} by HTTP.
@item tarballs from
@uref{http://download.linuxaudio.org/lilypond/} by HTTP.
@item
GIT from @uref{http://git.sv.gnu.org/gitweb/?p=lilypond.git;a=summary,git.sv.gnu.org}
@example
git clone git://git.sv.gnu.org/lilypond.git
@end example
The repository does not contain generated files. To create
@file{configure}, run
@example
./autogen.sh
@end example
@end itemize
For information on packaging, see @uref{http://lilypond.org/devel}.
@node Requirements
@subsection Requirements
@unnumberedsubsubsec Compilation
In addition to the packages needed for running LilyPond (see below), you
need the following extra packages for building.
When installing a binary package FOO, you may need to install the
FOO-devel, libFOO-dev or FOO-dev package too.
@itemize
@item @uref{http://fontforge.sf.net/,FontForge} 20060125 or newer.
@item @uref{http://metafont.tutorial.free.fr/,MetaFont} (mf-nowin, mf, mfw or
mfont binaries) and @uref{http://cm.bell-labs.com/who/hobby/MetaPost.html,MetaPost}
(mpost binary), usually packaged with a @LaTeX{} distribution like
tetex or texlive.
@item @uref{http://www.lcdf.org/~eddietwo/type/#t1utils,t1utils}
(version 1.33 or newer recommended).
@item New Century Schoolbook fonts, as PFB files. These are shipped with
X11 and Ghostscript, and are named @file{c059033l.pfb}
@file{c059036l.pfb}, @file{c059013l.pfb} and @file{c059016l.pfb}.
@item @uref{http://www.gnu.org/software/guile/guile.html,GUILE} (version
1.8.2 or newer). If you are installing binary packages, you may need to
install guile-devel or guile-dev or libguile-dev too.
@item @uref{ftp://ftp.gnu.org/gnu/texinfo/,Texinfo} (version 4.11 or newer).
@item @uref{http://gcc.gnu.org/, The GNU c++ compiler} (version 3.4 or
newer. 4.x is strongly recommended).
@item @uref{http://www.python.org,Python} (version 2.4 or newer)
@item @uref{ftp://ftp.gnu.org/gnu/make/,GNU Make} (version 3.78 or newer).
@item @uref{http://www.gnu.org/software/gettext/gettext.html,gettext}.
@item @uref{http://www.gnu.org/software/flex/,Flex}.
@item @uref{http://www.perl.org/,Perl}.
@item @uref{http://www.gnu.org/software/flex/,GNU Bison}.
@item All packages required for running, including development packages with
header files and libraries.
@end itemize
@unnumberedsubsubsec Running requirements
Running LilyPond requires proper installation of the following software
@itemize
@item @uref{http://www.freetype.org/,Freetype} (version 2.1.10 or newer).
@item @uref{http://www.freetype.org/,FontConfig} (version 2.2).
@item @uref{http://www.pango.org/,Pango} (version 1.12 or newer).
@item @uref{http://www.gnu.org/software/guile/guile.html,GUILE}
(version 1.8.2 or newer), or patch 1.8.1 with
@uref{http://lilypond.org/vc/gub.darcs/patches/guile-1.8-rational.patch}.
@item @uref{http://www.python.org,Python} (version 2.4 or newer).
@item @uref{http://www.ghostscript.com,Ghostscript} (version 8.15 or
newer. 8.50 recommended)
@item Dejaview. (This is normally installed by default)
@end itemize
International fonts are required to create music with international text
or lyrics.
@unnumberedsubsubsec Requirements for building documentation
You can view the documentation online at
@uref{http://lilypond.org/doc/}, but you can also build it locally.
This process requires a successful compile of LilyPond, and some
additional tools and packages:
@itemize
@item The @uref{http://netpbm.sourceforge.net/,netpbm utilities}
@item ImageMagick
@item International fonts (see input/regression/utf-8.ly for hints
about which font packages are necessary for your platform)
@item Ghostscript, 8.50 with the patch from
@uref{http://bugs.ghostscript.com/show_bug.cgi?id=688154}
and the patch from
@uref{http://bugs.ghostscript.com/show_bug.cgi?id=688017}, or use
a release of Ghostscript which includes these patches, for example
8.60 or newer.
@item @uref{http://www.nongnu.org/texi2html/,Texi2HTML} 1.79 or newer
is strongly recommended to build documentation in HTML; support for
building HTML documentation using @command{makeinfo} from GNU Texinfo
is deprecated.
@end itemize
@node Building LilyPond
@subsection Building LilyPond
@unnumberedsubsubsec Compiling
To install GNU LilyPond, type
@example
gunzip -c lilypond-x.y.z | tar xf -
cd lilypond-x.y.z
./configure # run with --help for applicable options
make
su -c 'make install'
@end example
@noindent
If you are not root, you should choose a @code{--prefix} argument that
points into your home directory, e.g.
@example
./configure --prefix=$HOME/usr
@end example
@unnumberedsubsubsec Compiling for multiple platforms
If you want to build multiple versions of LilyPond with different
configuration settings, you can use the @code{--enable-config=CONF}
option of @command{configure}. You should use @code{make conf=CONF}
to generate the output in @file{out-CONF}. For example, suppose you
want to build with and without profiling, then use the following for
the normal build
@example
./configure --prefix=$HOME/usr/ --enable-checking
make
make install
@end example
and for the profiling version, specify a different configuration
@example
./configure --prefix=$HOME/usr/ --enable-profiling --enable-config=prof --disable-checking
make conf=prof
make conf=prof install
@end example
@unnumberedsubsubsec Compiling outside the source tree
It is possible to compile LilyPond in a build tree different from the
source tree, with @code{--srcdir} option of @command{configure}:
@example
mkdir lily-build && cd lily-build
@var{sourcedir}/configure --srcdir=@var{sourcedir}
@end example
@unnumberedsubsubsec Useful @command{make} variables
If a less verbose build output if desired, the variable
@code{QUIET_BUILD} may be set to @code{1} on @command{make} command
line, or in @file{local.make} at top of the build tree.
@node Building documentation
@subsection Building documentation
This requires a successful compile of LilyPond, or using an external
LilyPond binary.
@menu
* Commands for building documentation:: Compiling and installing the documentation.
* Building documentation without compiling LilyPond:: Using a LilyPond binary already installed.
@end menu
@node Commands for building documentation
@unnumberedsubsubsec Commands for building documentation
The documentation is built by issuing
@example
make web
@end example
After compilation, the HTML documentation tree is available in
@file{out-www/offline-root/}, and can be browsed locally.
The HTML and PDF files can be installed into the standard documentation
path by issuing
@example
make web-install
@end example
@noindent
This also installs Info documentation with images if the installation
prefix is properly set; otherwise, instructions for manual installation
of Info documentation are printed on standard output.
It is also possible to build a documentation tree in
@file{out-www/online-root/}, with special processing, so it can be used
on a website with content negotiation for automatic language selection;
this can be achieved by issuing
@example
make WEB_TARGETS=online web
@end example
@noindent
and both @q{offline} and @q{online} targets can be generated by issuing
@example
make WEB_TARGETS="offline online" web
@end example
Several targets are available to clean the documentation build and
help with maintaining documentation; an overview of these targets is
available with
@example
make help
@end example
@noindent
from every directory in the build tree. Most targets for
documentation maintenance are available from @file{Documentation/};
for more information, see @file{Documentation/user/README.txt} and
@file{Documentation/TRANSLATION}.
The makefile variable @code{QUIET_BUILD} may be set to @code{1} for a
less verbose build output, just like for building the programs.
@knownissues
The most time consuming task for building the documentation is running
LilyPond to build images of music, and there cannot be several
simultaneously running @command{lilypond-book} instances, so @code{-j}
@command{make} option does not significantly speed up the build process.
To help speed it up, the makefile variable @var{CPU_COUNT} may be set
in @file{local.make} or on the command line to the number of
@code{.ly} files that LilyPond should process simultaneously, e.g. on
a bi-processor or dual core machine
@example
make -j3 CPU_COUNT=3 web
@end example
@noindent
The recommended value of @var{CPU_COUNT} is one plus the number of
cores or processors, but it is advisable to set it to a smaller value
if your system has not enough RAM to run that many simultaneous
LilyPond instances.
If source files have changed since last documentation build, output
files that need to be rebuilt are normally rebuilt, even if you do not
run @code{make web-clean} first. However, building dependencies in the
documentation are so complex that rebuilding of some targets may not
be triggered as they should be; a workaround is to force rebuilding
by touching appropriate files, e.g.
@example
touch Documentation/user/*.itely
touch input/lsr/*.ly
@end example
@node Building documentation without compiling LilyPond
@unnumberedsubsubsec Building documentation without compiling LilyPond
The documentation can be built locally without compiling LilyPond
binary, if LilyPond is already installed on your system.
From a fresh Git checkout, do
@example
./autogen.sh # ignore any warning messages
cp GNUmakefile.in GNUmakefile
make -C python
nice make LILYPOND_EXTERNAL_BINARY=/path/to/bin/lilypond web
@end example
Please note that this may break sometimes -- for example, if a new
feature is added with a test file in input/regression, even the latest
development release of LilyPond will fail to build the docs.
You may build the manual without building all the @file{input/*}
stuff: change directory, for example to @file{Documentation/user},
issue @code{make web}, which will build documentation in a
subdirectory @file{out-www} from the source files in current
directory. In this case, if you also want to browse the documentation
in its post-processed form, change back to top directory and issue
@example
make out=www WWW-post
@end example
@knownissues
You may also need to create a script for @command{pngtopnm} and
@code{pnmtopng}. On GNU/Linux, I use this:
@verbatim
export LD_LIBRARY_PATH=/usr/lib
exec /usr/bin/pngtopnm "$@"
@end verbatim
On MacOS@tie{}X, I use this:
@verbatim
export DYLD_LIBRARY_PATH=/sw/lib
exec /sw/bin/pngtopnm "$@"
@end verbatim
@node Testing LilyPond
@subsection Testing LilyPond
@html
@end html
LilyPond comes with an extensive suite that exercises the entire
program. This suite can be used to automatically check the impact of a
change. This is done as follows
@example
make test-baseline
@emph{## apply your changes, compile}
make check
@end example
This will leave an HTML page @file{out/test-results/index.html}. This
page shows all the important differences that your change introduced,
whether in the layout, MIDI, performance or error reporting.
To rerun tests, use
@example
make test-redo @emph{## redo files differing from baseline}
make test-clean @emph{## remove all test results}
@end example
@noindent
and then run @code{make check} again.
For tracking memory usage as part of this test, you will need GUILE
CVS; especially the following patch:
@uref{http://lilypond.org/vc/gub.darcs/patches/guile-1.9-gcstats.patch}.
For checking the coverage of the test suite, do the following
@example
./buildscripts/build-coverage.sh
@emph{# uncovered files, least covered first}
python ./buildscripts/coverage.py --summary out-cov/*.cc
@emph{# consecutive uncovered lines, longest first}
python ./buildscripts/coverage.py --uncovered out-cov/*.cc
@end example
@node Problems
@subsection Problems
For help and questions use @email{lilypond-user@@gnu.org}. Send bug
reports to @email{bug-lilypond@@gnu.org}.
Bugs that are not fault of LilyPond are documented here.
@unnumberedsubsubsec Bison 1.875
There is a bug in bison-1.875: compilation fails with "parse error
before `goto'" in line 4922 due to a bug in bison. To fix, please
recompile bison 1.875 with the following fix
@example
$ cd lily; make out/parser.cc
$ vi +4919 out/parser.cc
# append a semicolon to the line containing "__attribute__ ((__unused__))
# save
$ make
@end example
@unnumberedsubsubsec Solaris
Solaris7, ./configure
@file{./configure} needs a POSIX compliant shell. On Solaris7,
@file{/bin/sh} is not yet POSIX compliant, but @file{/bin/ksh} or bash
is. Run configure like
@example
CONFIG_SHELL=/bin/ksh ksh -c ./configure
@end example
@noindent
or
@example
CONFIG_SHELL=/bin/bash bash -c ./configure
@end example
@unnumberedsubsubsec FreeBSD
To use system fonts, dejaview must be installed. With the default
port, the fonts are installed in @file{usr/X11R6/lib/X11/fonts/dejavu}.
Open the file @file{$LILYPONDBASE/usr/etc/fonts/local.conf} and add the
following line just after the @code{} line. (Adjust as necessary
for your hierarchy.)
@example
/usr/X11R6/lib/X11/fonts
@end example
@unnumberedsubsubsec International fonts
On MacOS@tie{}X, all fonts are installed by default. However, finding all
system fonts requires a bit of configuration; see
@uref{http://lists.gnu.org/archive/html/lilypond-user/2007-03/msg00472.html,
this post} on the @code{lilypond-user} mailing list.
On Linux, international fonts are installed by different means on
every distribution. We cannot list the exact commands or packages
that are necessary, as each distribution is different, and the exact
package names within each distribution changes. Here are some
hints, though:
@verbatim
Red Hat Fedora
taipeifonts fonts-xorg-truetype ttfonts-ja fonts-arabic \
ttfonts-zh_CN fonts-ja fonts-hebrew
Debian GNU/Linux
apt-get install emacs-intl-fonts xfonts-intl-.* \
ttf-kochi-gothic ttf-kochi-mincho \
xfonts-bolkhov-75dpi xfonts-cronyx-100dpi xfonts-cronyx-75dpi
@end verbatim