]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/contributor/quick-start.itexi
Merge branch 'translation' into staging
[lilypond.git] / Documentation / contributor / quick-start.itexi
1 @c -*- coding: utf-8; mode: texinfo; -*-
2
3 @node Quick start
4 @chapter Quick start
5
6 Want to submit a patch for LilyPond?  Great!  Never created a patch
7 before? Never compiled software before? No problem!  This chapter is
8 for you and will help you do this as quickly and easily as possible.
9
10 @menu
11 * LilyDev::
12 * lily-git::
13 * Compiling with LilyDev::
14 * Now start work!::
15 @end menu
16
17 @node LilyDev
18 @section LilyDev
19
20 There is a disk image of a @q{remix} of Ubuntu GNU/Linux available for
21 download which includes all the necessary software and tools to compile
22 both LilyPond and the documentation.  Called the
23 @qq{Ubuntu LilyPond Developer Remix}, but known simply as @qq{LilyDev}
24 for short.  Although it is not possible to compile LilyPond on Windows
25 and extremely difficult on MacOS, LilyDev can be installed and run
26 inside a @q{virtual machine} on any of these operating systems without
27 disturbing your main operating system.  The LilyDev disk image can also
28 be burnt to a DVD and installed like any other Ubuntu GNU/Linux
29 distribution.
30
31 Most virtualization software can be used but we recommend VirtualBox as
32 it is available for all major operating systems and is easy to install
33 & configure.
34
35 If you are not familiar with GNU/Linux, it may be beneficial to read a
36 couple of @qq{introduction to Ubuntu} web pages.
37
38 Some contributors have recommended a free PDF:
39
40 @example
41 @uref{http://www.ubuntupocketguide.com/}
42 @end example
43
44 For those interested, the LilyDev remix is currently based on a 32bit
45 version of 10.04 LTS Ubuntu (Lucid Lynx).
46
47 @warning{Apart from installing and configuring LilyDev in VirtualBox,
48 the rest of the chapter on assumes that you are comfortable using the
49 command-line.  While this chapter is intended for users who may have
50 never created a patch or compiled software before, experienced
51 developers (who prefer to use their own development environment) may
52 still find it instructive to skim over this section.}
53
54 @menu
55 * Where to get LilyDev::
56 * Installing LilyDev in VirtualBox::
57 * Configuring LilyDev in VirtualBox::
58 @end menu
59
60
61 @node Where to get LilyDev
62 @unnumberedsubsec Where to get LilyDev
63
64 Download the Ubuntu LilyPond Developer Remix CD image file
65 (approximately 1 GB) from here:
66
67 @smallexample
68 @uref{http://www.philholmes.net/lilypond/LilyDev/ubuntu-LilyDev-remix-2.6.iso}
69 @end smallexample
70
71 Some advanced users might want this file too:
72 @smallexample
73 @uref{http://www.philholmes.net/lilypond/LilyDev/ubuntu-LilyDev-remix-2.6.iso.md5}
74 @end smallexample
75 (If you don't recognize what this file is, then you don't need it.)
76
77
78 @node Installing LilyDev in VirtualBox
79 @unnumberedsubsec Installing LilyDev in VirtualBox
80
81 This section discusses how to install and use LilyDev with VirtualBox.
82
83 @warning{If you already know how to install a virtual machine using a
84 disc image inside VirtualBox (or your own virtualization software) then
85 you can skip this section and go straight to @ref{lily-git}.}
86
87 @enumerate
88 @item
89 Download Virtualbox from here:
90
91 @example
92 @uref{http://@/www.virtualbox.org/@/wiki/@/Downloads}
93 @end example
94
95 @warning{In virtualization terminology, the operating system where
96 Virtualbox is installed, is the known as the @strong{host}.  LilyDev
97 will be installed @q{inside} Virtualbox as a @strong{guest}.}
98
99 @item
100 Start the VirtualBox software and click @q{New} to create a new
101 @qq{virtual machine}.
102
103 The @q{New Virtual Machine Wizard} will walk you through setting up your
104 guest virtual machine.  Choose an appropriate name for your LilyDev
105 installation and select the @q{Linux} operating system.  When selecting
106 the @q{version} use @q{Ubuntu} if available (but not the @q{64 bit}
107 option).  If you do not have that specific option choose @q{Linux 2.6}
108 (again do not choose any option that has 64 bit next to it).
109
110 @item
111 Select the amount of RAM you will allow the LilyDev guest to use from
112 your host operating system when it is running.  If possible, use at
113 least 700 MB of RAM; the more RAM you can spare from your host the
114 better, although LilyDev will currently use no more than 4 GB (4096 MB)
115 even if you are able to assign more.
116
117 @item
118 For your @q{Virtual Hard Disk}, leave the @q{Create new hard disk}
119 option checked, use the default @q{VDI} and
120 @qq{Dynamically allocated} options for the virtual hard drive.  A
121 complete compile of everything (code, docs, regression tests) can reach
122 10 GB so size your virtual disk and its location accordingly.
123
124 @item
125 Verify the summary details and click @q{Create}, when you are satisfied.
126 Your new guest will be displayed in the Virtualbox window.  Click the
127 @q{Start} button and the @q{First Run Wizard} will prompt you for
128 the installation media.  Click the browse icon and locate the LilyDev
129 disk image and click through the wizard to start the installation
130 process.
131
132 @item
133 When the LilyDev disk image boots, it shows a prompt:
134
135 @example
136 ISOLINUX @code{boot:}
137 @end example
138
139 Hit the Return key (or wait 30 seconds) and then when the installer
140 screen loads, using the arrow keys select
141 @q{Install - start the installer directly} to begin the install process
142 of LilyDev on your virtual hard disk.  The Ubuntu software will walk you
143 through the complete installation process.
144
145 @item
146 At the @qq{Prepare disk space} stage, do not be afraid to select
147 @qq{Erase and use the entire disk}, since this refers to your
148 @strong{@emph{virtual disk}}, not your machine's actual hard
149 disk.
150
151 @item
152 Click through the rest of the wizard, filling in any appropriate details
153 when asked and wait for the install to complete.
154
155 @warning{This will take anywhere from 10 minutes to up to an hour
156 depending on the speed of your computer and if Ubuntu detects you are
157 connected to the internet and needs to download any additional
158 security updates or patches, although these updates are not required to
159 compile LilyPond and it is possible to skip the additional downloads to
160 speed up the install process.}
161
162 @item
163 When prompted by the Ubuntu installer wizard, restart the virtual
164 machine and then when prompted to @q{eject the CD} by virtual box, just
165 click inside the virtual machine window and hit the return key to
166 reboot the virtual machine.  It will not try to restart the installer
167 but start the virtual machine proper. LilyDev is now installed and
168 running!
169
170 @end enumerate
171
172 @knownissues
173 Not all hardware is supported in all virtualization tools.  In
174 particular, some contributors have reported problems with USB network
175 adapters.  If you have problems with network connection (for example
176 Internet connection in the host system is lost when you launch virtual
177 system), try installing and running LilyDev with your computer's
178 built-in network adapter used to connect to the network.  Refer to the
179 help documentation that comes with your virtualization software.
180
181
182 @node Configuring LilyDev in VirtualBox
183 @unnumberedsubsec Configuring LilyDev in VirtualBox
184
185 VirtualBox has extra @q{guest additions} which although are not
186 necessary to use LilyDev or compile Lilypond, do provide some additional
187 features to your Virtual Machine to make it easier to work with.  Such
188 as being able to dynamically resize the LilyDev window, allow seamless
189 interaction with your mouse pointer on both the host and guest and let
190 you copy/paste between your host and guest if needed.
191
192 @enumerate
193
194 @item
195 Select the @q{Devices} menu from the virtual machine window and choose
196 @q{Install Guest Additions...}.  This will automount a CD which will
197 prompt you to autorun it.  Click OK and follow the instructions.  It is
198 recommended to reboot the guest when the installation is complete.
199
200 Other virtualization software will also have their own @q{guest}
201 additions, follow the normal procedures for your virtualization software
202 with Ubuntu as the client.
203
204 @item
205 Restart Ubuntu to complete the installation of the guest additions.
206
207 @advanced{If you do any kernel upgrades, you may need to reinstall
208 the additional software.  Just follow the step above again and reboot
209 when the reinstallation is complete.}
210
211 @end enumerate
212
213 @noindent
214 Other items that may be helpful:
215
216 @itemize
217
218 @item
219 In the settings for the virtual machine, set the network to
220 Bridged mode to allow you to access shared folders when using Windows
221 hosts.
222
223 @item
224 Set up any additional features, such as @q{Shared Folders} between
225 your main operating system and Ubuntu.  This is distinct from the
226 networked share folders in Windows.  Consult the external
227 documentation for this.
228
229 Some longtime contributors have reported that @q{shared folders}
230 are rarely useful and not worth the fuss, particularly since files
231 can be shared over a network instead.
232
233 @item
234 Pasting into a terminal is done with @code{Ctrl+Shift+v}.
235
236 @item
237 The @qq{Places} top-menu has shortcuts to a graphical
238 @qq{navigator} like Windows Explorer or the MacOS X Finder.
239
240 @item
241 Right-click allows you to edit a file with gedit.  We recommend
242 using gedit.
243
244 @item
245 One particular change from Windows and MacOS X is that most
246 software should be installed with your @qq{package manager}; this
247 vastly simplifies the process of installing and configuring
248 software.  Go to @clicksequence{Applications @click{} Ubuntu
249 Software Center}.
250
251 @end itemize
252
253
254 @node lily-git
255 @section lily-git
256
257 The @q{LilyPond Contributor's Git Interface} (otherwise known as
258 @command{lily-git.tcl}) is a simple-to-use GUI to help you download and
259 update the LilyPond source code as well as an aid to making software
260 patches.
261
262 @menu
263 * Where to get lily-git::
264 * Configuring lily-git and downloading the source code::
265 * How to use lily-git::
266 @end menu
267
268 @node Where to get lily-git
269 @unnumberedsubsec Where to get lily-git
270
271 Depending on your development environment, lily-git may already be
272 installed on your computer.
273
274 @itemize
275 @item
276 If you are using LilyDev (see @ref{LilyDev}) then lily-git is already
277 installed and ready to run.
278
279 @item
280 For those not using LilyDev then lily-git can be obtained by downloading
281 the software directly. See @ref{Manually installing lily-git.tcl}.
282
283 @item
284 Finally, lily-git is always part of the LilyPond source code and is
285 located in @file{$LILYPOND_GIT/scripts/auxillar/lily-git.tcl}.
286
287 @end itemize
288
289
290 @node Configuring lily-git and downloading the source code
291 @unnumberedsubsec Configuring lily-git and downloading the source code
292
293 @warning{The rest of this manual assumes that you are using the
294 command-line within a terminal.}
295
296 @enumerate
297 @item
298 Type (or copy&paste) into the Terminal:
299
300 @example
301 lily-git.tcl
302 @end example
303
304 @noindent
305 You will be prompted to enter your name and your email address.  This
306 information is used only to identify and label any patches you create.
307 This information can be edited if required later.  See
308 @ref{Configuring Git}.  Click on the @emph{Submit} button to update
309 lily-git with this information.
310
311 @item
312 Click on the @qq{Get source} button.
313
314 A directory called @file{$LILYPOND_GIT} is now created within
315 your home directory and the complete source code will start to be
316 downloaded into it.
317
318 @warning{Be patient! The complete source is around 150@tie{}Mb.}
319
320 @noindent
321 When the source code has been downloaded, the @qq{Command output} window
322 in lily-git will update and display @qq{Done} on the very last line.
323 The button label will change to say @qq{Update source}.
324
325 @warning{Some contributors have reported that occasionally nothing
326 happens at this step at all.  If this occurs, then try again in a few
327 minutes -- it could be an intermittant network problem.  If the
328 problem persists, please ask for help.}
329
330 @item
331 Close the lily-git GUI and navigate to the @file{$LILYPOND_GIT}
332 directory to view and edit the source files.
333
334 @end enumerate
335
336 @noindent
337 If this is the first time you have compiled LilyPond then please go
338 to @ref{Compiling with LilyDev} before reading on.
339
340
341 @node How to use lily-git
342 @unnumberedsubsec How to use lily-git
343
344 @warning{Throughout the rest of this manual, most command-line
345 input should be entered from @file{~/lilypond-git/}.  This is
346 known as the @emph{top source directory} and is often referred to as
347 @var{$LILYPOND_GIT}}.
348
349 @warning{Only work on one set of changes at once.  Do not start
350 work on any new changes until your first set has been accepted.}
351
352 @subsubheading 1. Update source
353
354 At the beginning of each session of lilypond work, you should
355 click the @qq{Update source} button to get the latest changes to
356 the source code.
357
358 @warning{In some rare and unfortunate circumstances, this will
359 result in a @emph{merge conflict}.  If this occurs, follow the
360 instructions for @qq{Abort changes}, below.  Your work will not be
361 lost.}
362
363
364 @subsubheading 2a. New local commit
365
366 A single commit typically represents one logical set of related
367 changes (such as a bug-fix), and may incorporate changes to
368 multiple files at the same time.
369
370 When you're finished making the changes for a commit, click the
371 @qq{New local commit} button.  This will open the @qq{Git Commit
372 Message} window.  The message header is required, and the message
373 body is optional.
374
375 After entering a commit message, click @qq{OK} to finalize the
376 commit.
377
378 @advanced{for more information regarding commits and commit
379 messages, see @ref{Commits and patches}.}
380
381
382 @subsubheading 2b. Amend previous commit
383
384 You can go back and make changes to the most recent commit with
385 the @qq{Amend previous commit} button.  This is useful if a
386 mistake is found after you have clicked the @qq{New local commit}
387 button.
388
389 To amend the most recent commit, re-edit the source files as
390 needed and then click the @qq{Amend previous commit} button.  The
391 earlier version of the commit is not saved, but is replaced by the
392 new one.
393
394 @warning{This does not update the patch @strong{files}; if you
395 have a patch file from an earlier version of the commit, you will
396 need to make another patch set when using this feature.  The old
397 patch file will not be saved, but will be replaced by the new one
398 after you click on @qq{Make patch set}.}
399
400
401 @subsubheading 3. Make patch set
402
403 Before making a patch set from any commits, you should click the
404 @qq{Update source} button to make sure the commits are based on
405 the most recent remote snapshot.
406
407 When you click the @qq{Make patch set} button,
408 @command{lily-git.tcl} will produce patch files for any new
409 commits, saving them to the current directory.  The command output
410 will display the name of the new patch files near the end of the
411 output:
412
413 @example
414 0001-CG-add-lily-git-instructions.patch
415 Done.
416 @end example
417
418 Send patch files to the appropriate place:
419
420 @itemize
421 @item
422 If you have a mentor, send it to them via email.
423
424 @item
425 New contributors should send the patch attached to an email to
426 @email{frogs@@lilynet.net}.  Please add @qq{[PATCH]} to the
427 subject line.
428
429 @item
430 Translators should send patches to
431 @email{translations@@lilynet.net}.
432
433 @item
434 More experienced contributors should upload the patch for
435 web-based review.  This requires additional software and use of
436 the command-line; see @ref{Uploading a patch for review}.
437
438 @end itemize
439
440
441 @subsubheading The @qq{Abort changes -- Reset to origin} button
442
443 @warning{Only use this if your local commit history gets
444 hopelessly confused!}
445
446 The button labeled @qq{Abort changes -- Reset to origin} will copy
447 all changed files to a subdirectory of @file{$LILYPOND_GIT} named
448 @file{aborted_edits/}, and will reset the repository to the
449 current state of the remote repository (at @code{git.sv.gnu.org}).
450
451
452
453 @node Compiling with LilyDev
454 @section Compiling with LilyDev
455
456 LilyDev is our @q{remix} of Ubuntu which contains all the
457 necessary dependencies to do lilypond development; for more
458 information, see @rcontrib{LilyDev}.
459
460 @subsubheading Preparing the build
461
462 To prepare the build directory, enter (or copy&paste) the below
463 text.  This should take less than a minute.
464
465 @c we heavily recommend the out-of-tree build; do not change this!
466
467 @example
468 cd $LILYPOND_GIT
469 sh autogen.sh --noconfigure
470 mkdir -p build/
471 cd build/
472 ../configure
473 @end example
474
475 @subsubheading Building @code{lilypond}
476
477 Compiling lilypond will likely take between 5 and 60 minutes,
478 depending on your computer's speed and available RAM.  We
479 recommend that you minimize the terminal window while it is
480 building; this can have a non-negligible effect on compilation
481 speed.
482
483 @example
484 cd $LILYPOND_GIT/build/
485 make
486 @end example
487
488 You may run the compiled @code{lilypond} with:
489
490 @example
491 cd $LILYPOND_GIT/build/
492 out/bin/lilypond my-file.ly
493 @end example
494
495 @subsubheading Building the documentation
496
497 Compiling the documentation is a much more involved process, and
498 will likely take 2 to 10 hours.
499
500 @example
501 cd $LILYPOND_GIT/build/
502 make
503 make doc
504 @end example
505
506 The documentation is put in @file{out-www/offline-root/}.  You may
507 view the html files by entering the below text; we recommend that
508 you bookmark the resulting page:
509
510 @example
511 firefox $LILYPOND_GIT/build/out-www/offline-root/index.html
512 @end example
513
514 @subsubheading Installing
515
516 Don't.  There is no reason to install lilypond within LilyDev.
517 All development work can (and should) stay within the
518 @file{$LILYPOND_GIT} directory, and any personal composition
519 or typesetting work should be done with an official GUB release.
520
521
522 @subsubheading Problems and other options
523
524 To select different build options, or isolate certain parts of the
525 build, or to use multiple CPUs while building, read
526 @ref{Compiling}.
527
528 In particular, contributors working on the documentation should be
529 aware of some bugs in the build system, and should read the
530 workarounds in @ref{Generating documentation}.
531
532
533 @node Now start work!
534 @section Now start work!
535
536 LilyDev users may now skip to the chapter which is aimed at
537 their intended contributions:
538
539 @itemize
540 @item @ref{Documentation work}
541 @item @ref{Translating the documentation}
542 @item @ref{Website work}
543 @item @ref{Regression tests}
544 @item @ref{Programming work}
545 @end itemize
546
547 These chapters are mainly intended for people not using LilyDev,
548 but they contain extra information about the
549 @qq{behind-the-scenes} activities.  We recommend that you read
550 these at your leisure, a few weeks after beginning work with
551 LilyDev.
552
553 @itemize
554 @item @ref{Working with source code}
555 @item @ref{Compiling}
556 @end itemize
557
558
559