]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/contributor/build-notes.itexi
Avoid unnecessary warnings in regtests
[lilypond.git] / Documentation / contributor / build-notes.itexi
index 26441ef7032eb55b49f5f7f1294c5e6d2f4ef8cd..dcfb147ec64fba7004360f0d1a131ebc3516c9ed 100644 (file)
@@ -479,15 +479,42 @@ The file @file{lily-bib.bst} also has fairly extensive commenting.
 Start here: @file{make/website.make}
 
 The overall build system begins with @ref{How stepmake works}.
+Summary: when you type @code{make website} this ends up running
+@file{GNUmakefile.in} in the @file{git} directory.  Right at the
+bottom, this has the lines:
 
-However, we do believe that note that *none* of the variables that
+@example
+# we want this separate for security; see CG 4.2.  -gp
+website:
+       $(MAKE) config_make=$(config_make) \
+               top-src-dir=$(top-src-dir) \
+               -f $(top-src-dir)/make/website.make \
+               website
+@end example
+
+On my system this expands to:
+
+@example
+make --no-builtin-rules config_make=./config.make \
+               top-src-dir=/home/phil/lilypond-git \
+               -f /home/phil/lilypond-git/make/website.make \
+               website
+@end example
+
+We see that the @code{$(MAKE)} expands to
+@code{make --no-builtin-rules} which is how @code{MAKE} is
+defined higher up the makefile.  The -f switch defines the
+makefile to be used - in this case
+@file{git/make/website.make}.  That's where all the action
+happens.
+
+We believe that note that *none* of the variables that
 are loaded (from depth to version numbers to whatever) are used in
 @file{website.make}.  Instead, @file{website.make} sets up its own
 variables at the top of the file.  If you're wondering if there's
 some smart reason for this, then the answer is "no".  It's because
-I didn't know/trust the original variables when I was writing that
-file.
-
+I (GP) didn't know/trust the original variables when I was writing
+that file.
 
 Website build includes @ref{Building a bibliography}.
 
@@ -500,6 +527,7 @@ build system.  Please run:
 make -n website &> my-file.txt
 @end example
 
+to see the full output from the make.
 
 @subsubheading website.make variables
 
@@ -522,9 +550,15 @@ Parts of @file{website.make}:
 
 @itemize
 
+@item
+@code{website:}
+this is the "master" rule.  It calls the other rules in order,
+then copies some extra files around - see below for further
+of the process it produces.
+
 @item
 @code{website-version}:
-this calls python scripts to define teinxfo macros.
+this calls the python scripts below:
 
 @itemize
 @item
@@ -568,7 +602,9 @@ of @@node's [sic teenager pluralization rule] from the file.
 
 @item
 @code{website-bib:}
-generates the bibliography texinfo files from the .bib files.
+generates the bibliography texinfo files from the .bib files - in
+the case of the website build these are @file{others-did.bib} and
+@file{we-wrote.bib}.
 
 @item
 @code{website-texinfo:}
@@ -576,6 +612,20 @@ this is the main part; it calles texi2html to generate the actual
 html.  It also has a ton of options to texi2html to pass info to
 our custom init file.
 
+The file actually built is called @file{web.texi}, and is either
+in the @file{Documentation} directory, or a sub-directory specific
+to the language.
+
+The options file is @file{/Documentation/lilypond-texi2html.init}.
+This contains *lots* of option and configuration stuff, and also
+includes the line:
+
+@example
+print STDERR "Initializing settings for web site: [$Texi2HTML::THISDOC@{current_lang@}]\n";
+@end example
+
+This is where one of the console messages is generated.
+
 We have somewhere between 2-4 different ways "to pass info to our
 custom init file".  This is highly Not Good (tm), but that's how
 things work at the moment.
@@ -617,67 +667,90 @@ bottom of html pages, and adds the google analytics javascript.
 It also has hard-coded lilypond version numbers, which is Bad
 (tm).
 
-@item
-@code{website:}
-this is the "master" rule.  It calls the bits and pieces in order,
-then copies some extra files around.
-
 @end itemize
 
+Here's a summary of what gets called, in what order, when we run
+@code{make website}
+
+@example
+website:
+  website-texinfo:
+    website-version:
+      creates version.itexi and weblinks.itexi
+    website-xrefs:
+      runs extract_texi_filenames.py
+    website-bibs:
+      creates bibliography files, described above
+  website-css:
+    copies css files
+  website-pictures:
+    copies pictures
+  website-examples:
+    copies examples
+  web-post:
+    runs website_post.py
+  Then some file copying
+@end example
 
 @node Building an Ubuntu distro
 @section Building an Ubuntu distro
 
+
+Here's the short instruction on how to create lilybuntu iso image
+(Jonathan Kulp did this on a spare drive,
+but he supposes it can be done in a VM too):
+
 @enumerate
+
 @item
-Install ubuntu, reboot
+Install ubuntu, reboot.
 @item
-Run all updates, reboot if asked
+Run all updates, reboot if asked.
 @item
-Enable src repos, refresh package lists
+Enable src repos, refresh package lists.
 @item
 Install LilyPond build deps:
 @example
-  sudo apt-get build-dep lilypond
+sudo apt-get build-dep lilypond
 @end example
 @item
 Install git and autoconf:
 @example
-  sudo apt-get install git-core gitk autoconf
+sudo apt-get install git-core gitk autoconf
 @end example
 
 @item
-TEST TO SEE WHETHER EVERYTHING WORKS NOW:
+Test to see whether everything works fine now:
 @enumerate
 @item
-Use lily-git.tcl to grab source files
+use @command{lily-git.tcl} to grab source files
 @item
-Go to source dir and do "./autogen.sh" ; make ; make doc
+go to source dir and do
+@example
+"./autogen.sh" ; make ; make doc
+@end example
 @item
-If all compiles, move on to iso creation...
-
+if all compiles, move on to iso creation...
 @end enumerate
 
 @item
 Download & install "remastersys":
-@example
-  http://sourceforge.net/projects/remastersys/
-@end example
-@item
-Copy lily-git.tcl script file into /etc/skel/
+@uref{http://sourceforge.net/projects/remastersys/, http://sourceforge.net/projects/remastersys/}
 @item
-Modify /etc/remastersys.conf as desired (change .iso name, default
-live session username, etc)
+Copy @command{lily-git.tcl} script file into @file{/etc/skel/}.
 @item
-Remove non-essential desktop software as desired
+Modify @file{/etc/remastersys.conf} as desired (change @code{.iso} name,
+default live session username, etc).
 @item
-Create iso:  sudo remastersys dist
+Remove non-essential desktop software as desired.
 @item
-New iso is in /home/remastersys/remastersys/
+Create iso:
+@example
+sudo remastersys dist
+@end example
+New iso is in @file{/home/remastersys/remastersys/}.
 @item
 Test iso by installing in VM and repeating steps above for
-getting source files and building lp and docs
-@end enumerate
-
-
+getting source files and building lp and docs.
 
+@end enumerate