]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/README-W32.yo
af11cd59385e3a4955828befc48541805be2a72b
[lilypond.git] / Documentation / README-W32.yo
1 article(LilyPond on W32)
2         (Jan Nieuwenhuizen and Jeffrey Reed)
3         () 
4
5 No, there's no reason to be concered, Lily should work in
6 Windows-NT(/95/98?) too.  The setup may not be easy or smooth.  This
7 document will help you getting started.
8
9 sect(DISCLAIMER)
10
11 If you have the Cygnus gnu-windows32 port of the GNU utils, LilyPond
12 will work in Windows-NT (/95/98?).
13
14 We still recommend you use Unix.  In particular, use GNU/Linux: We've
15 been there, and we've seen it happen several times.  It is bf(much)
16 easier and quicker to install RedHat Linux and LilyPond than to
17 obtain, compile and install all the necessary tools to compile and run
18 LilyPond on Windows.
19
20 ``Ok, thanks for the suggestions.  I can't run Linux or I don't want
21 to run Unix.  What can I expect?''
22
23 itemize(
24 it()LilyPond development is moving quite fast, and all developers use Unix.  
25     Newly added features may require some attention to get them to work.
26 it()LilyPond depends on a number of other packages that usually are
27     available on Unix boxes, but are not installed by default on Windows.
28 )
29
30 subsect(INSTALL)
31
32 Like Yodl, LilyPond will now install/extract in a unix-like tree:
33 verb(
34     usr/[local/]bin/
35     usr/[local/]share/lilypond/*
36 )
37 etc.
38
39 Both Yodl and Lily run in a the unix-like Cygnus gnu-windows environment;
40 hopefully Cygnus will adopt the file(/usr/[local/]) tree too.
41
42 nl()
43 If you really don't want usr/ in your root directory, but rather scatter
44 your programs and packages all over your harddisk, do something like:    
45 verb(
46     md lilypond
47     cd lilypond
48     unzip ../lilypond-0.1.77.exe.zip
49 )
50 and add file(lilypond/usr/bin) to your file(PATH) and 
51 file(lilypond/usr/share/lilypond) to your file(LILYINCLUDE).
52
53
54 subsect(BUILDING LILYPOND)
55
56 If you've received a binary release of LilyPond (file(.exe.zip)),
57 you may skip the following sections.
58
59 subsect(GOOD NEWS)
60
61 It can be done!  Occasionally, the Cygnus b19.1 cross compiler and
62 utilities under GNU/Linux are used to make the binary file(.exe.zip)
63 releases (some makefile hacking was needed to build this stuff).  Jeffrey
64 Reed tries to keep-up with LilyPond development, and is doing quite
65 well.  His latest release is available on
66 lurl(http://home.austin.rr.com/jbr/jeff/lilypond/).
67
68 subsect(UNPACKING)
69
70 I have heard of such tools that think they're probably much smarter than the
71 packager and thus decide for themselves that they don't need to unpack certain
72 files (e.g., empty directories such as bin/out).
73
74 To unpack the lilypond sources, you should do something like: verb( 
75     tar zxf releases/lilypond-x.y.z.tar.gz
76 )
77
78 subsect(ABOUT UNIX)
79
80 If you're familiar with the GNU/Cygnus development package, you may skip
81 this.
82
83 Don't forget to set
84 verb(
85     /start/settings/control-panel/system/environment/system-variables:
86     GCC_EXEC_PREFIX=/Cygnus/b19/H-i386-cygwin32/lib/gcc-lib/
87     MAKE_MODE=UNIX
88 )
89 You want to run bash, while building Lily:
90 verb(
91     c:\bash
92     bash-2.01$ 
93 )
94 The install instructions mention something like:
95 verb(
96     configure
97     make
98     make install
99 )
100
101 Now for a small UNIX lesson:  The current working directory (cwd) is 
102 by default not in your PATH, like it is under DOS (for security reasons).
103 Check this by looking at the output of:
104 verb(
105     echo $PATH
106 )
107 The cwd looks like code('::') or code(':.').  If it's not there, you may 
108 add the cwd to your path:
109 verb(
110     PATH=$PATH:. 
111 )
112 or you must use './' when issuing a command in th cwd, try: 
113 verb( 
114     ./configure
115     make
116 )
117
118 sect(LILYPOND Windows-NT Support -- by Jeffrey Reed)
119
120 My point of reference comes from 15 odd years working with a variety
121 of tt(UNIX) platforms.  I am relatively new to Windows-NT and, even
122 though I am a card carrying tt(UNIX) bigot, I am excited about the
123 NT OS.  My goals for lilypond are to give back to the Free Software
124 Foundation a little of what they have given me over the years and to
125 contribute to the lilypond project by supporting a Windows-NT port.  I
126 hope that someday we can distribute and run lilypond on the NT OS in a
127 much more native fashion.
128
129 itemize(
130 it()link(Building lilypond on tt(Windows-NT))(build)
131 it()link(Maintaining lilypond on tt(Windows-NT))(maintain)
132 it()link(Running lilypond on tt(Windows-NT))(run)
133 )
134
135
136 subsect(Building lilypond on Windows-NT) label(build)
137 Currently as stated above lilypond is primarily a tt(UNIX) thing.
138 The Windows-NT port is based on the tt(UNIX) environment provided by
139 url(Cygnus)(http://www.cygnus.com). Therefore the first step is to
140 download and install the Cygnus development kit:
141
142 subsubsect(Cygnus Development Kit)
143 lurl(http://www.cygnus.com/misc/gnu-win32/)
144
145
146 Please follow the documentation Cygnus has on there web site for
147 downloading and installing.  The important part is that you down load
148 the entire development kit.  I believe it is file(full.exe).  The
149 installation will ask you where you want to install it.  I will refer
150 to Cygnus installation directory as file(/gnuwin32/cygwin-b20).  There
151 should be a file(README) file that contains installation instructions.
152 After the installation is complete you should have a em(Cygnus)
153 shortcut in your em(Program) section of your em(Start Menu).  This
154 shortcut is your door to the tt(UNIX) world and I will refer to the
155 resulting window as a file(bash) shell.
156
157 The shortcut points to file(/gnuwin32/cygwin-b20/cygnus.bat).  The
158 following is my file(cygnus.bat) file.
159
160 verb(
161 @ECHO OFF
162 rem default environment
163
164 rem GNU cygnus installation
165
166 SET CYGREL=B19.1
167 SET MAKE_MODE=unix
168 SET LOCAL_ROOT=d:\gnuwin32
169 SET LOCAL_FS=d:/gnuwin32
170 SET LOCAL_DIR=d:/gnuwin32/cygwin-b20
171 SET CYGROOT=%LOCAL_ROOT%\cygwin-b20
172 SET CYGFS=%LOCAL_FS%/cygwin-b20
173 SET TCL_LIBRARY=%CYGROOT%\share\tcl8.0\
174
175 rem
176 rem This was not in the original but is needed by lots of packages
177 rem
178 SET BISON_SIMPLE=%CYGFS%/share/bison.simple
179
180 rem
181 rem I place the cygnus stuff in front of /WINNT 
182 rem
183
184 SET PATH=d:\bin;%LOCAL_ROOT%\bin;%CYGROOT%\H-i586-cygwin32\bin;%PATH%
185 SET MANPATH=%LOCAL_ROOT%\man;%LOCAL_ROOT%\cygwin-b20\full-man\man
186 SET INFOPATH=%LOCAL_FS%/cygwin-b20/full-man/info;%LOCAL_FS%/cygwin-b20/info;%LOCAL_DIR%/info
187
188 rem General tools not included with Cygnus Development Kit
189
190 rem CVS
191
192 SET PATH=%PATH%;%LOCAL_ROOT%\cvs-1.9.28\bin
193 SET INFOPATH=%INFOPATH%;%LOCAL_FS%/cvs-1.9.28/info
194 SET MANPATH=%MANPATH%;%LOCAL_ROOT%\cvs-1.9.28\man
195
196 rem EMACS
197
198 SET PATH=%PATH%;%LOCAL_ROOT%\emacs-19.34\bin
199 SET INFOPATH=%INFOPATH%;%LOCAL_FS%/emacs-19.34/info
200
201 rem VIM
202
203 SET VIM=%LOCAL_ROOT%\vim-4.6\doc
204 SET PATH=%PATH%;%LOCAL_ROOT%\vim-4.6
205
206 rem TeX
207
208 SET PATH=%PATH%;%LOCAL_ROOT%\texmf\miktex\bin
209
210 rem a2ps
211
212 SET PATH=%PATH%;%LOCAL_ROOT%\a2ps-4.10\bin
213 SET INFOPATH=%INFOPATH%;%LOCAL_FS%/a2ps-4.10/info
214 SET MANPATH=%MANPATH%;%LOCAL_ROOT%\a2ps-4.10\man
215
216 rem python
217
218 SET PATH=%PATH%;\Program Files\Python
219
220 rem perl
221
222 SET PATH=%PATH%;\qub
223
224 rem yodl
225
226 SET PATH=%PATH%;%LOCAL_ROOT%\yodl-1.30.0.pre10\bin
227 set MANPATH=%MANPATH%;%LOCAL_ROOT%\yodl-1.30.0.pre10\man
228
229 uname -sv
230 bash -login
231 )
232
233 Please look over this carefully. Be careful with the forward and
234 backward slash notations.  The paths specified were done for good
235 reasons.  Maybe someday we will all be using code(UNC).  Note the
236 tt(BISON) entry and the tt(PATH) ordering in particular. Also note
237 that the generic file(cygnus.bat) you will be looking at does not
238 include alot of the packages listed.  We will be installing some of
239 these.
240
241
242 The installation also suggests that you create a directory file(/bin)
243 and copy file(/gnuwin32/cygwin-b20/H-i586-cygwin32/bin/sh.exe) to
244 file(/bin).  The file(sh.exe) shell provided by Cygnus is a descendant
245 of the file(ash) shell.  The file(sh.exe) shell has improved greatly
246 and is much faster than the file(bash) shell for script invocations.
247 So this is my recommendation for post installation steps.  From a
248 file(bash) shell:
249
250 itemize(
251 it()code(cd /)
252 it()code(mkdir bin)
253 it()code(cd /bin)
254 it()code(cp /gnuwin32/cygwin-b20/H-i586-cygwin32/bin/sh.exe sh.exe)
255 it()code(cp /gnuwin32/cygwin-b20/H-i586-cygwin32/bin/bash.exe bash.exe)
256 it()code(cd /)
257 it()code(mkdir /tmp)
258 it()code(chmod a+rwx tmp)
259 it()code(mkdir /etc)
260 it()code(cd /etc)
261 it()code(mkpasswd -l > passwd)
262 it()code(mkgroup -l > group)
263 )
264
265 subsubsubsect(Binary Mounts) label(binary)
266
267 There is also some discussion of how you want to em(mount) the Cygnus
268 development kit.  em(mount) is a tt(UNIX) term that refers to the
269 mechanism used to provide a disk resource to the filesystem.  Cygnus
270 supplies a mechinism for em(mounting) a filesystem as a tt(DOS) like
271 resource or a tt(UNIX) like resource.  Among other things this
272 attempts to deal with the text file carriage return line feed on
273 tt(DOS) versus the line feed on tt(UNIX) and the issue that tt(DOS)
274 has two file types, text and binary.  Where tt(UNIX) deals with a
275 single streams type.  My opinion on this matter currently is to use
276 binary mounts only.  This can be accomplished by:
277
278 itemize(
279 it() From a bash shell, umount /
280 it() mount -b d: /
281 )
282
283 If you have other disks that you intend to use for data generated by
284 cygnus tools you will have to mount those devices with the em(-b)
285 switch. 
286
287
288 subsubsect(Ecgs Compiler, assembler, and linker)
289 lurl(http://www.xraylith.wisc.edu/~khan/software/gnu-win32/egcs.html)
290
291 Cygnus now distributes the ecgs compiler with cygwin-b20.
292
293 subsubsect(bf(GNU)'s Internationalization Package) 
294 lurl(http://www.gnu.org/order/ftp.html)
295
296 Considering the origin of the major contributors of lilypond, this is a
297 must.  However before we actually do a bf(GNU) build we have to
298 discuss some caveats of the Windows-NT OS in particular the naming of
299 executable files.  tt(Windows-NT) uses a .exe extension where tt(UNIX)
300 does not use an extension.  This causes a problem during the
301 installation portion of a bf(GNU) build.  The following script can be
302 used to help alleviate this problem.
303
304 verb(
305 #!/bin/sh
306
307 realinstall=/gnuwin32/cygwin-b20/H-i586-cygwin32/bin/install.exe
308 args=''
309 while [ $# -ne 0 ] 
310 do
311     case $1 in
312         -*CHAR(41) args="$args $1"
313             ;;
314
315          *CHAR(41) if [ -f $1.exe ]; then
316                 args="$args $1.exe"
317             else
318                 args="$args $1"
319             fi
320             ;;
321     esac
322     shift
323 done
324
325 $realinstall $args
326 )
327
328 I place this in script file(~/bin).  The LilyPond configure, build,
329 and install process handles this with it's own install script.  In
330 addition there are patches to the cygnus install command that also
331 deals with this problem.  Having said that, here is how one
332 might build the em(gettext) package. 
333
334 itemize(
335 it() download the package from one of the ftp sites.
336 it() From a bash shell, cd ~/usr/src.
337 it() tar zxf gettext-0.10.tar.gz
338 it() cd gettext-0.10
339 it() ./configure --prefix=$CYGFS/H-i586-cygwin32
340 it() make
341 it() make install
342 )
343
344 subsubsect(bf(GNU)'s roff package) 
345 lurl(http://www.gnu.org/order/ftp.html)
346
347 Following the instructions for em(gettext) package to download, build,
348 and install the em(groff) package.
349
350 subsubsect(Python Programing Language) 
351 lurl(http://www.python.org)
352
353 Python is the scripting language of choice for a lilypond build.
354 There is a native tt(Windows-NT) self extracting binary distribution
355 available.  I recommend installing Python in a directory that does
356 bf(not) have spaces.  And then place it in the bash shell path by
357 editing $CYGFS/cygnus.bat.
358
359 subsubsect(Perl Programing Language) 
360 lurl(http://www.cpan.org)
361
362 I believe perl is used in some legacy scripts to date.  There is a
363 native tt(Windows-NT) self extracting binary distribution available.
364 I recommend installing Perl in a directory that does bf(not) have
365 spaces.  And then place it in the bash shell path by editing
366 $CYGFS/cygnus.bat.
367
368 subsubsect(Yodl Document Language) 
369 lurl(http://www.xs4all.nl/~jantien/yodl/)
370
371 Yodl for documentation in LilyPond.  It is currently being updated by
372 Jan Nieuwenhuizen.  The development methodology of em(Yodl) as well as
373 em(LilyPond) relies on a the following directory structure:
374
375 label(dirstr)
376 verb(
377 $HOME/usr/src/
378        |-releases/
379        |-patches/
380        |-test/
381 )
382
383 description(
384
385 dit(releases/) Downloaded and generated releases live here.  For
386 example file(yodl-1.31.7.tar.gz) and file(lilypond-1.1.17.tar.gz).
387
388 dit(patches/) Downloaded and generated patches live here.  For
389 example file(yodl-1.31.7.diff.gz) and file(lilypond-1.1.17.diff.gz).
390
391 dit(test/) This directory is used to generate releases and patches.
392
393 )
394
395 I strongly recommend using this file structure to build em(yodl) and
396 em(lilypond).
397                                    
398 itemize(
399 it() download the package from
400 lurl(http://www.xs4all.nl/~jantien/yodl/) to
401 file($HOME/usr/src/releases).
402 it() From a bash shell, cd file($HOME/usr/src).
403 it() tar zxf releases/yodl-em(<version>).tar.gz 
404 it() cd yodl-em(<version>)
405 it() ./configure --prefix=/gnuwin32/yodl-em(<version>) --srcdir=.
406 Since em(yodl) is under development I choose to install it in a
407 version rooted directory.  This allows me to test newly released
408 versions without losing a known working version.
409 it() make
410 it() make install
411 it() place it in the bash shell path by editing $CYGFS/cygnus.bat.
412 For example:
413 verb(\
414 rem yodl
415
416 SET PATH=%PATH%;%LOCAL_ROOT%\yodl-1.31.7\bin
417
418 )
419 )
420
421 subsubsect(guile) 
422
423 GUILE, GNU's Ubiquitous Intelligent Language for Extension, is a
424 library that implements the Scheme language plus various convenient
425 facilities. It's designed so that you can link it into an application
426 or utility to make it extensible. GNU's plan is to link this library
427 into all GNU programs that call for extensibility.
428
429 itemize(
430 it() download guile-1.3 patch from
431 lurl(http://home.austin.rr.com/jbr/jeff/lilypond/guile.patch) and save it
432 to file(/tmp/guile.patch).
433 it() download guile-1.3 from one of GNU's ftp sites.  
434 it() From a bash shell, tar zxf guile-1.3.tar.gz
435 it() cd guile-1.3
436 it() patch -p2 < /tmp/guile.patch
437 it() LD=/gnuwin32/cygwin-b20/H-i586-cygwin32/bin/ld \ nl() 
438         ./configure --prefix=$CYGFS/H-i586-cygwin32
439 it() make sure bin_PROGRAMS macro in libguile/Makefile does em(not) have the
440 .exe extension during the build
441 it() make
442 it() make sure bin_PROGRAMS in libguile/Makefile em(does) have the
443 .exe extension during the install. Yuck. 
444 it() make install
445 )
446
447
448 subsubsect(LilyPond) label(lilybuild)
449 itemize(
450 it() download the package from
451 lurl(http://www.cs.uu.nl/people/hanwen/lilypond/) to
452 file($HOME/usr/src/releases).
453 it() From a bash shell, cd file($HOME/usr/src).
454 it() tar zxf releases/lilypond-em(<version>).tar.gz 
455 it() cd lilypond-em(<version>)
456 it() ./configure --prefix=/gnuwin32/lilypond-em(<version>) \ nl()
457         --srcdir=. nl()
458 Since em(lilypond) is under development I choose to install it in a
459 version rooted directory.  This allows me to test newly released
460 versions without losing a known working version.
461 it() make
462 it() make install
463 it() place it in the bash shell path by editing $CYGFS/cygnus.bat.
464 For example:
465 verb(\
466 rem lilypond
467
468 SET PATH=%PATH%;%LOCAL_ROOT%\lilypond-1.1.17\bin
469
470 )
471 )
472
473 subsect(Maintaining lilypond on Windows-NT) label(maintain)
474
475 If you have built em(lilypond) on tt(Windows-NT) using the directory
476 structure described link(previously)(dirstr) and the process described
477 in section ref(lilybuild), then you are ready to maintain
478 em(lilypond).  It can not be that easy!?  Well, there is one caveat.
479 Currently to use the file(stepmake/bin/release.py) and
480 file(stepmake/bin/package-diff.py) scripts you need to obtain/build a
481 version of em(python) that was built with bf(Cygnus) development kit.
482 The process I used is as follows:
483
484 itemize(
485 it() obtain python source from lurl(http://www.python.org)
486 it() tar zxf /tmp/python-em(<version>).tar.gz 
487 it() cd python-em(<version>)
488 it() configure --prefix=/gnuwin32/Python-em(<version>)
489 it() edit toplevel file(Makefile) code(EXE) macro so it reads code(EXE=.exe)
490 it() make
491 it() make install
492 it() place it in the bash shell path by editing $CYGFS/cygnus.bat.
493 For example:
494 verb(\
495 rem python
496
497 SET PATH=%PATH%;%LOCAL_ROOT%\python-1.5.1\bin
498
499 )
500 )
501
502 I choose to build em(lilypond) with the standard tt(Windows-NT)
503 em(python) and use the bf(Cygnus) version for using the release
504 scripts.  This way I can make sure the tt(Windows-NT) em(python)
505 version is able to build em(lilypond).  Currently there are several
506 issues with the release scripts.  Using code(os.link) and
507 code(os.system(set -x;...)) are to name a few.
508
509 To generate a new release and patch you must use the directory
510 structure described link(previously)(dirstr).  And follow the
511 instructions found in file(PATCH.txt).  Editing
512 file(Documentation/AUTHORS.yo), file(VERSION), and file(NEWS) is also
513 required.  When my edits are complete and tested I:
514
515 itemize(
516 it() Edit file(config.make) and change em(python) path to the
517 bf(Cygnus) version: code(PYTHON=/gnuwin32/Python-1.5.1/bin/python).
518 it() make release
519 )
520
521 The new release is placed in file(releases) directory and the patch is
522 placed in the file(patches) directory.  I email the new patch to
523 email(gnu-music-discuss@gnu.org).  More than one patch a day can be
524 generated by:
525
526 itemize(
527 it() cd $HOME/usr/src 
528 it() tar zxf releases/lilypond-em(<version>).em(<patchlevel>)
529 it() use your normal configure
530 it() make edits
531 it() Change file(VERSION) to increment em(<patchlevel>)
532 it() Change file(NEWS)
533 it() make release
534 )
535
536 subsect(Running lilypond on Windows-NT) label(run)
537
538 We are now distributing a formated binary distribution for
539 Windows-NT.  Please refer to
540 lurl(http://home.austin.rr.com/jbr/jeff/lilypond/) for current news,
541 download, installation, and running information.
542
543 Jeffrey B. Reed email(daboys@austin.rr.com)
544
545
546 sect(RUNNING LILYPOND -- by Dominique Cretel)
547
548 You may want to refer to section ref(run), for more current
549 information about downloading, installing, and running the Windows-NT
550 binary distribution. 
551
552 enumerate(
553 eit() First, I have download tha 0.1.64 version of LilyPond music software.
554
555 eit() Then I extract it in a temp directory, and I move the directory
556 "lilypond-0.1.64" to the root directory of my D drive.
557
558 eit() I go to the D:\Lilypond-0.1.64\tex directory to modify the
559 lilyponddefs.tex file (lines 75 and 84), and comment all
560 cmbx15 ans cmbx14, and replace them by cmbx12.
561
562 eit() build a command file like this:
563 Note: I use MiKTeX to process the tex file generated.
564
565 verb(
566 ---begin ly2dvi.bat
567 echo off
568 set ver=0.1.64
569 set path=%path%;d:\lilypond-%ver%\bin
570 lilypond -I d:\lilypond-%ver%\init %1
571 rem *** pause
572
573 set path=c:\texmf\miktex\bin;%path%
574 set TEXINPUTS=%TEXINPUTS%;d:\lilypond-%ver%\tex
575 set MFINPUTS=%MFINPUTS%;d:\lilypond-%ver%\mf
576 tex %1.tex
577 rem *** pause
578
579 dvips %1.dvi
580 rem *** pause
581
582 set path=%path%;d:\gstools\gsview
583 gsview32 %1.ps
584 ---end ly2dvi.bat
585 )
586
587 eit() execute lilypond by doing:
588 verb(
589 ly2ps silly <Enter>
590 )
591 )
592
593 Note:
594 nl()
595 You'll better have to put the SET commands lines in a separate command
596 file to avoid consumming each time environnment ressources.
597
598 Bye,nl()
599 Dominique Cretel email(dominique.cretel@cfwb.be)
600
601
602 sect(PROBLEMS AND ANWSWERS)
603
604 subsect(CONFIGURE AND INSTALL)
605 This is all to confusing.  I have:
606 enumerate(
607 eit() downloaded file(/tmp/lilypond-0.1.78.tar.gz)
608 eit() verb(
609     cd ~/usr/src
610 )
611 eit() verb(
612     tar zxf /tmp/lilypond-0.1.78.tar.gz
613 )
614 eit() verb(
615     ./configure --prefix=/users/jeff/lilypond-0.1.78 \\\
616
617         --enable-tex-prefix=/users/jeff/lilypond-0.1.78/texmf \\\
618
619         --enable-tex-dir=/users/jeff/lilypond-0.1.78/texmf/tex \\\
620
621         --enable-mf-dir=/users/jeff/lilypond-0.1.78/texmf/mf
622 )
623 eit() verb(
624     make
625 )
626 eit() verb(
627     make install
628 )
629 )
630
631 I did have a problem with lilypond.info.  And I will look into this
632 further.  After mending lilypond.info issue, it compiled and install
633 with no problems.
634
635 I have 64 Meg of physical memory and 64 Meg of swap.  Actually I need
636 to increase the swap space.  If a memory problem is occuring it most
637 likely is during the link process of lilypond.  There is a boat load
638 of objects to link.
639
640 Jan the mount -b stuff is confussing to me.  I have the entire system
641 mounted _without_ -b and only use -b on certain paths for programs
642 that create binary files that do not use O_BINARY open option.  By the
643 way the midi file open is one of these cases, I need to look into
644 that.  I have had no problems with this methodology.
645
646
647 subsect(DRIVE D:)
648
649 The windows multiroot filesystem is an utterly broken concept.  Please
650 do everything on one (urg) drive, C:.
651
652 verb(
653 > configure
654 > creating cache ./config.cache
655 > [..]
656 > creating config.make
657 > creating config.hh
658 > cd: lstat /d failed
659 )
660
661 Ok, this looks like another stupid windows problem.
662 You're working on 'drive D:', right?
663
664 I can think of some solutions, but i don't know if they work;
665 i just had to do some work in windows some time ago.  If you
666 have problems with this, please ask email(gnu-win32@cygnus.com).
667 I'll start with the simplest:
668 itemize(
669   it() do everything on drive C:, or
670   it() explicitely mount drive d:, work from there:
671   verb(
672       mkdir -p /mnt/d
673       mount d: /mnt/d
674       cd /mnt/d/lilypond-x.y.z/
675   )
676   it() make d:/ the root of cygnus, in cmd.exe/command.exe do:
677   verb(    
678       umount /
679       mount d: /
680   )
681 )
682
683
684 subsect(INSTALLING TOOLS)
685
686 > - First I have installed Python (for win32) "Pyth151.exe" and "Configure
687 nl()
688 > don't find it. I had to put it in the path for configure find it?
689 nl()
690
691 Yes, of course.  It should be possible to have different versions of tools 
692 installed (e.g. perl 4 and perl 5).  The best way to tell people (or tools 
693 like configure) which one to use is to put it in the path?
694   
695 Another small unix lesson: Where under dos each program installs itself
696 into a nice directory
697 verb(
698     c:\DosProgram\*
699 )
700 under unix, installation is handled centrally.  Executables go in
701 file(/usr/bin) (or file(/usr/local/bin)), and are always in your path.
702
703 subsect(VIRTUAL MEMORY)
704
705 verb(
706 > 4. make -C lily don't work. I get an error (see below). I get several
707 > object files in the ./lily/out directory (34 files: 17 *.dep, 16 *.o,
708 > and 1 *.hh):
709 >    [...]
710 >    include/engraver-group.hh:35: virtual memory exhausted
711 >    make: *** [out/bar-grav.o] Error 1
712 >    bash-2.01$
713
714 )
715
716 Ok, so everything works now, there's only some error with one of the
717 source files.  Lets see which one (and now the cc's now why they're
718 reading this :-)
719
720 It looks like you've run out of memory.  You should compile without
721 optimisation, gcc/egcs need a lot of memory for optimising.
722 Reconfigure without optimisation:
723 verb(
724     configure --disable-optimise
725 )
726 or edit file(config.make):
727 verb(
728     ## USER_CXXFLAGS = -g # -O  no optimise!
729     USER_CXXFLAGS = -g
730 )
731
732 There are some other things to look at: how much RAM do you have
733 (please say something > 8Mb :-)?  Although it might be an egcs bug,
734 you should have a look at the size of your swap file.
735 For an US version of windows, you should find it here:
736 verb(
737     /start/settings/control-panel/system/performance/virtual-memory
738 )
739 you see, amongst others, these entries:
740 verb(
741     paging file size for selected drive:
742
743         space-available: xx
744         initial-size: xx
745         maximum-size: xx
746
747     total paging file size for all drives
748
749         currently allocated: xx
750 )
751 Try to set:
752 verb(
753     initial-size: 64
754     maximum-size: 128
755 )
756 Make sure that:
757 itemize(
758 it() maximum-size >= 128 Mb
759 it() urrently-allocated + space-available >= 128 Mb
760 )
761