]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/contributor/build-notes.itexi
PO: modifying po-replace before integrating it to the release process
[lilypond.git] / Documentation / contributor / build-notes.itexi
index a6c8772be9b2af5196d871f19b1ddb41b6cb3dde..7891063c202e5eaa50e6ca00bd577f6f32becfc7 100644 (file)
@@ -15,6 +15,7 @@ chapter.}
 * Doc build::
 * Website build::
 * Building an Ubuntu distro::
+* Building GUB::
 @end menu
 
 
@@ -117,9 +118,11 @@ include $(configure-srcdir)/GNUmakefile.in
 
 The variable @code{depth} is used throughout the make system to
 track how far down the directory structure the make is.  The first
-include sets lots of variables but doesn't "do" anything.  The
-second runs the file @file{GNUmakefile.in} from the top level
-source directory.
+include sets lots of variables but doesn't "do" anything.  Default
+values for these variables are automatically detected at the
+./configure step, which creates the file @file{config.make}.
+The second include runs the file @file{GNUmakefile.in} from
+the top level source directory.
 
 This sets another load of variables, and then includes (i.e.
 immediately runs) @file{stepmake.make} from the @file{make}
@@ -957,6 +960,7 @@ described to some extent at
 
 The file @file{lily-bib.bst} also has fairly extensive commenting.
 
+
 @node Website build
 @section Website build
 
@@ -990,7 +994,7 @@ and @code{top-src-dir} and then processing the file
 @code{website.make} starts with the following:
 
 @example
-ifeq (@$(WEBSITE_ONLY_BUILD),1)
+ifeq ($(WEBSITE_ONLY_BUILD),1)
 @end example
 
 which checks to see whether the variable @code{WEBSITE_ONLY_BUILD}
@@ -1001,17 +1005,17 @@ number of other variables are set, in order to establish locations
 of various files.  An example is:
 
 @example
-CREATE_VERSION=python @$(script-dir)/create-version-itexi.py
+CREATE_VERSION=python $(script-dir)/create-version-itexi.py
 @end example
 
 The rule for website is:
 
 @smallexample
 website: website-texinfo website-css website-pictures website-examples web-post
-        cp @$(SERVER_FILES)/favicon.ico @$(OUT)/website
-        cp @$(SERVER_FILES)/robots.txt @$(OUT)/website
-        cp @$(top-htaccess) @$(OUT)/.htaccess
-        cp @$(dir-htaccess) @$(OUT)/website/.htaccess
+        cp $(SERVER_FILES)/favicon.ico $(OUT)/website
+        cp $(SERVER_FILES)/robots.txt $(OUT)/website
+        cp $(top-htaccess) $(OUT)/.htaccess
+        cp $(dir-htaccess) $(OUT)/website/.htaccess
 @end smallexample
 
 so we see that this starts by running the rules for 5 other
@@ -1020,26 +1024,26 @@ later - first @code{website-texinfo}.  That rule is:
 
 @example
 website-texinfo: website-version website-xrefs website-bibs
-        for l in '' @$(WEB_LANGS); do \
-                if test -n "@$@$l"; then \
-                        langopt=--lang="@$@$l"; \
-                        langsuf=.@$@$l; \
+        for l in '' $(WEB_LANGS); do \
+                if test -n "$$l"; then \
+                        langopt=--lang="$$l"; \
+                        langsuf=.$$l; \
                 fi; \
-                @$(TEXI2HTML) --prefix=index \
+                $(TEXI2HTML) --prefix=index \
                         --split=section \
-                        --I=@$(top-src-dir)/Documentation/"@$@$l" \
-                        --I=@$(top-src-dir)/Documentation \
-                        --I=@$(OUT) \
-                        @$@$langopt \
-                        --init-file=@$(texi2html-init-file) \
+                        --I=$(top-src-dir)/Documentation/"$$l" \
+                        --I=$(top-src-dir)/Documentation \
+                        --I=$(OUT) \
+                        $$langopt \
+                        --init-file=$(texi2html-init-file) \
                         -D web_version \
