1 @c -*- coding: utf-8; mode: texinfo; -*-
4 @c DO NOT TRANSLATE THIS FILE
6 @c include any node/sections from the higher-level *texi file.
7 @c @n ode Compiling from source
8 @c @s ection Compiling from source
11 * Overview of compiling::
13 * Getting the source code::
15 * Compiling LilyPond::
16 * Post-compilation options::
18 * Concurrent stable and development versions::
23 @node Overview of compiling
24 @section Overview of compiling
26 Compiling LilyPond from source is an involved process, and is only
27 recommended for developers and packagers. Typical program users
28 are instead encouraged to obtain the program from a package
29 manager (on Unix) or by downloading a precompiled binary
30 configured for a specific operating system. Pre-compiled binaries
31 are available on the @rweb{Download} page.
33 Compiling LilyPond from source is necessary if you want to build,
34 install, or test your own version of the program.
36 A successful compile can also be used to generate and install the
37 documentation, incorporating any changes you may have made.
38 However, a successful compile is not a requirement for generating
39 the documentation. The documentation can be built using a Git
40 repository in conjunction with a locally installed copy of the
41 program. For more information, see @ref{Building documentation
44 Attempts to compile LilyPond natively on Windows have been
45 unsuccessful, though a workaround is available (see
54 * Requirements for running LilyPond::
55 * Requirements for compiling LilyPond::
56 * Requirements for building documentation::
60 @node Requirements for running LilyPond
61 @subsection Requirements for running LilyPond
63 Running LilyPond requires proper installation of the following
67 @item @uref{http://www.dejavu-fonts.org/, DejaVu fonts} (normally
70 @item @uref{http://www.fontconfig.org/, FontConfig} (2.4.0 or newer)
72 @item @uref{http://www.freetype.org/, Freetype} (2.1.10 or newer)
74 @item @uref{http://www.ghostscript.com, Ghostscript} (8.60 or
77 @item @uref{http://www.gnu.org/software/guile/guile.html, Guile}
80 @item @uref{http://www.pango.org/, Pango} (1.12 or newer)
82 @item @uref{http://www.python.org, Python} (2.4 or newer)
85 International fonts are required to create music with
86 international text or lyrics.
89 @node Requirements for compiling LilyPond
90 @subsection Requirements for compiling LilyPond
92 Below is a full list of packages needed to build LilyPond.
93 However, for most common distributions there is an easy way of
94 installing most all build dependencies in one go:
96 @multitable @columnfractions .5 .5
97 @headitem Distribution @tab Command
99 @tab @code{sudo apt-get build-dep lilypond}
102 @tab @code{sudo yum-builddep lilypond}
105 @c sorry for the idiosyncratic command, I really asked and argued
106 @c for "zypper build-dep" :-(
107 @tab @code{sudo zypper --build-deps-only source-install lilypond}
111 @item Everything listed in @ref{Requirements for running
114 @item Development packages for the above items (which should
115 include header files and libraries).
119 @c ghostscript-devel-[version] isn't needed
121 guile-devel-@var{version}
122 fontconfig-devel-@var{version}
123 freetype-devel-@var{version}
124 pango-devel-@var{version}
125 python-devel-@var{version}
130 @c libgs-dev isn't needed
132 guile-@var{version}-dev
136 python@var{version}-dev
139 @item @uref{http://flex.sourceforge.net/, Flex}
141 @item @uref{http://fontforge.sf.net/, FontForge} (20060125 or
144 @item @uref{http://www.gnu.org/software/bison/, GNU Bison}
146 @item @uref{http://gcc.gnu.org/, GNU Compiler Collection} (3.4 or
147 newer, 4.@var{x} recommended)
149 @item @uref{http://www.gnu.org/software/gettext/gettext.html, GNU
150 gettext} (0.17 or newer)
152 @item @uref{http://www.gnu.org/software/make/, GNU Make} (3.78 or
155 @item @uref{http://metafont.tutorial.free.fr/, MetaFont}
156 (mf-nowin, mf, mfw or mfont binaries), usually packaged with
157 @uref{http://www.latex-project.org/ftp.html, @TeX{}}.
159 @item @uref{http://cm.bell-labs.com/who/hobby/MetaPost.html,
160 MetaPost} (mpost binary), usually packaged with
161 @uref{http://www.latex-project.org/ftp.html, @TeX{}}.
163 @item @uref{http://www.perl.org/, Perl}
165 @item @uref{http://www.gnu.org/software/texinfo/, Texinfo} (4.11
168 @item @uref{http://www.lcdf.org/~eddietwo/type/#t1utils, Type 1
169 utilities} (1.33 or newer recommended)
173 @node Requirements for building documentation
174 @subsection Requirements for building documentation
176 You can view the documentation online at
177 @uref{http://www.lilypond.org/doc/}, but you can also build it
178 locally. This process requires some additional tools and
182 @item Everything listed in @ref{Requirements for compiling
185 @item @uref{http://www.imagemagick.org/, ImageMagick}
187 @item @uref{http://netpbm.sourceforge.net/, Netpbm}
189 @item @uref{http://gzip.org/, gzip}
191 @item @uref{http://rsync.samba.org/, rsync}
193 @item @uref{http://www.nongnu.org/texi2html/, Texi2HTML} (1.82)
195 @item International fonts
223 @node Getting the source code
224 @section Getting the source code
227 @subheading Downloading the Git repository
229 In general, developers compile LilyPond from within a local Git
230 repository. Setting up a local Git repository is explained in
231 @rcontrib{Starting with Git}.
234 @subheading Downloading a source tarball
236 Packagers are encouraged to use source tarballs for compiling.
238 The tarball for the latest stable release is available on the
243 @uref{http://git.savannah.gnu.org/gitweb/?p=lilypond.git;a=snapshot, source code snapshot}
244 is also available as a tarball from the GNU Savannah Git server.
247 All tagged releases (including legacy stable
248 versions and the most recent development release) are available
252 @uref{http://download.linuxaudio.org/lilypond/source/}
255 Download the tarball to your @file{~/src/} directory, or some
256 other appropriate place.
258 @warning{Be careful where you unpack the tarball! Any
259 subdirectories of the current folder named @file{lilypond/} or
260 @file{lilypond-@var{x.y.z}/} (where @var{x.y.z} is the release
261 number) will be overwritten if there is a name clash with the
264 Unpack the tarball with this command:
267 tar -xzf lilypond-@var{x.y.z}.tar.gz
270 This creates a subdirectory within the current directory called
271 @file{lilypond-@var{x.y.z}/}. Once unpacked, the source files
272 occupy about 40 MB of disk space.
274 Windows users wanting to look at the source code may have to
275 download and install the free-software
276 @uref{http://www.7-zip.org, 7zip archiver} to extract the tarball.
279 @node Configuring make
280 @section Configuring @command{make}
284 * Running ./autogen.sh::
285 * Running ../configure::
289 @node Running ./autogen.sh
290 @subsection Running @command{./autogen.sh}
292 After you unpack the tarball (or download the Git repository), the
293 contents of your top source directory should be similar to the
294 current source tree listed at
295 @uref{http://git.sv.gnu.org/gitweb/?p=lilypond.git;a=tree}.
297 Next, you need to create the generated files; enter the following
298 command from your top source directory:
301 ./autogen.sh --noconfigure
304 This will generate a number of files and directories to aid
305 configuration, such as @file{configure}, @file{README.txt}, etc.
307 Next, create the build directory with:
314 We heavily recommend building lilypond inside a separate directory
318 @node Running ../configure
319 @subsection Running @command{../configure}
323 * Configuration options::
324 * Checking build dependencies::
325 * Configuring target directories::
329 @node Configuration options
330 @unnumberedsubsubsec Configuration options
332 @warning{make sure that you are in the @file{build/} subdirectory
333 of your source tree.}
335 The @command{../configure} command (generated by
336 @command{./autogen.sh}) provides many options for configuring
337 @command{make}. To see them all, run:
344 @node Checking build dependencies
345 @unnumberedsubsubsec Checking build dependencies
347 @warning{make sure that you are in the @file{build/} subdirectory
348 of your source tree.}
350 When @command{../configure} is run without any arguments, it will
351 check to make sure your system has everything required for
358 If any build dependency is missing, @command{../configure} will
362 ERROR: Please install required programs: @var{foo}
365 The following message is issued if you are missing programs that
366 are only needed for building the documentation:
369 WARNING: Please consider installing optional programs: @var{bar}
372 If you intend to build the documentation locally, you will need to
373 install or update these programs accordingly.
375 @warning{@command{../configure} may fail to issue warnings for
376 certain documentation build requirements that are not met. If you
377 experience problems when building the documentation, you may need
378 to do a manual check of @ref{Requirements for building
382 @node Configuring target directories
383 @unnumberedsubsubsec Configuring target directories
385 @warning{make sure that you are in the @file{build/} subdirectory
386 of your source tree.}
388 If you intend to use your local build to install a local copy of
389 the program, you will probably want to configure the installation
390 directory. Here are the relevant lines taken from the output of
391 @command{../configure@tie{}--help}:
394 By default, `@command{make@tie{}install}' will install all the
395 files in @file{/usr/local/bin}, @file{/usr/local/lib} etc. You
396 can specify an installation prefix other than @file{/usr/local}
397 using `@code{--prefix}', for instance `@code{--prefix=$HOME}'.
400 A typical installation prefix is @file{$HOME/usr}:
403 ../configure --prefix=$HOME/usr
406 Note that if you plan to install a local build on a system where
407 you do not have root privileges, you will need to do something
408 like this anyway---@command{make@tie{}install} will only succeed
409 if the installation prefix points to a directory where you have
410 write permission (such as your home directory). The installation
411 directory will be automatically created if necessary.
413 The location of the @command{lilypond} command installed by this
414 process will be @file{@var{prefix}/bin/lilypond}; you may want to
415 add @file{@var{prefix}/bin/} to your @code{$PATH} if it is not
418 It is also possible to specify separate installation directories
419 for different types of program files. See the full output of
420 @command{../configure@tie{}--help} for more information.
422 If you encounter any problems, please see @ref{Problems}.
425 @node Compiling LilyPond
426 @section Compiling LilyPond
431 * Saving time with the -j option::
432 * Compiling for multiple platforms::
433 * Useful make variables::
438 @subsection Using @command{make}
440 @warning{make sure that you are in the @file{build/} subdirectory
441 of your source tree.}
443 LilyPond is compiled with the @command{make} command. Assuming
444 @command{make} is configured properly, you can simply run:
450 @samp{make} is short for @samp{make all}. To view a list of @command{make}
457 TODO: Describe what @command{make} actually does.
460 @node Saving time with the -j option
461 @subsection Saving time with the @option{-j} option
463 If your system has multiple CPUs, you can speed up compilation by
464 adding @samp{-j@var{X}} to the @command{make} command, where
465 @samp{@var{X}} is one more than the number of cores you have. For
466 example, a typical Core2Duo machine would use:
472 If you get errors using the @option{-j} option, and @samp{make}
473 succeeds without it, try lowering the @code{@var{X}} value.
475 Because multiple jobs run in parallel when @option{-j} is used, it can
476 be difficult to determine the source of an error when one occurs. In
477 that case, running @samp{make} without the @option{-j} is advised.
479 @node Compiling for multiple platforms
480 @subsection Compiling for multiple platforms
482 If you want to build multiple versions of LilyPond with different
483 configuration settings, you can use the
484 @code{--enable-config=@var{CONF}} option of @command{configure}.
485 You should use @code{make@tie{}conf=@var{CONF}} to generate the
486 output in @file{out-@var{CONF}}. For example, suppose you want to
487 build with and without profiling, then use the following for the
491 ./configure --prefix=$HOME/usr/ --enable-checking
495 and for the profiling version, specify a different configuration
498 ./configure --prefix=$HOME/usr/ --enable-profiling \
499 --enable-config=prof --disable-checking
503 If you wish to install a copy of the build with profiling, don't
504 forget to use @code{conf=@var{CONF}} when issuing
505 @command{make@tie{}install}:
508 make conf=prof install
513 @ref{Installing LilyPond from a local build}
516 @node Useful make variables
517 @subsection Useful @command{make} variables
519 If a less verbose build output if desired, the variable
520 @code{QUIET_BUILD} may be set to @code{1} on @command{make}
521 command line, or in @file{local.make} at top of the build tree.
524 @node Post-compilation options
525 @section Post-compilation options
529 * Installing LilyPond from a local build::
530 * Generating documentation::
531 * Testing LilyPond binary::
535 @node Installing LilyPond from a local build
536 @subsection Installing LilyPond from a local build
538 If you configured @command{make} to install your local build in a
539 directory where you normally have write permission (such as your
540 home directory), and you have compiled LilyPond by running
541 @command{make}, you can install the program in your target
542 directory by running:
548 If instead, your installation directory is not one that you can
549 normally write to (such as the default @file{/usr/local/}, which
550 typically is only writeable by the superuser), you will need to
551 temporarily become the superuser when running
552 @command{make@tie{}install}:
565 If you don't have superuser privileges, then you need to configure
566 the installation directory to one that you can write to, and then
567 re-install. See @ref{Configuring target directories}.
570 @node Generating documentation
571 @subsection Generating documentation
575 * Documentation editor's edit/compile cycle::
576 * Building documentation::
577 * Saving time with CPU_COUNT::
579 * Installing documentation::
580 * Building documentation without compiling::
584 @node Documentation editor's edit/compile cycle
585 @unnumberedsubsubsec Documentation editor's edit/compile cycle
589 Initial documentation build:
593 make [-j@var{X} CPU_COUNT=@var{X}] doc @emph{## can take an hour or more}
600 @emph{## edit source files, then...}
602 make [-j@var{X}] @emph{## needed if editing outside}
603 @emph{## Documentation/, but useful anyway}
604 @emph{## for finding Texinfo errors.}
605 touch Documentation/*te?? @emph{## bug workaround}
606 make [-j@var{X} CPU_COUNT=@var{X}] doc @emph{## usually faster than initial build.}
613 make doc-clean @emph{## use only as a last resort.}
617 @node Building documentation
618 @unnumberedsubsubsec Building documentation
620 After a successful compile (using @command{make}), the
621 documentation can be built by issuing:
627 The first time you run @command{make@tie{}doc}, the process can
628 easily take an hour or more. After that, @command{make@tie{}doc}
629 only makes changes to the pre-built documentation where needed,
630 so it may only take a minute or two to test changes if the
631 documentation is already built.
633 If @command{make@tie{}doc} succeeds, the HTML documentation tree
634 is available in @file{out-www/offline-root/}, and can be browsed
635 locally. Various portions of the documentation can be found by
636 looking in @file{out/} and @file{out-www} subdirectories in other
637 places in the source tree, but these are only @emph{portions} of
638 the docs. Please do not complain about anything which is broken
639 in those places; the only complete set of documentation is in
640 @file{out-www/offline-root/} from the top of the source tree.
642 Compilation of documentation in Info format with images can be
643 done separately by issuing:
651 If source files have changed since the last documentation build,
652 output files that need to be rebuilt are normally rebuilt, even if
653 you do not run @code{make@tie{}doc-clean} first. However, build
654 dependencies in the documentation are so complex that some
655 newly-edited files may not be rebuilt as they should be; a
656 workaround is to @command{touch} the top source file for any
657 manual you've edited. For example, if you make changes to a file
658 in @file{notation/}, do:
661 touch Documentation/notation.tely
665 The top sources possibly affected by this are:
668 Documentation/extend.texi
669 Documentation/changes.tely
670 Documentation/contributor.texi
671 Documentation/essay.tely
672 Documentation/extending.tely
673 Documentation/learning.tely
674 Documentation/notation.tely
675 Documentation/snippets.tely
676 Documentation/usage.tely
677 Documentation/web.texi
681 You can @command{touch} all of them at once with:
684 touch Documentation/*te??
688 However, this will rebuild all of the manuals
689 indiscriminately---it is more efficient to @command{touch} only
693 @node Saving time with CPU_COUNT
694 @unnumberedsubsubsec Saving time with @code{CPU_COUNT}
696 The most time consuming task for building the documentation is
697 running LilyPond to build images of music, and there cannot be
698 several simultaneously running @command{lilypond-book} instances,
699 so the @option{-j} @command{make} option does not significantly
700 speed up the build process. To help speed it up, the makefile
701 variable @option{CPU_COUNT} may be set in @file{local.make} or on
702 the command line to the number of @code{.ly} files that LilyPond
703 should process simultaneously, e.g. on a bi-processor or dual core
707 make -j3 CPU_COUNT=3 doc
711 The recommended value of @option{CPU_COUNT} is one plus the number
712 of cores or processors, but it is advisable to set it to a smaller
713 value unless your system has enough RAM to run that many
714 simultaneous LilyPond instances. Also, values for the @option{-j}
715 option that pose problems with @samp{make} are less likely to pose
716 problems with @samp{make doc} (this applies to both @option{-j}
717 and @option{CPU_COUNT}). For example, with a quad-core processor,
718 it is possible for @samp{make -j5 CPU_COUNT=5 doc} to work
719 consistently even if @samp{make -j5} rarely succeeds.
723 @unnumberedsubsubsec AJAX search
725 To build the documentation with interactive searching, use:
728 make doc AJAX_SEARCH=1
731 This requires PHP, and you must view the docs via a http
732 connection (you cannot view them on your local filesystem).
734 @warning{Due to potential security or load issues, this option is
735 not enabled in the official documentation builds. Enable at your
739 @node Installing documentation
740 @unnumberedsubsubsec Installing documentation
742 The HTML, PDF and if available Info files can be installed into
743 the standard documentation path by issuing
750 This also installs Info documentation with images if the
751 installation prefix is properly set; otherwise, instructions to
752 complete proper installation of Info documentation are printed on
755 To install the Info documentation separately, run:
762 Note that to get the images in Info documentation, @code{install-doc}
763 target creates symbolic links to HTML and PDF installed documentation
764 tree in @file{@var{prefix}/share/info}, in order to save disk space,
765 whereas @code{install-info} copies images in
766 @file{@var{prefix}/share/info} subdirectories.
768 It is possible to build a documentation tree in
769 @file{out-www/online-root/}, with special processing, so it can be
770 used on a website with content negotiation for automatic language
771 selection; this can be achieved by issuing
774 make WEB_TARGETS=online doc
778 and both @q{offline} and @q{online} targets can be generated by issuing
781 make WEB_TARGETS="offline online" doc
784 Several targets are available to clean the documentation build and
785 help with maintaining documentation; an overview of these targets is
793 from every directory in the build tree. Most targets for
794 documentation maintenance are available from
795 @file{Documentation/}; for more information, see
796 @rcontrib{Documentation work}.
798 The makefile variable @code{QUIET_BUILD} may be set to @code{1}
799 for a less verbose build output, just like for building the
803 @node Building documentation without compiling
804 @unnumberedsubsubsec Building documentation without compiling
807 The documentation can be built locally without compiling LilyPond
808 binary, if LilyPond is already installed on your system.
810 From a fresh Git checkout, do
813 ./autogen.sh # ignore any warning messages
814 cp GNUmakefile.in GNUmakefile
815 make -C scripts && make -C python
816 nice make LILYPOND_EXTERNAL_BINARY=/path/to/bin/lilypond doc
819 Please note that this may break sometimes -- for example, if a new
820 feature is added with a test file in input/regression, even the latest
821 development release of LilyPond will fail to build the docs.
823 You may build the manual without building all the @file{input/*} stuff
824 (i.e. mostly regression tests): change directory, for example to
825 @file{Documentation/}, issue @code{make doc}, which will build
826 documentation in a subdirectory @file{out-www} from the source files in
827 current directory. In this case, if you also want to browse the
828 documentation in its post-processed form, change back to top directory
832 make out=www WWW-post
837 You may also need to create a script for @command{pngtopnm} and
838 @code{pnmtopng}. On GNU/Linux, I use this:
841 export LD_LIBRARY_PATH=/usr/lib
842 exec /usr/bin/pngtopnm "$@"
845 On MacOS X with fink, I use this:
848 export DYLD_LIBRARY_PATH=/sw/lib
849 exec /sw/bin/pngtopnm "$@"
852 On MacOS X with macports, you should use this:
855 export DYLD_FALLBACK_LIBRARY_PATH=/opt/local/lib
856 exec /opt/local/bin/pngtopnm "$@"
860 @node Testing LilyPond binary
861 @subsection Testing LilyPond binary
864 LilyPond comes with an extensive suite that exercises the entire
865 program. This suite can be used to test that the binary has
866 been built correctly.
868 The test suite can be executed with:
874 If the test suite completes successfully, the LilyPond binary
877 More information on the regression test suite is found at
878 @rcontrib{Regression tests}.
883 For help and questions use @email{lilypond-user@@gnu.org}. Send
884 bug reports to @email{bug-lilypond@@gnu.org}.
886 Bugs that are not fault of LilyPond are documented here.
888 @unnumberedsubsubsec Bison 1.875
890 There is a bug in bison-1.875: compilation fails with "parse error
891 before `goto'" in line 4922 due to a bug in bison. To fix, please
892 recompile bison 1.875 with the following fix
895 $ cd lily; make out/parser.cc
896 $ vi +4919 out/parser.cc
897 # append a semicolon to the line containing "__attribute__ ((__unused__))
903 @unnumberedsubsubsec Compiling on MacOS@tie{}X
905 Here are special instructions for compiling under MacOS@tie{}X.
906 These instructions assume that dependencies are installed using
907 @uref{http://www.macports.org/, MacPorts.} The instructions have
908 been tested using OS X 10.5 (Leopard).
910 First, install the relevant dependencies using MacPorts.
912 Next, add the following to your relevant shell initialization
913 files. This is @code{~/.profile} by default. You should create
914 this file if it does not exist.
917 export PATH=/opt/local/bin:/opt/local/sbin:$PATH
918 export DYLD_FALLBACK_LIBRARY_PATH=/opt/local/lib:$DYLD_FALLBACK_LIBRARY_PATH
921 Now you must edit the generated @file{config.make} file. Change
924 FLEXLEXER_FILE = /usr/include/FlexLexer.h
931 FLEXLEXER_FILE = /opt/local/include/FlexLexer.h
934 At this point, you should verify that you have the appropriate
935 fonts installed with your ghostscript installation. Check @code{ls
936 /opt/local/share/ghostscript/fonts} for: 'c0590*' files (.pfb,
937 .pfb and .afm). If you don't have them, run the following
938 commands to grab them from the ghostscript SVN server and install
939 them in the appropriate location:
942 svn export http://svn.ghostscript.com/ghostscript/tags/urw-fonts-1.0.7pre44/
943 sudo mv urw-fonts-1.0.7pre44/* /opt/local/share/ghostscript/fonts/
944 rm -rf urw-fonts-1.07pre44
947 Now run the @code{./configure} script. To avoid complications with
948 automatic font detection, add
951 --with-ncsb-dir=/opt/local/share/ghostscript/fonts
955 @unnumberedsubsubsec Solaris
957 Solaris7, ./configure
959 @file{./configure} needs a POSIX compliant shell. On Solaris7,
960 @file{/bin/sh} is not yet POSIX compliant, but @file{/bin/ksh} or bash
961 is. Run configure like
964 CONFIG_SHELL=/bin/ksh ksh -c ./configure
971 CONFIG_SHELL=/bin/bash bash -c ./configure
974 @unnumberedsubsubsec FreeBSD
976 To use system fonts, dejaview must be installed. With the default
977 port, the fonts are installed in @file{usr/X11R6/lib/X11/fonts/dejavu}.
979 Open the file @file{$LILYPONDBASE/usr/etc/fonts/local.conf} and add the
980 following line just after the @code{<fontconfig>} line. (Adjust as necessary
984 <dir>/usr/X11R6/lib/X11/fonts</dir>
988 @unnumberedsubsubsec International fonts
990 On Mac OS X, all fonts are installed by default. However, finding all
991 system fonts requires a bit of configuration; see
992 @uref{http://lists.gnu.org/archive/html/lilypond-user/2007-03/msg00472.html,
993 this post} on the @code{lilypond-user} mailing list.
995 On Linux, international fonts are installed by different means on
996 every distribution. We cannot list the exact commands or packages
997 that are necessary, as each distribution is different, and the exact
998 package names within each distribution changes. Here are some
1004 taipeifonts fonts-xorg-truetype ttfonts-ja fonts-arabic \
1005 ttfonts-zh_CN fonts-ja fonts-hebrew
1009 apt-get install emacs-intl-fonts xfonts-intl-.* \
1010 ttf-kochi-gothic ttf-kochi-mincho \
1011 xfonts-bolkhov-75dpi xfonts-cronyx-100dpi xfonts-cronyx-75dpi
1015 @unnumberedsubsubsec Using lilypond python libraries
1017 If you want to use lilypond's python libraries (either running
1018 certain build scripts manually, or using them in other programs),
1019 set @code{PYTHONPATH} to @file{python/out} in your build
1020 directory, or @file{.../usr/lib/lilypond/current/python} in the
1021 installation directory structure.
1026 @node Concurrent stable and development versions
1027 @section Concurrent stable and development versions
1030 It can be useful to have both the stable and the development versions
1031 of Lilypond available at once. One way to do this on GNU/Linux is to
1032 install the stable version using the precompiled binary, and run the
1033 development version from the source tree. After running @command{make
1034 all} from the top directory of the Lilypond source files, there will
1035 be a binary called @code{lilypond} in the @code{out} directory:
1038 <@var{path to}>/lilypond/out/bin/lilypond
1041 This binary can be run without actually doing the @code{make
1042 install} command. The advantage to this is that you can have all
1043 of the latest changes available after pulling from git and running
1044 @code{make all}, without having to uninstall the old version and
1047 So, to use the stable version, install it as usual and use the
1054 To use the development version, create a link to the binary in the
1055 source tree by saving the following line in a file somewhere in your
1059 exec <@var{path to}>/lilypond/out/bin/lilypond "$@@"
1062 Save it as @code{Lilypond} (with a capital L to distinguish it
1063 from the stable @code{lilypond}), and make it executable:
1069 Then you can invoke the development version this way:
1078 - other compilation tricks for developers
1082 @section Build system
1085 We currently use make and stepmake, which is complicated and only
1086 used by us. Hopefully this will change in the future.
1089 @subsubheading Version-specific texinfo macros
1094 made with @command{scripts/build/create-version-itexi.py} and@*
1095 @command{scripts/build/create-weblinks-itexi.py}
1098 used extensively in the @code{WEBSITE_ONLY_BUILD} version of the
1099 website (made with @file{website.make}, used on lilypond.org)
1102 not (?) used in the main docs?
1105 the numbers in VERSION file: MINOR_VERSION should be 1 more than
1106 the last release, VERSION_DEVEL should be the last @strong{online}
1107 release. Yes, VERSION_DEVEL is less than VERSION.