From f623408fe882fde8ba8cf9451d834e98e88f60e0 Mon Sep 17 00:00:00 2001 From: John Mandereau Date: Thu, 12 Mar 2009 13:26:04 +0100 Subject: [PATCH] Docs: merge duplicate instances of compilation instructions Of course, this does not prevent us to split compilation instructions between instructions for everybody (self-builders, packagers and developers), which should still be present in Application Usage, and instructions only for LilyPond developers, which IMHO shall be only in the Contributors' Guide. Signed-off-by: Patrick McCarty --- Documentation/devel/compiling.itexi | 16 +- Documentation/devel/contrib-guide.texi | 2 +- Documentation/user/compile.itely | 488 +++++++++++++++++++++++++ Documentation/user/install.itely | 486 +----------------------- 4 files changed, 502 insertions(+), 490 deletions(-) create mode 100644 Documentation/user/compile.itely diff --git a/Documentation/devel/compiling.itexi b/Documentation/devel/compiling.itexi index a39e0d85de..b1a33aeff3 100644 --- a/Documentation/devel/compiling.itexi +++ b/Documentation/devel/compiling.itexi @@ -1,14 +1,20 @@ @c -*- coding: us-ascii; mode: texinfo; -*- -@node Compiling -@chapter Compiling +@node Compiling LilyPond +@chapter Compiling LilyPond -@menu -* move AU 1 here:: -@end menu +TODO: ADD + +- how to make a stable version and development version coexist on + your system @node move AU 1 here @section move AU 1 here +- other compilation tricks for developers +@menu +* Compiling from source:: standard compilation instructions +@end menu +@include compile.itely diff --git a/Documentation/devel/contrib-guide.texi b/Documentation/devel/contrib-guide.texi index c04b3f1ae7..446986d291 100644 --- a/Documentation/devel/contrib-guide.texi +++ b/Documentation/devel/contrib-guide.texi @@ -121,7 +121,7 @@ of this and other documentation. @menu * Starting with git:: -* Compiling:: +* Compiling LilyPond:: * Documentation work:: * Website work:: * LSR work:: diff --git a/Documentation/user/compile.itely b/Documentation/user/compile.itely new file mode 100644 index 0000000000..15227251bd --- /dev/null +++ b/Documentation/user/compile.itely @@ -0,0 +1,488 @@ +@c -*- coding: utf-8; mode: texinfo; -*- +@c This file is part of install.itely and ../devel/compiling.itexi + +@c DO NOT TRANSLATE THIS FILE + +@node Compiling from source +@section Compiling from source + +@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} +(version 0.17 or newer). + +@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://fontconfig.org/,FontConfig} (version 2.2 or newer). +@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.60 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.60 or newer, or 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}. +@item @uref{http://www.nongnu.org/texi2html/,Texi2HTML} 1.80 or newer +@item rsync +@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 +./scripts/auxiliar/build-coverage.sh +@emph{# uncovered files, least covered first} +./scripts/auxiliar/coverage.py --summary out-cov/*.cc +@emph{# consecutive uncovered lines, longest first} +./scripts/auxiliar/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 + diff --git a/Documentation/user/install.itely b/Documentation/user/install.itely index 525e865279..f5ddb4f05e 100644 --- a/Documentation/user/install.itely +++ b/Documentation/user/install.itely @@ -58,10 +58,6 @@ 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 @@ -77,7 +73,7 @@ the @uref{Compiling-from-source.html,documentation in English}. @end ignore @c TRANSLATORS: -@c Please **do not** translate anything below this line. Users +@c Please **do not** translate the file included below. 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 @@ -85,483 +81,5 @@ the @uref{Compiling-from-source.html,documentation in English}. @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} -(version 0.17 or newer). - -@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://fontconfig.org/,FontConfig} (version 2.2 or newer). -@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.60 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.60 or newer, or 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}. -@item @uref{http://www.nongnu.org/texi2html/,Texi2HTML} 1.80 or newer -@item rsync -@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 -./scripts/auxiliar/build-coverage.sh -@emph{# uncovered files, least covered first} -./scripts/auxiliar/coverage.py --summary out-cov/*.cc -@emph{# consecutive uncovered lines, longest first} -./scripts/auxiliar/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 +@include compile.itely -- 2.39.5