-                        --output=@$(OUT)/"@$@$l" \
-                        @$(top-src-dir)/Documentation/"@$@$l"/web.texi ; \
-                ls @$(OUT)/@$@$l/*.html | xargs grep -L \
+                        --output=$(OUT)/"$$l" \
+                        $(top-src-dir)/Documentation/"$$l"/web.texi ; \
+                ls $(OUT)/$$l/*.html | xargs grep -L \
                         'UNTRANSLATED NODE: IGNORE ME' | \
-                        sed 's!@$(OUT)/'@$@$l'/!!g' | xargs \
-                        @$(MASS_LINK) --prepend-suffix="@$@$langsuf" \
-                        hard @$(OUT)/@$@$l/ @$(OUT)/website/ ; \
+                        sed 's!$(OUT)/'$$l'/!!g' | xargs \
+                        $(MASS_LINK) --prepend-suffix="$$langsuf" \
+                        hard $(OUT)/$$l/ $(OUT)/website/ ; \
         done
 @end example
 
@@ -1048,9 +1052,9 @@ which therefore depends on @code{website-version},
 
 @example
 website-version:
-        mkdir -p @$(OUT)
-        @$(CREATE_VERSION) @$(top-src-dir) > @$(OUT)/version.itexi
-        @$(CREATE_WEBLINKS) @$(top-src-dir) > @$(OUT)/weblinks.itexi
+        mkdir -p $(OUT)
+        $(CREATE_VERSION) $(top-src-dir) > $(OUT)/version.itexi
+        $(CREATE_WEBLINKS) $(top-src-dir) > $(OUT)/weblinks.itexi
 @end example
 
 which translates as:
@@ -1103,7 +1107,7 @@ the order of 1000) similar to:
 
 @example
 @@macro manualStableGlossaryPdf
-@@uref{../doc/v2.14/Documentation/music-glossary.pdf,Music glossary.pdf}
+@@uref@{../doc/v2.14/Documentation/music-glossary.pdf,Music glossary.pdf@}
 @@end macro.
 @end example
 
@@ -1115,7 +1119,7 @@ Next:
 
 @example
 website-xrefs: website-version
-        for l in '' @$(WEB_LANGS); do \
+        for l in '' $(WEB_LANGS); do \
 @end example
 
 is the start of the rule, truncated for brevity.  This loops
@@ -1125,12 +1129,12 @@ variables which I don't fully understand, to run this command:
 @smallexample
 python /home/phil/lilypond-git/scripts/build/extract_texi_filenames.py \
         -I /home/phil/lilypond-git/Documentation \
-        -I /home/phil/lilypond-git/Documentation/"@$l" \
+        -I /home/phil/lilypond-git/Documentation/"$l" \
         -I out-website -o out-website --split=node \
         --known-missing-files= \
                  /home/phil/lilypond-git/scripts/build/website-known-missing-files.txt \
         -q \
-        /home/phil/lilypond-git/Documentation/"@$l"/web.texi ;\
+        /home/phil/lilypond-git/Documentation/"$l"/web.texi ;\
 @end smallexample
 
 There's a good description of what
@@ -1156,7 +1160,7 @@ these are.
 It then does this:
 
 @example
-for m in @$(MANUALS); do \
+for m in $(MANUALS); do \
 @end example
 
 to run @code{e-t-f.py} against all of the manuals, in each
@@ -1164,12 +1168,12 @@ language. Next:
 
 @example
 website-bibs: website-version
-        BSTINPUTS=@$(top-src-dir)/Documentation/web \
-                @$(WEB_BIBS) -s web \
-                -s @$(top-src-dir)/Documentation/lily-bib \
-                -o @$(OUT)/others-did.itexi \
-                @$(quiet-flag) \
-                @$(top-src-dir)/Documentation/web/others-did.bib
+        BSTINPUTS=$(top-src-dir)/Documentation/web \
+                $(WEB_BIBS) -s web \
+                -s $(top-src-dir)/Documentation/lily-bib \
+                -o $(OUT)/others-did.itexi \
+                $(quiet-flag) \
+                $(top-src-dir)/Documentation/web/others-did.bib
 @end example
 
 This is half the command.  It runs @code{bib2texi.py} on 2
@@ -1180,7 +1184,7 @@ This converts bibliography files into texi files with
 Next the commands in the @code{website-texinfo} rule are run:
 
 @example
-for l in '' @$(WEB_LANGS); do \
+for l in '' $(WEB_LANGS); do \
 @end example
 
 run @code{texi2html}.  This is the program that outputs the
@@ -1195,18 +1199,18 @@ It also outputs warning messages like:
 
 @example
 website-css:
-        cp @$(top-src-dir)/Documentation/css/*.css @$(OUT)/website
+        cp $(top-src-dir)/Documentation/css/*.css $(OUT)/website
 @end example
 
 Copies 3 css files to out-website/website.  Then:
 
 @example
 website-pictures:
-        mkdir -p @$(OUT)/website/pictures
-        if [ -d @$(PICTURES) ]; \
+        mkdir -p $(OUT)/website/pictures
+        if [ -d $(PICTURES) ]; \
         then \
-                cp @$(PICTURES)/* @$(OUT)/website/pictures ; \
-                ln -sf website/pictures @$(OUT)/pictures  ;\
+                cp $(PICTURES)/* $(OUT)/website/pictures ; \
+                ln -sf website/pictures $(OUT)/pictures  ;\
         fi
 @end example
 
@@ -1229,10 +1233,10 @@ website (e.g. the logo) do not exist.  Next:
 
 @example
 website-examples:
-        mkdir -p @$(OUT)/website/ly-examples
-        if [ -d @$(EXAMPLES) ]; \
+        mkdir -p $(OUT)/website/ly-examples
+        if [ -d $(EXAMPLES) ]; \
         then \
-                cp @$(EXAMPLES)/* @$(OUT)/website/ly-examples ; \
+                cp $(EXAMPLES)/* $(OUT)/website/ly-examples ; \
         fi
 @end example
 
@@ -1255,7 +1259,7 @@ initially.  Then:
 
 @example
 web-post:
-        @$(WEB_POST) @$(OUT)/website
+        $(WEB_POST) $(OUT)/website
 @end example
 
 which is:
@@ -1275,10 +1279,10 @@ the end of our story.  The final 4 lines of the recipe for website
 are:
 
 @example
-cp @$(SERVER_FILES)/favicon.ico @$(OUT)/website
-cp @$(SERVER_FILES)/robots.txt @$(OUT)/website
-cp @$(top-htaccess) @$(OUT)/.htaccess
-cp @$(dir-htaccess) @$(OUT)/website/.htaccess
+cp $(SERVER_FILES)/favicon.ico $(OUT)/website
+cp $(SERVER_FILES)/robots.txt $(OUT)/website
+cp $(top-htaccess) $(OUT)/.htaccess
+cp $(dir-htaccess) $(OUT)/website/.htaccess
 @end example
 
 The first translates as:
@@ -1498,3 +1502,68 @@ Test iso by installing in VM and repeating steps above for
 getting source files and building lp and docs.
 
 @end enumerate
+
+@node Building GUB
+@section Building GUB
+
+GUB - the Grand Unified Builder - is used to build the release
+versions of LilyPond.  For background information, see
+@ref{Grand Unified Builder (GUB)}.  The simplest way to set up a
+GUB build environment is to use a virtual machine with LilyDev
+(@ref{LilyDev}).  Follow the instructions on that page to set this
+up.  Make sure that your virtual machine has enough disk space -
+a GUB installation takes over 30 GBytes of disk space, and if you
+allocate too little, it will fail during the setting up stage and
+you will have to start again.  64 GBytes should be sufficient.
+
+While GUB is being built, any interruptions are likely to make it
+almost impossible to restart.  If at all possible, leave the build
+to continue uniterrupted.
+
+Download GUB and start the set up:
+
+@example
+git clone git://github.com/gperciva/gub/gub.git
+cd gub
+make bootstrap
+@end example
+
+This downloads and installs a number of packages.  You may find
+some fail during download and you will need to download them
+manually.  For example, the perl archive.  If this happens,
+download it from
+@uref{http://www.cpan.org/src/5.0/perl-5.10.0.tar.gz}, saving the
+archive to @file{gub/downloads/perl/}.  Continue the set up with:
+
+@example
+make bootstrap
+@end example
+
+Once this has completed successfully, you can build the LilyPond
+release package.  However, this uses an archived version of the
+regression tests, so it is better to download this first.
+Download the test output from lilypond.org:
+
+@smallexample
+@uref{http://lilypond.org/download/binaries/test-output/lilypond-2.15.33-1.test-output.tar.bz2}
+@end smallexample
+
+Copy the tarball into @file{gub/regtests/}, and tell the build
+system that you have done this:
+
+@example
+touch regtests/ignore
+@end example
+
+Now start the GUB build:
+
+@example
+make lilypond
+@end example
+
+That's it.  This will build LilyPond from current master.  To build
+the current unstable release, run:
+
+@example
+make LILYPOND_BRANCH=release/unstable lilypond
+@end example