]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/user/install.itely
Add a TODO comment re grace note spacing.
[lilypond.git] / Documentation / user / install.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 @ifclear INSTALL
11 @node Install
12 @chapter Install
13 @end ifclear
14
15 @c  I don't know what this comment does.  Remove?  -gp
16 @ignore
17 @h tml
18 <a name="download-source">
19 @e nd html
20 @end ignore
21
22 There are two sets of releases for LilyPond: stable releases, and
23 unstable development releases.  Stable versions have an even-numbered
24 @q{minor} version number (i.e. 2.8, 2.10, 2.12, etc).  Development
25 versions have an odd-numbered @q{minor} version number (i.e. 2.7, 2.9,
26 2.11, etc).
27
28 Building LilyPond is a very involved process, so we @strong{highly}
29 recommend using the precompiled binaries.
30
31 @menu
32 * Precompiled binaries::        
33 * Compiling from source::       
34 @end menu
35
36
37 @node Precompiled binaries
38 @section Precompiled binaries
39
40 @subsection Downloading
41
42 Check out @uref{http://lilypond.org/web/install/} for up to date
43 information on binary packages for your platform.  If your operating
44 system is not covered on that general page, please see the complete list
45 at @uref{http://download.linuxaudio.org/lilypond/binaries/}
46
47 We currently create binaries for
48
49 @example
50 darwin-ppc  - MacOS X powerpc
51 darwin-x86  - MacOS X intel
52 freebsd-64  - FreeBSD 6.x, x86_64
53 freebsd-x86 - FreeBSD 4.x, x86
54 linux-64    - Any GNU/Linux distribution, x86_64
55 linux-arm   - Any GNU/Linux distribution, arm
56 linux-ppc   - Any GNU/Linux distribution, powerpc
57 linux-x86   - Any GNU/Linux distribution, x86
58 mingw       - Windows x86
59 @end example
60
61
62 @c TRANSLATORS:
63 @c   Please **do not** translate anything below this line.  Users
64 @c   should not be compiling LilyPond themselves; if they really 
65 @c   want to do so, they should be able to read the English docs,
66 @c   because they'll probably need to ask questions in English
67 @c   on the -devel list.   -gp
68
69 @node Compiling from source
70 @section Compiling from source
71
72 @menu
73 * Downloading source code::     
74 * Requirements::                
75 * Building LilyPond::           
76 * Building documentation without compiling LilyPond::  
77 * Testing LilyPond::            
78 * Problems::                    
79 @end menu
80
81 @node Downloading source code
82 @subsection Downloading source code
83
84 Download source
85
86 @itemize
87 @item tarballs from
88 @uref{http://lilypond.org/download/} by HTTP.
89 @item tarballs from
90 @uref{http://download.linuxaudio.org/lilypond/} by HTTP.
91 @item 
92 GIT from @uref{http://git.sv.gnu.org/gitweb/?p=lilypond.git;a=summary,git.sv.gnu.org}
93
94 @example
95 git clone git://git.sv.gnu.org/lilypond.git
96 @end example
97
98 The repository does not contain generated files.  To create
99 @file{configure}, run
100 @example
101 ./autogen.sh
102 @end example
103 @end itemize
104
105 For information on packaging, see @uref{http://lilypond.org/devel}.
106
107
108 @node Requirements
109 @subsection Requirements
110
111 @unnumberedsubsubsec Compilation
112
113 In addition to the packages needed for running Lilypond (see below), you
114 need the following extra packages for building.
115
116 When installing a binary package FOO, you may need to install the
117 FOO-devel, libFOO-dev or FOO-dev package too.
118
119 @itemize
120
121 @item @uref{http://fontforge.sf.net/,FontForge} 20060125 or newer.
122
123 @item New Century Schoolbook fonts, as PFB files.  These are shipped with
124 X11 and Ghostscript, and are named @file{c059033l.pfb}
125 @file{c059036l.pfb}, @file{c059013l.pfb} and @file{c059016l.pfb}
126
127 @item @uref{http://www.gnu.org/software/guile/guile.html,GUILE} (version
128 1.8.2 or newer).  If you are installing binary packages, you may need to
129 install guile-devel or guile-dev or libguile-dev too.
130
131 @item @uref{ftp://ftp.gnu.org/gnu/texinfo/,Texinfo} (version 4.11 or newer).
132
133 @item @uref{http://gcc.gnu.org/, The GNU c++ compiler} (version 4.x or
134 newer). 
135
136 @item @uref{http://www.python.org,Python} (version 2.4 or newer)
137
138 @item @uref{ftp://ftp.gnu.org/gnu/make/,GNU Make} (version 3.78 or newer).
139
140 @item @uref{http://www.gnu.org/software/gettext/gettext.html,gettext}.
141
142 @item @uref{http://www.gnu.org/software/flex/,Flex} 
143
144 @item @uref{http://www.perl.org/,Perl} 
145
146 @item @uref{http://www.gnu.org/software/flex/,GNU Bison} 
147
148 @item All packages required for running, including development packages with
149 header files and libraries.
150
151 @end itemize
152
153
154 @unnumberedsubsubsec Running requirements
155
156 Running LilyPond requires proper installation of the following software
157
158 @itemize
159
160 @item @uref{http://www.freetype.org/,Freetype} (version 2.1.10 or newer).
161 @item @uref{http://www.freetype.org/,FontConfig} (version 2.2).
162 @item @uref{http://www.pango.org/,Pango} (version 1.12 or newer).
163 @item @uref{http://www.gnu.org/software/guile/guile.html,GUILE}
164 (version 1.8.2 or newer), or patch 1.8.1 with
165 @uref{http://lilypond.org/vc/gub.darcs/patches/guile-1.8-rational.patch}.
166 @item @uref{http://www.python.org,Python} (version 2.4 or newer).
167 @item @uref{http://www.ghostscript.com,Ghostscript} (version 8.15 or
168 newer. 8.50 recommended)
169 @item Dejaview.  (This is normally installed by default)
170 @end itemize
171
172 International fonts are required to create music with international text
173 or lyrics.
174
175
176 @unnumberedsubsubsec Building documentation
177
178 You can view the documentation online at
179 @uref{http://lilypond.org/doc/}, but you can also build it locally.
180 This process requires a successful compile of lilypond.  The
181 documentation is built by issuing
182
183 @example
184 make web
185 @end example
186
187 Building the website requires some additional tools and packages
188
189 @itemize
190 @item The @uref{http://netpbm.sourceforge.net/,netpbm utilities}
191 @item ImageMagick
192 @item International fonts (see input/regression/utf-8.ly for hints
193 about which font packages are necessary for your platform)
194 @item Ghostscript, 8.50 with the patch from
195 @uref{http://bugs.ghostscript.com/show_bug.cgi?id=688154}
196 and the patch from
197 @uref{http://bugs.ghostscript.com/show_bug.cgi?id=688017}.
198 @end itemize
199
200 The HTML files can be installed into the standard documentation path
201 by issuing
202
203 @example
204 make out=www web-install
205 @end example
206
207
208 @node Building LilyPond
209 @subsection Building LilyPond
210
211 @unnumberedsubsubsec Compiling
212
213 To install GNU LilyPond, type
214
215 @example
216 gunzip -c lilypond-x.y.z | tar xf -
217 cd lilypond-x.y.z
218 ./configure             # run with --help for applicable options
219 make
220 make install
221 @end example
222
223 If you are not root, you should choose a @code{--prefix} argument that
224 points into your home directory, e.g.
225
226 @example
227 ./configure --prefix=$HOME/usr
228 @end example
229
230
231 @unnumberedsubsubsec Compiling for multiple platforms
232
233 If you want to build multiple versions of LilyPond with different
234 configuration settings, you can use the @code{--enable-config=CONF}
235 option of configure.  You should use @code{make conf=CONF} to generate
236 the output in @file{out-CONF}.  Example: Suppose you want to build
237 with and without profiling, then use the following for the normal
238 build
239
240 @example
241 ./configure --prefix=$HOME/usr/ --enable-checking
242 make
243 make install
244 @end example
245
246 and for the profiling version, specify a different configuration
247
248 @example
249 ./configure --prefix=$HOME/usr/ --enable-profiling --enable-config=prof --disable-checking
250 make conf=prof
251 make conf=prof install
252 @end example
253
254
255 @node Building documentation without compiling LilyPond
256 @subsection Building documentation without compiling LilyPond
257
258 The documentation can be built locally without compiling lilypond from
259 scratch.
260
261 From a fresh git checkout, do
262
263 @example
264 ./autogen.sh   % ignore any warning messages
265 cp GNUmakefile.in GNUmakefile
266 make -C python
267 nice make LILYPOND_EXTERNAL_BINARY=/path/to/bin/lilypond web
268 % change the lilypond directory as appropriate
269 @end example
270
271 Please note that this may break sometimes -- for example, if a new
272 feature is added with a test file in input/regression, even the latest
273 unstable Lily will fail to build the docs.
274
275 You may build the manual ( Documentation/user/ ) without building all
276 the input/* stuff.
277
278 @refbugs
279
280 You may also need to create a script for @command{pngtopnm} and
281 @code{pnmtopng}.  On Linux, I use this:
282
283 @verbatim
284 export LD_LIBRARY_PATH=/usr/lib
285 exec /usr/bin/pngtopnm "$@"
286 @end verbatim
287
288 On OSX, I use this:
289
290 @verbatim
291 export DYLD_LIBRARY_PATH=/sw/lib
292 exec /sw/bin/pngtopnm "$@" 
293 @end verbatim
294
295 In order to force make to build a complete manual (this does not
296 rebuild all examples, only things which are changed), I recommend
297 writing a script like this:
298
299 @verbatim
300 ### run from Documentation/user/
301 #  possibly required on OSX and/or old texinfo
302 # ulimit -n 4096
303 if [ -e out-www/lilypond.texi ]; then rm out-www/lilypond.* ; fi;
304 if [ -e out-www/lilypond-program.texi ]; then rm
305 out-www/lilypond-program.* ; fi;
306 if [ -e out-www/lilypond-learning.texi ]; then rm
307 out-www/lilypond-learning.* ; fi;
308 nice make LILYPOND_EXTERNAL_BINARY=~/usr/bin/lilypond web
309 @end verbatim
310
311 To rebuild the complete HTML docs, run the above script from the
312 @file{Documentation/user/} directory, then run the final line (the
313 @code{nice make}) from the top source dir.
314
315
316
317 @node Testing LilyPond
318 @subsection Testing LilyPond
319
320 @html
321 <a name="testing"></a>
322 @end html
323
324 LilyPond comes with an extensive suite that exercises the entire
325 program.  This suite can be used to automatically check the impact of a
326 change.  This is done as follows
327
328 @example
329 make test-baseline
330 @emph{## apply your changes, compile}
331 make check
332 @end example
333
334 This will leave an HTML page @file{out/test-results/index.html}.  This
335 page shows all the important differences that your change introduced,
336 whether in the layout, MIDI, performance or error reporting.
337
338 To rerun tests, use
339
340 @example
341 make test-redo           @emph{## redo files differing from baseline}
342 make test-clean          @emph{## remove all test results}
343 @end example
344
345 @noindent
346 and then run @code{make check} again.
347
348 For tracking memory usage as part of this test, you will need GUILE
349 CVS; especially the following patch:
350 @uref{http://lilypond.org/vc/gub.darcs/patches/guile-1.9-gcstats.patch}.
351
352 For checking the coverage of the test suite, do the following
353
354 @example
355 ./buildscripts/build-coverage.sh
356 @emph{# uncovered files, least covered first}
357 python ./buildscripts/coverage.py  --summary out-cov/*.cc
358 @emph{# consecutive uncovered lines, longest first} 
359 python ./buildscripts/coverage.py  --uncovered out-cov/*.cc
360 @end example
361
362
363 @node Problems
364 @subsection Problems
365
366 For help and questions use @email{lilypond-user@@gnu.org}.  Send bug
367 reports to @email{bug-lilypond@@gnu.org}.
368
369 Bugs that are not fault of LilyPond are documented here.
370
371 @unnumberedsubsubsec Bison 1.875
372
373 There is a bug in bison-1.875: compilation fails with "parse error
374 before `goto'" in line 4922 due to a bug in bison.  To fix, please
375 recompile bison 1.875 with the following fix
376
377 @example
378 $ cd lily; make out/parser.cc
379 $ vi +4919 out/parser.cc
380 # append a semicolon to the line containing "__attribute__ ((__unused__))
381 # save
382 $ make
383 @end example
384
385
386 @unnumberedsubsubsec Solaris
387
388 Solaris7, ./configure
389
390 @file{./configure} needs a POSIX compliant shell.  On Solaris7,
391 @file{/bin/sh} is not yet POSIX compliant, but @file{/bin/ksh} or bash
392 is.  Run configure like
393
394 @example
395 CONFIG_SHELL=/bin/ksh ksh -c ./configure
396 @end example
397
398 @noindent
399 or
400
401 @example
402 CONFIG_SHELL=/bin/bash bash -c ./configure
403 @end example
404
405 @unnumberedsubsubsec FreeBSD
406
407 To use system fonts, dejaview must be installed.  With the default
408 port, the fonts are installed in @file{usr/X11R6/lib/X11/fonts/dejavu}.
409
410 Open the file @file{$LILYPONDBASE/usr/etc/fonts/local.conf} and add the
411 following line just after the @code{<fontconfig>} line.  (Adjust as necessary
412 for your hierarchy.)
413
414 @example
415 <dir>/usr/X11R6/lib/X11/fonts</dir>
416 @end example
417
418
419 @unnumberedsubsubsec International fonts
420
421 On MacOs X, all fonts are installed by default.  However, finding all
422 system fonts requires a bit of configuration; see
423 @uref{http://lists.gnu.org/archive/html/lilypond-user/2007-03/msg00472.html,
424 this post} on the @code{lilypond-user} mailing list.
425
426 On Linux, international fonts are installed by different means on
427 every distribution.  We cannot list the exact commands or packages
428 that are necessary, as each distribution is different, and the exact
429 package names within each distribution changes.  Here are some
430 hints, though:
431
432 @verbatim
433 Red Hat Fedora
434
435     taipeifonts fonts-xorg-truetype ttfonts-ja fonts-arabic \
436          ttfonts-zh_CN fonts-ja fonts-hebrew 
437
438 Debian GNU/Linux
439
440    apt-get install emacs-intl-fonts xfonts-intl-.* \
441         ttf-kochi-gothic ttf-kochi-mincho \
442         xfonts-bolkhov-75dpi xfonts-cronyx-100dpi xfonts-cronyx-75dpi 
443 @end verbatim
444