From 736bfdaea194aade5d20d9f749f009c96d41b953 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Thu, 29 Nov 2001 18:34:40 +0100 Subject: [PATCH] release: 1.5.23 =========== * Resurrected experimental sketch output, now with dispatch. * Bugfix: prefix directory defaults to DIR_DATADIR if not defined. * Rune: more reliable repeat dots (WARNING: FONT CHANGED) 1.5.22.h --- CHANGES | 18 ++- Documentation/header.html.in | 2 +- Documentation/topdocs/INSTALL.texi | 21 +-- Documentation/user/converters.itely | 36 +---- Documentation/user/refman.itely | 10 +- Documentation/user/tutorial.itely | 10 +- Documentation/windows/installing.texi | 124 ++++++++++----- Documentation/windows/lily-gs.sh | 12 ++ INSTALL.txt | 6 +- VERSION | 4 +- input/test/beams.ly | 4 +- input/trip.ly | 8 +- lily/bar.cc | 13 +- lily/completion-note-heads-engraver.cc | 2 +- lily/grob.cc | 2 +- lily/lily-guile.cc | 11 +- lily/lookup.cc | 15 +- lily/main.cc | 9 +- lily/my-lily-parser.cc | 5 - lily/note-heads-engraver.cc | 2 +- lily/paper-outputter.cc | 2 +- lily/parser.yy | 6 +- lily/stanza-number-engraver.cc | 2 +- lily/text-engraver.cc | 3 +- lilypond-mode.el | 48 ++++++ make/out/lilypond.lsm | 8 +- make/out/lilypond.mandrake.spec | 2 +- make/out/lilypond.redhat.spec | 4 +- make/out/lilypond.suse.spec | 4 +- mf/GNUmakefile | 2 +- mf/feta-puntje.mf | 14 -- scm/ascii-script.scm | 4 +- scm/lily.scm | 4 +- scm/ps.scm | 19 ++- scm/pysk.scm | 5 +- scm/sketch.scm | 4 +- scm/tex.scm | 27 ++-- scm/translator-property-description.scm | 2 +- scripts/abc2ly.py | 6 + scripts/etf2ly.py | 4 +- scripts/lilypond-book.py | 52 ++++--- scripts/ly2dvi.py | 5 +- scripts/update-lily.py | 192 ++++++++++++++++++++++-- stepmake/stepmake/metafont-rules.make | 6 + 44 files changed, 502 insertions(+), 237 deletions(-) diff --git a/CHANGES b/CHANGES index 8b28b189f1..5c34ea703f 100644 --- a/CHANGES +++ b/CHANGES @@ -1,16 +1,20 @@ -1.5.22.jcn4 +1.5.22.jcn1 =========== -* Stanza number: allow markup texts. +* Resurrected experimental sketch output, now with dispatch. -* Partial bugfix: ly2dvi: handle spaces in .ly file names (except for -latex calls). +* Bugfix: prefix directory defaults to DIR_DATADIR if not defined. -* Bugfix: prepend DATADIR to %loadpath too. +* Rune: more reliable repeat dots (WARNING: FONT CHANGED) -* Resurrected experimental sketch output, now with dispatch. +1.5.22.hwn1 +=========== -* Documented Linux-2.4.0, Guile-1.4 --with-threads bug. +* Dashed slur bugfix. + +* GUILE 1.4 compatibility. + + 1.5.22 ====== diff --git a/Documentation/header.html.in b/Documentation/header.html.in index bd4b116593..f5a7104cac 100644 --- a/Documentation/header.html.in +++ b/Documentation/header.html.in @@ -50,7 +50,7 @@ which substitutes some @AT_VARIABLES@ as well. GNU/Linux binaries
- GNU/Windows binaries
+ Windows binaries
Source code
diff --git a/Documentation/topdocs/INSTALL.texi b/Documentation/topdocs/INSTALL.texi index 45eb1b5e45..e542171569 100644 --- a/Documentation/topdocs/INSTALL.texi +++ b/Documentation/topdocs/INSTALL.texi @@ -171,12 +171,10 @@ configure something like: @item pktrace, [OPTIONAL], needed for generating PostScript Type1 -fonts. Get it from - @uref{http://www.cs.uu.nl/~hanwen/public/software/pktrace-0.1.tar.gz} +fonts. Get it from @uref{http://www.cs.uu.nl/~hanwen/pktrace/} @item autotrace-0.27a, [OPTIONAL], needed for generating PostScript Type1 -fonts. You must apply the patch included pktrace-0.1 first. -@uref{http://autotrace.sourceforge.net}. +fonts. @uref{http://autotrace.sourceforge.net}. @item MetaPost [OPTIONAL] needed for generating PostScript Type3 fonts. Please note that tetex-0.4pl8 (included with Red Hat 5.x) does not include @@ -533,7 +531,7 @@ interfere with your build, you may want to do this before the build too: @end example -@c Why isn't this in BUGS (where it belongs?) + @section Problems For help and questions use @email{lilypond-user@@gnu.org}. Please @@ -548,7 +546,6 @@ Flex 2.5.4a does not produce g++-3.0 compliant C++ code. To compile LilyPond with gcc-3.0 you may do: @example - rm -f config.cache CC=gcc-3.0 CXX=g++-3.0 ./configure --enable-config=gcc-3.0 make conf=gcc-3.0 -C lily out-gcc-3.0/lexer.cc patch -p1 < lexer-gcc-3.0.patch @@ -557,18 +554,6 @@ LilyPond with gcc-3.0 you may do: Note that this is fixed in Debian/unstable for flex >= 2.5.4a-13. -@unnumberedsubsec Linux-2.4.0, Guile-1.4 --with-threads - -There's a bug in certain kernels around version 2.4.0, that is -triggered when using Guile 1.4 compiled with pthreads. You'll see -random segmentation fault craches of LilyPond. Upgrade to a newer -version of Linux. If you can't do that, you may try to recompiling -Guile without threads (YMMV): - -@example - guile-1.4$ ./configure --without-threads; make all install -#end example - @unnumberedsubsec NetBSD @itemize @bullet diff --git a/Documentation/user/converters.itely b/Documentation/user/converters.itely index 05e31d59ff..1d1e75b1b9 100644 --- a/Documentation/user/converters.itely +++ b/Documentation/user/converters.itely @@ -33,8 +33,10 @@ therefore not recommended to use midi2ly for human-generated midi files. Correcting the quantization mistakes of the human player takes a lot of time. -Hackers who know about signal processing are invited to write a more -robust midi2ly. +Hackers who know about signal processing are invited to write a more +robust midi2ly. midi2ly is written in Python, using a module written in +C to parse the MIDI files. + @subsection Invoking midi2ly @@ -75,12 +77,6 @@ robust midi2ly. @end table -Report bugs to @email{bug-lilypond@@gnu.org}. - - -Written by @email{Jan Nieuwenhuizen, janneke@@gnu.org}. - - @node etf2ly @section etf2ly @@ -111,11 +107,9 @@ version information @refbugs -Known: articulation scripts are buggy. Empty measures confuse etf2ly. - -Written by @email{Han-Wen Nienhuys,hanwen@@cs.uu.nl}. +The list of articulation scripts is incomplete. Empty measures confuse +etf2ly. -Report bugs to @email{bug-lilypond@@gnu.org}. @node abc2ly @section abc2ly @@ -172,18 +166,12 @@ not. abc2ly ignores the ABC beaming. -Written by @email{Han-Wen Nienhuys,hanwen@@cs.uu.nl}. -@c How about Laura? /MB - -Report bugs to @email{bug-lilypond@@gnu.org}. - @node pmx2ly @section pmx2ly PMX is a MusiXTeX preprocessor written by Don Simons, see @uref{http://icking-music-archive.sunsite.dk/Misc/Music/musixtex/software/pmx/}. -Report bugs to @email{bug-lilypond@@gnu.org}. @subsection Invoking pmx2ly @@ -204,10 +192,6 @@ set output filename to FILE version information @end table -Report bugs to @email{bug-lilypond@@gnu.org}. - -Written by @email{Han-Wen Nienhuys,hanwen@@cs.uu.nl}. - @node musedata2ly @section musedata2ly @@ -242,10 +226,6 @@ version information @var{REFFILE} @end table -Report bugs to @email{bug-lilypond@@gnu.org}. - -Written by @email{Han-Wen Nienhuys,hanwen@@cs.uu.nl}. - @node mup2ly @section mup2ly @@ -287,9 +267,5 @@ print warranty and copyright. Mup2ly comes with absolutely @strong{NO WARRANTY} Currently, only plain notes (pitches, durations), voices and staves are converted. -Written by @email{Jan Nieuwenhuizen,janneke@@gnu.org}, based on pmx2ly. - -Report bugs to @email{bug-lilypond@@gnu.org}. - diff --git a/Documentation/user/refman.itely b/Documentation/user/refman.itely index 7acb95d58a..12adf9a8c4 100644 --- a/Documentation/user/refman.itely +++ b/Documentation/user/refman.itely @@ -329,7 +329,7 @@ r1 r2 r4 r8 r16 r32 r64 r64 @lilypond[] \score { \notes \relative c'' { - a\breve \autoBeamOff + a\breve \autoBeamOff a1 a2 a4 a8 a16 a32 a64 a64 r\longa r\breve r1 r2 r4 r8 r16 r32 r64 r64 @@ -609,6 +609,7 @@ Shortcut for \property Staff.clefOctavation = @var{extra transposition of clefname} @end example + Any change in these properties creates a clef (A @internalsref{Clef} grob). Supported clef-names include @@ -640,7 +641,12 @@ G clef on 2nd line @end table By adding @code{_8} or @code{^8} to the clef name, the clef is -transposed one octave down or up, respectively. +transposed one octave down or up, respectively. Note that you have to +enclose @var{clefname} in quotes if you use underscores or digits in the +name. For example, +@example + \clef "G_8" +@end example Supported associated glyphs (for @code{Staff.clefGlyph}) are: diff --git a/Documentation/user/tutorial.itely b/Documentation/user/tutorial.itely index 5bc98fe20f..fc88448dd4 100644 --- a/Documentation/user/tutorial.itely +++ b/Documentation/user/tutorial.itely @@ -837,10 +837,12 @@ at @uref{http://www.ghostscript.com}. @unnumberedsubsec Windows users Windows users start the terminal by clicking on the LilyPond icon. Notepad is sufficient for editing the LilyPond file. Viewing the PS file -can be done with @code{gsview32 test.ps}. Viewing DVI files can be done -with @code{yap test.dvi}. The "print" button in Yap will print files. -You can also print from the command line by executing @code{gsview32 /s -test.ps} +can be done with @code{gsview32 test.ps}.@footnote{ You can also view +DVI files with @code{yap test.dvi}, but unfortunately the postscript +interaction seems broken, meaning that you will not see slurs or beams +in the Yap window.} You can also print from the command line by +executing @code{gsview32 /s test.ps} + @node The first real tune diff --git a/Documentation/windows/installing.texi b/Documentation/windows/installing.texi index 2df724461a..daa584aca5 100644 --- a/Documentation/windows/installing.texi +++ b/Documentation/windows/installing.texi @@ -19,41 +19,30 @@ users. Please remember that we (the developers) rather dislike windows, and none of us use it. Don't complain to us that installing LilyPond is too difficult; rather, if you know something about your Windows, send us code that works better (see @uref{compiling.html,compiling}). +Nevertheless, detailed bug reports are appreciated; before you send a +report, make sure to read the section on bugreports below. -@section Windows binary setup - -Apart from LilyPond itself, you need Cygwin, GUILE, Python and a TeX -installation, but all this software be installed by running setup.exe: - -@table @asis -@item LilyPond -Download and run -@c let's do http, so that people read the README -@uref{http://www.lilypond.org/gnu-windows/setup.exe, setup.exe} -to install LilyPond. -This will install the minimal set of cygwin tools needed to run -LilyPond. Make sure to install in the default place, @file{c:/cygwin}, -and install everything. +@section Windows binary setup -As of version 1.3.150, you also have the option to install MiKTeX and -GSView from this installer, which is recommended. If you choose to -install these by hand (see below), make sure to install them -@strong{before} you install LilyPond, otherwise your LilyPond setup will -be broken. -If you already have cygwin installed, don't worry: nothing will be -installed twice. To expand on this minimal set, click -@uref{http://sources.redhat.com/cygwin/setup.exe,here}, or visit a -Cygwin @uref{http://sources.redhat.com/cygwin/mirrors.html,mirror site}. -@end table +All the software you need is installed by downloading and running +@uref{http://www.lilypond.org/gnu-windows/setup.exe, setup.exe}. You +will be asked some questions. If you are unsure just click "Next". Do +not change the default install directory @file{c:/cygwin}. +This installs LilyPond, and Cygwin, GUILE, Python, MiKTeX and GSView If +you already have some of that software under @file{c:/cygwin}, then +don't worry: nothing will be installed twice. -@section Windows running setup +If you want to install any of this software by hand, do this +@strong{before} you run @file{setup.exe}, otherwise your LilyPond setup +will not work. -If you're lucky, after running @file{setup.exe} you're all set up. +@section Testing LilyPond -Open a LilyPond shell (or any bash shell), and type +Open a LilyPond shell (To open a a lilypond shell, click the "GNU +LilyPond" icon), and type @quotation @example @@ -61,7 +50,7 @@ lilypond --help @end example @end quotation -If you don't see something similar to +You should see something similar to @quotation @example @@ -79,25 +68,71 @@ Options: @end example @end quotation -you should try adding @file{/usr/lilypond-x.y.z/bin} to your @var{PATH}, -do: +Then, prepare a file called @file{foo.ly}, by issuing +@example +notepad foo.ly +@end example +Enter the following into the file +@example + +\score @{ \notes @{ c4 ( ) c4 @} @} + +@end example +Close the file and save it. Run the following command a few times until +it says @code{PS output to `foo.ps', DVI output to `foo.dvi'}. +@example + +ly2dvi -P foo + +@end example +You can now view the file using the following command +@example + +gsview32 foo.ps + +@end example + +If this works, then you can head to the +@uref{../../user/out-www/lilypond/Tutorial.html,Tutorial} to start using +LilyPond. + + +@section Removing LilyPond + +Start @file{setup.exe}, click Next, select "Install from Local +Directory". Then click next until you reach "Select packages to +install". Click "View". Now, for every package, click on the recycle +icon until it says "Uninstall". Then, click Next. + +(If you find this too tedious, you can also simply remove +@file{c:/cygwin}. This also removes the @file{/home/} directories under +cygwin (i.e. @file{C:\CYGWIN\HOME}, so make sure that you bring +important files in safety first.) + +@section Troubleshooting + + +@unnumberedsubsec invoking lilypond --help doesn't work + +Open the shell, and try adding @file{/usr/lilypond-x.y.z/bin} to your +@var{PATH}, do: @quotation @example PATH=/usr/lilypond-1.4.2/bin:$PATH @end example @end quotation -and try again. - - -@subsection Trouble +Now, invoke @file{lilypond --help} For problems and solutions see @uref{http://lilypond.org/wiki?TroubleshootingWindows,Troubleshooting Windows} + + +@ignore @subsection Additional software LilyPond needs a number of software packages to be really useful. These @@ -141,11 +176,8 @@ Click @uref{ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/AFPL/gs650/gs650w32.exe @uref{ftp://ftp.cs.wisc.edu/ghost/ghostgum,ftp.cs.wisc.edu}. or visit the @uref{http://www.cs.wisc.edu/~ghost/,Ghostscript, Ghostview and GSview site}. - @end table - - [TODO: @@ -154,9 +186,6 @@ emacs-on-cygwin setup. ] - -@ignore - guile -v Guile 1.4.1 @@ -188,4 +217,19 @@ in each corner. @end ignore +@ignore +@c irrelevant. + +If you want to install more of cygwnTo expand on this minimal set, +@section If you already have MikTeX, GSView or +If you already have cygwin installed, don't worry: nothing will be +installed twice. To expand on this minimal set, click +@uref{http://sources.redhat.com/cygwin/setup.exe,here}, or visit a +Cygwin @uref{http://sources.redhat.com/cygwin/mirrors.html,mirror site}. + + +This will install the minimal set of cygwin tools needed to run +LilyPond. Make sure to install in the default place, @file{c:/cygwin}, +and install everything. +@end ignore diff --git a/Documentation/windows/lily-gs.sh b/Documentation/windows/lily-gs.sh index 5ae3acbad1..c8c9bd4ad6 100644 --- a/Documentation/windows/lily-gs.sh +++ b/Documentation/windows/lily-gs.sh @@ -14,12 +14,18 @@ gsview36="/usr/windows/Ghostgum/GSview" # "C:\GSTOOLS\GSVIEW\gsview32.exe" "%1" + +## we set GS_LIB although the registry keys have been set. +## + if [ -e "$gs550/gswin32.exe" ]; then PATH="$gs550:$PATH" + GS_LIB='C:\cygwin\usr\windows\gs\gs5.50\lib' fi if [ -e "$gs650/gswin32.exe" ]; then PATH="$gs650:$PATH" + GS_LIB='C:\cygwin\usr\windows\gs\gs6.50\lib' fi if [ -e "$gsview26/gsview32.exe" ]; then @@ -29,3 +35,9 @@ fi if [ -e "$gsview36/gsview32.exe" ]; then PATH="$gsview36:$PATH" fi + + + + +export GS_LIB +export PATH diff --git a/INSTALL.txt b/INSTALL.txt index 7fa5e4fe7c..972e0c14e5 100644 --- a/INSTALL.txt +++ b/INSTALL.txt @@ -173,12 +173,10 @@ Compilation ./configure --without-kpathsea --enable-tfm-path=/usr/share/texmf/fonts/tfm/public/cm/:/usr/share/texmf/fonts/tfm/ams/symbols * pktrace, [OPTIONAL], needed for generating PostScript Type1 fonts. - Get it from - `http://www.cs.uu.nl/~hanwen/public/software/pktrace-0.1.tar.gz' + Get it from `http://www.cs.uu.nl/~hanwen/pktrace/' * autotrace-0.27a, [OPTIONAL], needed for generating PostScript Type1 - fonts. You must apply the patch included pktrace-0.1 first. - `http://autotrace.sourceforge.net'. + fonts. `http://autotrace.sourceforge.net'. * MetaPost [OPTIONAL] needed for generating PostScript Type3 fonts. Please note that tetex-0.4pl8 (included with Red Hat 5.x) does not diff --git a/VERSION b/VERSION index 58cd2a286f..753f92fe0e 100644 --- a/VERSION +++ b/VERSION @@ -1,8 +1,8 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=1 MINOR_VERSION=5 -PATCH_LEVEL=22 -MY_PATCH_LEVEL=jcn4 +PATCH_LEVEL=23 +MY_PATCH_LEVEL= # use the above to send patches: MY_PATCH_LEVEL is always empty for a # released version. diff --git a/input/test/beams.ly b/input/test/beams.ly index 0c96547772..18e992a57c 100644 --- a/input/test/beams.ly +++ b/input/test/beams.ly @@ -13,7 +13,7 @@ TestedFeatures = "beams and beamflags" < % \property Score.beamQuantisation = #'none \context GrandStaff < - \notes\transpose c' { +\context Staff = SA \notes\transpose c' { \time 8/4 \stemUp [c8 c'' a' f'] @@ -39,7 +39,7 @@ TestedFeatures = "beams and beamflags" } > < - \notes { +\context Staff = SB \notes { \transpose c' { \time 8/4 \stemDown [a'8 a, c e] diff --git a/input/trip.ly b/input/trip.ly index 6aa569f523..50add21ba5 100644 --- a/input/trip.ly +++ b/input/trip.ly @@ -91,7 +91,7 @@ praeludiumLeft = \notes \relative c { - + fugaIIRight = \notes \relative c'' { \key e \major % E-major \clef violin @@ -202,7 +202,11 @@ fugaIIPedal = \notes \relative c { \clef bass %13 - r4 fis,4-\ltoe e4.-\lheel e'8-\rheel | + \property Staff.PhrasingSlur \override #'dashed = #5.0 + c4 \( ( d ) e\) f + +% r4 fis,4-\ltoe e4.-\lheel e'8-\rheel | + % tie accs: 2nd should get no acc f4-\rtoe~ f8 fis8-\rtoe fis4-\rtoe [e8-\ltoe a-\rtoe] | diff --git a/lily/bar.cc b/lily/bar.cc index 33a04d2f39..bd38f9637c 100644 --- a/lily/bar.cc +++ b/lily/bar.cc @@ -53,6 +53,8 @@ Bar::compound_barline (Grob*me, String str, Real h) Real fatline = gh_scm2double (me->get_grob_property ("thick-thickness")); Real staffline = me->paper_l ()->get_var ("stafflinethickness"); + Real staffspace = me->paper_l ()->get_var ("staffspace") + * Staff_symbol_referencer::staff_space (me); kern *= staffline; thinkern *= staffline; @@ -61,10 +63,13 @@ Bar::compound_barline (Grob*me, String str, Real h) Molecule thin = simple_barline (me, hair, h); Molecule thick = simple_barline (me, fatline, h); - Molecule colon = Font_interface::get_default_font (me)->find_by_name ( - Staff_symbol_referencer::line_count (me) & 1 == 1 ? - "dots-repeatcolon" : "dots-evenrepeatcolon" - ); + Molecule colon; + Molecule dot = Font_interface::get_default_font (me)->find_by_name ("dots-dot"); + Real dist = (2-(Staff_symbol_referencer::line_count (me) & 1))*staffspace; + dot.translate_axis(dist/2,Y_AXIS); + colon.add_molecule(dot); + dot.translate_axis(-dist,Y_AXIS); + colon.add_molecule(dot); Molecule m; diff --git a/lily/completion-note-heads-engraver.cc b/lily/completion-note-heads-engraver.cc index 965f6cda80..85609c295a 100644 --- a/lily/completion-note-heads-engraver.cc +++ b/lily/completion-note-heads-engraver.cc @@ -302,5 +302,5 @@ ENTER_DESCRIPTION(Completion_heads_engraver, break long notes and automatically tie them into the next measure.", /* creats*/ "NoteHead Dots", /* acks */ "", -/* reads */ "", +/* reads */ "easyPlay centralCPosition measurePosition measureLength", /* write */ ""); diff --git a/lily/grob.cc b/lily/grob.cc index 3f35eb86b8..4251e16c5e 100644 --- a/lily/grob.cc +++ b/lily/grob.cc @@ -397,7 +397,7 @@ Grob::handle_broken_grobs (SCM src, SCM criterion) return SCM_UNDEFINED; } } - else if (SCM_CONSP (src)) + else if (ly_pair_p (src)) // SCM_CONSP (src)) // huh? { SCM oldcar =ly_car (src); /* diff --git a/lily/lily-guile.cc b/lily/lily-guile.cc index 526214b48c..e01fd24b30 100644 --- a/lily/lily-guile.cc +++ b/lily/lily-guile.cc @@ -261,18 +261,16 @@ prepend_load_path (String p ) void init_lily_guile (String p ) { - // very very ugh: LILYPONDPREFIX (a hack), if set, overrules DATADIR. - // DATADIR (the default) should work too! - prepend_load_path (DIR_DATADIR); - prepend_load_path (DIR_DATADIR "/scm"); - prepend_load_path (p); // todo: junk this. We should make real modules iso. just loading files. prepend_load_path (p + "/scm/"); + +#if GUILE_MINOR_VERSION >= 5 SCM last_mod = scm_current_module (); scm_set_current_module (scm_c_resolve_module ("guile")); +#endif init_cxx_function_smobs (); for (int i=scm_init_funcs_->size () ; i--;) @@ -281,7 +279,10 @@ init_lily_guile (String p ) if (verbose_global_b) progress_indication ("\n"); read_lily_scm_file ("lily.scm"); + +#if GUILE_MINOR_VERSION >= 5 scm_set_current_module (last_mod); +#endif } unsigned int ly_scm_hash (SCM s) diff --git a/lily/lookup.cc b/lily/lookup.cc index 036ba88959..40af656ee3 100644 --- a/lily/lookup.cc +++ b/lily/lookup.cc @@ -125,11 +125,14 @@ Lookup::slur (Bezier curve, Real curvethick, Real linethick) { Real alpha = (curve.control_[3] - curve.control_[0]).arg (); Bezier back = curve; - + Offset perp = curvethick * complex_exp (Offset (0, alpha + M_PI/2)) * 0.5; back.reverse (); - back.control_[1] += curvethick * complex_exp (Offset (0, alpha + M_PI/2)); - back.control_[2] += curvethick * complex_exp (Offset (0, alpha + M_PI/2)); + back.control_[1] += perp; + back.control_[2] += perp; + curve.control_[1] -= perp; + curve.control_[2] -= perp; + SCM scontrols[8]; for (int i=4; i--;) @@ -152,8 +155,12 @@ Lookup::slur (Bezier curve, Real curvethick, Real linethick) ly_quote_scm (list), gh_double2scm (linethick), SCM_UNDEFINED)); + Box b(curve.extent (X_AXIS), + curve.extent (Y_AXIS)); + + b[X_AXIS].unite (back.extent (X_AXIS)); + b[Y_AXIS].unite (back.extent (Y_AXIS)); - Box b (curve.extent (X_AXIS), curve.extent (Y_AXIS)); return Molecule (b, at); } diff --git a/lily/main.cc b/lily/main.cc index 39e462d944..67b85396d8 100644 --- a/lily/main.cc +++ b/lily/main.cc @@ -255,12 +255,12 @@ setup_paths () /* Adding mf/out make lilypond unchanged source directory, when setting LILYPONDPREFIX to lilypond-x.y.z */ char *suffixes[] = {"ly", "afm", "mf/out", "scm", "tfm", "ps", 0}; - String prefix = prefix_directory; - if (prefix.empty_b ()) - prefix = DIR_DATADIR; + + if (prefix_directory.empty_b ()) + prefix_directory = DIR_DATADIR; for (char **s = suffixes; *s; s++) { - String p = prefix + to_str ('/') + String (*s); + String p = prefix_directory + to_str ('/') + String (*s); global_path.add (p); #if !KPATHSEA @@ -324,6 +324,7 @@ main_prog (void * , int, char**) Very ugh. */ + init_lily_guile (prefix_directory); cout << endl; diff --git a/lily/my-lily-parser.cc b/lily/my-lily-parser.cc index c850a72104..937c0f338a 100644 --- a/lily/my-lily-parser.cc +++ b/lily/my-lily-parser.cc @@ -83,11 +83,6 @@ My_lily_parser::parser_error (String s) exit_status_global = 1; } -void -My_lily_parser::set_last_duration (Duration const *d) -{ - default_duration_ = *d; -} Input diff --git a/lily/note-heads-engraver.cc b/lily/note-heads-engraver.cc index ae238425cd..e3eed55cd5 100644 --- a/lily/note-heads-engraver.cc +++ b/lily/note-heads-engraver.cc @@ -139,5 +139,5 @@ ENTER_DESCRIPTION(Note_heads_engraver, /* descr */ "Generate one or more noteheads from Music of type Note_req.", /* creats*/ "NoteHead Dots", /* acks */ "", -/* reads */ "", +/* reads */ "easyPlay centralCPosition", /* write */ ""); diff --git a/lily/paper-outputter.cc b/lily/paper-outputter.cc index abfed82563..24ed811878 100644 --- a/lily/paper-outputter.cc +++ b/lily/paper-outputter.cc @@ -91,7 +91,7 @@ Paper_outputter::output_comment (String str) void Paper_outputter::output_scheme (SCM scm) { - scm_apply_2 (output_func_, scm, file_, SCM_EOL); + gh_call2 (output_func_, scm, file_); } void diff --git a/lily/parser.yy b/lily/parser.yy index 2194356763..022451ca8d 100644 --- a/lily/parser.yy +++ b/lily/parser.yy @@ -1615,9 +1615,11 @@ optional_notemode_duration: } | multiplied_duration { $$ = $1; + THIS->default_duration_ = *unsmob_duration ($$); } | explicit_duration { $$ = $1; + THIS->default_duration_ = *unsmob_duration ($$); } ; @@ -1630,15 +1632,11 @@ steno_duration: l = intlog2 ($1); $$ = Duration (l, $2).smobbed_copy (); - - THIS->set_last_duration (unsmob_duration ($$)); } | DURATION_IDENTIFIER dots { Duration *d =unsmob_duration ($1); Duration k (d->duration_log (),d->dot_count () + $2); $$ = k.smobbed_copy (); - - THIS->set_last_duration (unsmob_duration ($$)); } ; diff --git a/lily/stanza-number-engraver.cc b/lily/stanza-number-engraver.cc index 833241cb53..ae47a7d189 100644 --- a/lily/stanza-number-engraver.cc +++ b/lily/stanza-number-engraver.cc @@ -45,7 +45,7 @@ Stanza_number_engraver::process_music () // TODO - if (gh_string_p (s) || gh_pair_p (s)) + if (gh_string_p (s)) /* if (i.grob_l_->has_interface (symbol ("lyric-syllable-interface"))) diff --git a/lily/text-engraver.cc b/lily/text-engraver.cc index 3fdc1a3f71..5db60e1750 100644 --- a/lily/text-engraver.cc +++ b/lily/text-engraver.cc @@ -145,7 +145,8 @@ Text_engraver::stop_translation_timestep () for (int i=0; i < texts_.size (); i++) { Item *ti = texts_[i]; - Side_position_interface::add_staff_support (ti); + if (!to_boolean (get_property ("scriptHorizontal"))) + Side_position_interface::add_staff_support (ti); typeset_grob (ti); } texts_.clear (); diff --git a/lilypond-mode.el b/lilypond-mode.el index 60e1a9c2cf..647f03862a 100644 --- a/lilypond-mode.el +++ b/lilypond-mode.el @@ -149,6 +149,18 @@ in LilyPond-include-path." :group 'LilyPond :type 'string) +(defcustom LilyPond-gv-command "gv -watch" + "Command used to display PS files." + + :group 'LilyPond + :type 'string) + +(defcustom LilyPond-midi-command "timidity" + "Command used to play MIDI files." + + :group 'LilyPond + :type 'string) + ;; This is the major configuration variable. (defcustom LilyPond-command-alist `( @@ -311,6 +323,42 @@ Must be the car of an entry in `LilyPond-command-alist'." (LilyPond-command (LilyPond-command-menu "Midi") 'LilyPond-master-file) ) +(defun LilyPond-command-formatdvi () + "Format the dvi output of the current document." + (interactive) + (LilyPond-command (LilyPond-command-menu "2Dvi") 'LilyPond-master-file) +) + +(defun LilyPond-command-formatps () + "Format the ps output of the current document." + (interactive) + (LilyPond-command (LilyPond-command-menu "2PS") 'LilyPond-master-file) +) + +(defun LilyPond-command-smartview () + "View the dvi output of current document." + (interactive) + (LilyPond-command (LilyPond-command-menu "SmartView") 'LilyPond-master-file) +) + +(defun LilyPond-command-view () + "View the dvi output of current document." + (interactive) + (LilyPond-command (LilyPond-command-menu "View") 'LilyPond-master-file) +) + +(defun LilyPond-command-viewps () + "View the ps output of current document." + (interactive) + (LilyPond-command (LilyPond-command-menu "ViewPS") 'LilyPond-master-file) +) + +(defun LilyPond-command-midi () + "View the ps output of current document." + (interactive) + (LilyPond-command (LilyPond-command-menu "Midi") 'LilyPond-master-file) +) + ;; FIXME, this is broken (defun LilyPond-region-file (begin end) (let ( diff --git a/make/out/lilypond.lsm b/make/out/lilypond.lsm index 77e808cea1..e614e84fe3 100644 --- a/make/out/lilypond.lsm +++ b/make/out/lilypond.lsm @@ -1,15 +1,15 @@ Begin3 Title: LilyPond -Version: 1.5.22 -Entered-date: 09NOV01 +Version: 1.5.23 +Entered-date: 29NOV01 Description: @BLURB@ Keywords: music notation typesetting midi fonts engraving Author: hanwen@cs.uu.nl (Han-Wen Nienhuys) janneke@gnu.org (Jan Nieuwenhuizen) Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys) Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert - 1000k lilypond-1.5.22.tar.gz + 1000k lilypond-1.5.23.tar.gz Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/ - 1000k lilypond-1.5.22.tar.gz + 1000k lilypond-1.5.23.tar.gz Copying-policy: GPL End diff --git a/make/out/lilypond.mandrake.spec b/make/out/lilypond.mandrake.spec index e852d43d1d..bf2fd2f6e5 100644 --- a/make/out/lilypond.mandrake.spec +++ b/make/out/lilypond.mandrake.spec @@ -1,5 +1,5 @@ %define name lilypond -%define version 1.5.22 +%define version 1.5.23 %define release 1mdk Name: %{name} diff --git a/make/out/lilypond.redhat.spec b/make/out/lilypond.redhat.spec index 95965f7f10..4140712f8a 100644 --- a/make/out/lilypond.redhat.spec +++ b/make/out/lilypond.redhat.spec @@ -1,11 +1,11 @@ %define info yes Name: lilypond -Version: 1.5.22 +Version: 1.5.23 Release: 1 License: GPL Group: Applications/Publishing -Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.5.22.tar.gz +Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.5.23.tar.gz Summary: Create and print music notation URL: http://www.lilypond.org/ BuildRoot: /tmp/lilypond-install diff --git a/make/out/lilypond.suse.spec b/make/out/lilypond.suse.spec index 4564a645bb..6acea87cbb 100644 --- a/make/out/lilypond.suse.spec +++ b/make/out/lilypond.suse.spec @@ -14,11 +14,11 @@ Distribution: SuSE Linux 7.0 (i386) Name: lilypond -Version: 1.5.22 +Version: 1.5.23 Release: 2 Copyright: GPL Group: Applications/Publishing -Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.5.22.tar.gz +Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.5.23.tar.gz # music notation software for.. ? Summary: A program for printing sheet music. URL: http://www.lilypond.org/ diff --git a/mf/GNUmakefile b/mf/GNUmakefile index 6f4667cf14..9b2ae77de2 100644 --- a/mf/GNUmakefile +++ b/mf/GNUmakefile @@ -15,7 +15,7 @@ TEST_FILES = $(wildcard *test*.mf) FET_FILES = $(filter-out $(TEST_FILES),$(wildcard feta[0-9]*.mf)) FONT_FILES = $(filter-out $(TEST_FILES),$(wildcard feta*[0-9].mf)) -XPM_FONTS = feta20 feta-nummer10 +XPM_FONTS = feta20 feta-nummer10 feta-braces20 #CM_AFM_FILES = cmr10 $(outdir)/cmr10.afm: diff --git a/mf/feta-puntje.mf b/mf/feta-puntje.mf index 67199364fb..5ad45c1951 100644 --- a/mf/feta-puntje.mf +++ b/mf/feta-puntje.mf @@ -10,18 +10,4 @@ fet_beginchar("duration dot","dot", "dot") set_char_box(0, dot_diam#, dot_diam#/2, dot_diam#/2); fet_endchar; -fet_beginchar("repeat dots", "repeatcolon", "repeatcolon") - pickup pencircle scaled dot_diam; - draw (dot_diam/2, staff_space/2); - addto currentpicture also currentpicture yscaled -1; - set_char_box(0, dot_diam#, staff_space#/2, staff_space#/2); -fet_endchar; - -fet_beginchar("even repeat dots", "evenrepeatcolon", "evenrepeatcolon") - pickup pencircle scaled dot_diam; - draw (dot_diam/2, staff_space); - addto currentpicture also currentpicture yscaled -1; - set_char_box(0, dot_diam#, staff_space#, staff_space#); -fet_endchar; - fet_endgroup("dots"); diff --git a/scm/ascii-script.scm b/scm/ascii-script.scm index b3138812f3..25255e3f28 100644 --- a/scm/ascii-script.scm +++ b/scm/ascii-script.scm @@ -1,11 +1,9 @@ (define-module (scm ascii-script) - :export (as-output-expression) - :no-backtrace ) (define this-module (current-module)) -(define (as-output-expression expr port) +(define-public (as-output-expression expr port) (display (eval expr this-module) port) ) diff --git a/scm/lily.scm b/scm/lily.scm index 8922fef0ea..5f10a15e7c 100644 --- a/scm/lily.scm +++ b/scm/lily.scm @@ -137,8 +137,6 @@ )) - - (define (find-dumper format ) (let* ((d (assoc format output-alist))) @@ -156,7 +154,6 @@ "sketch.scm" "pdf.scm" "pdftex.scm" - "ascii-script.scm" "c++.scm" "grob-property-description.scm" "translator-property-description.scm" @@ -180,3 +177,4 @@ +1 diff --git a/scm/ps.scm b/scm/ps.scm index f469ec7ac9..6af36d6ab7 100644 --- a/scm/ps.scm +++ b/scm/ps.scm @@ -8,20 +8,27 @@ (define-module (scm ps) - :export (ps-output-expression) - :no-backtrace ) (define this-module (current-module)) -(define (ps-output-expression expr port) - (display (eval expr this-module) port) - ) +(debug-enable 'backtrace) + +(if (or (equal? (minor-version) "4") + (equal? (minor-version) "3.4")) + (define-public (ps-output-expression expr port) + (display (eval-in-module expr this-module) port ) + ) + + (define-public (ps-output-expression expr port) + (display (eval expr this-module) port ) + ) + ) (use-modules (guile) - (guile-user)) +) diff --git a/scm/pysk.scm b/scm/pysk.scm index e999e00d25..e62575af53 100644 --- a/scm/pysk.scm +++ b/scm/pysk.scm @@ -8,19 +8,16 @@ (define-module (scm pysk) - :export (pysk-output-expression) - :no-backtrace ) (use-modules (scm ps) (ice-9 regex) (ice-9 string-fun) - (guile-user) (guile) ) (define this-module (current-module)) -(define (pysk-output-expression expr port) +(define-public (pysk-output-expression expr port) (display (pythonify expr) port ) ) diff --git a/scm/sketch.scm b/scm/sketch.scm index 6a7660dbb7..c5417abeab 100644 --- a/scm/sketch.scm +++ b/scm/sketch.scm @@ -160,9 +160,7 @@ "Fs(20)\n" ;; chars > 128 don't work yet (format #f "txt('\\~o',(" (modulo i 128)) -;; (format #f "txt('\\~o',(" i) -;; "txt('" (ascii->string i) "',(" -;; "char(" ,(number->string i) ",(" + ;; "char(" ,(number->string i) ",(" (sketch-numbers->string (map mul-scale (list x y))) "))\n")) diff --git a/scm/tex.scm b/scm/tex.scm index 01880f90f6..072ed76ece 100644 --- a/scm/tex.scm +++ b/scm/tex.scm @@ -6,16 +6,12 @@ ;;; Han-Wen Nienhuys -(define-module (scm tex) - :export (tex-output-expression) - :no-backtrace - ) - +(define-module (scm tex) ) +(debug-enable 'backtrace) (use-modules (scm ps) (ice-9 regex) (ice-9 string-fun) (ice-9 format) - (guile-user) (guile) ) @@ -87,7 +83,7 @@ (embedded-ps (list 'bracket arch_angle arch_width arch_height height arch_thick thick))) (define (dashed-slur thick dash l) - (embedded-ps (list 'dashed-slur thick dash l))) + (embedded-ps (list 'dashed-slur thick dash `(quote ,l)))) (define (hairpin thick w sh eh) (embedded-ps (list 'hairpin thick w sh eh)) @@ -129,7 +125,6 @@ "" ) - (define (embedded-ps expr) (let ((os (open-output-string))) @@ -194,7 +189,7 @@ ;; ;; need to do something to make this really safe. ;; -(define (output-tex-string s) +(define-public (output-tex-string s) (if security-paranoia (if use-regex (regexp-substitute/global #f "\\\\" s 'pre "$\\backslash$" 'post) @@ -267,6 +262,16 @@ ; no-origin not yet supported by Xdvi (define (no-origin) "") -(define (tex-output-expression expr port) - (display (eval expr this-module) port ) +(define my-eval-in-module eval) + +(if (or (equal? (minor-version) "4") + (equal? (minor-version) "3.4")) + (begin + (set! my-eval-in-module eval-in-module) + + )) + +(define-public (tex-output-expression expr port) + (display (my-eval-in-module expr this-module) port ) ) + diff --git a/scm/translator-property-description.scm b/scm/translator-property-description.scm index bd7963dbb5..97abc27d8d 100644 --- a/scm/translator-property-description.scm +++ b/scm/translator-property-description.scm @@ -301,7 +301,7 @@ help with debugging large scores.") (translator-property-description 'squashedPosition integer? " Vertical position of squashing for Pitch_squash_engraver.") (translator-property-description 'stavesFound list? "list of all staff-symbols found.") -(translator-property-description 'stanza markup? "Stanza `number' to print at start of a verse. Use in LyricsVoice context.") +(translator-property-description 'stanza string? "Stanza `number' to print at start of a verse. Use in LyricsVoice context.") (translator-property-description 'stemLeftBeamCount integer? " diff --git a/scripts/abc2ly.py b/scripts/abc2ly.py index 23aa46d397..af8cbf877c 100644 --- a/scripts/abc2ly.py +++ b/scripts/abc2ly.py @@ -1269,6 +1269,12 @@ Options: This program converts ABC music files (see http://www.gre.ac.uk/~c.walshaw/abc2mtex/abc.txt) To LilyPond input. + + +Report bugs to bug-gnu-music@gnu.org + +Written by Han-Wen Nienhuys , Laura Conrad +, Roy Rankin """ def print_version (): diff --git a/scripts/etf2ly.py b/scripts/etf2ly.py index f80334bc14..36976017a4 100644 --- a/scripts/etf2ly.py +++ b/scripts/etf2ly.py @@ -1,7 +1,7 @@ #!@PYTHON@ # info mostly taken from looking at files. See also -# http://www.cs.uu.nl/~hanwen/lily-devel/etf.html +# http://lilypond.org/wiki/?EnigmaTransportFormat # This supports # @@ -24,7 +24,7 @@ # * dynamics # * empty measures (eg. twopt03.etf from freenote) # -# + program_name = 'etf2ly' version = '@TOPLEVEL_VERSION@' diff --git a/scripts/lilypond-book.py b/scripts/lilypond-book.py index 1686b60c6c..efd48214a3 100644 --- a/scripts/lilypond-book.py +++ b/scripts/lilypond-book.py @@ -12,6 +12,10 @@ # geometry.sty and article.cls. Give me a hint, and I'll # fix it.) +# +# TODO: magnification support should also work for texinfo -> html: eg. add as option to dvips. +# + # This is was the idea for handling of comments: # Multiline comments, @ignore .. @end ignore is scanned for # in read_doc_file, and the chunks are marked as 'ignore', so @@ -31,6 +35,8 @@ # The the rest of the rexeces are searched for. They don't have to test # if they are on a commented out line. + + import os import stat import string @@ -927,16 +933,6 @@ def process_lilypond_blocks(outname, chunks):#ugh rename return newchunks -def find_eps_dims (match): - "Fill in dimensions of EPS files." - - fn =match.group (1) - dims = bounding_box_dimensions (fn) - if g_outdir: - fn = os.path.join(g_outdir, fn) - - return '%ipt' % dims[0] - def system (cmd): sys.stderr.write ("invoking `%s'\n" % cmd) @@ -955,19 +951,20 @@ def get_bbox (filename): if m: gr = map (string.atoi, m.groups ()) break - + return gr def make_pixmap (name): bbox = get_bbox (name + '.eps') - + margin = 3 fo = open (name + '.trans.eps' , 'w') - fo.write ('%d %d translate\n' % (-bbox[0], -bbox[1])) + fo.write ('%d %d translate\n' % (-bbox[0]+margin, -bbox[1]+margin)) fo.close () res = 90 - x = (bbox[2] - bbox[0]) * res / 72. - y = (bbox[3] - bbox[1]) * res / 72. + + x = (2* margin + bbox[2] - bbox[0]) * res / 72. + y = (2* margin + bbox[3] - bbox[1]) * res / 72. cmd = r"""gs -g%dx%d -sDEVICE=pgm -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -q -sOutputFile=- -r%d -dNOPAUSE %s %s -c quit | pnmtopng > %s""" @@ -1187,14 +1184,31 @@ def check_texidoc (chunks): n.append (c) return n + +## what's this? Docme --hwn +## def fix_epswidth (chunks): newchunks = [] for c in chunks: - if c[0] == 'lilypond' and 'eps' in c[2]: - body = re.sub (r"""\\lilypondepswidth{(.*?)}""", find_eps_dims, c[1]) - newchunks.append(('lilypond', body, c[2], c[3], c[4])) - else: + if c[0] <> 'lilypond' or 'eps' not in c[2]: newchunks.append (c) + continue + + mag = 1.0 + for o in c[2]: + m = re.match ('magnification=([0-9.]+)', o) + if m: + mag = string.atof (m.group (1)) + + def replace_eps_dim (match, lmag = mag): + filename = match.group (1) + dims = bounding_box_dimensions (filename) + + return '%fpt' % (dims[0] *lmag) + + body = re.sub (r"""\\lilypondepswidth{(.*?)}""", replace_eps_dim, c[1]) + newchunks.append(('lilypond', body, c[2], c[3], c[4])) + return newchunks diff --git a/scripts/ly2dvi.py b/scripts/ly2dvi.py index c8ac68ce3c..22a9a2245b 100644 --- a/scripts/ly2dvi.py +++ b/scripts/ly2dvi.py @@ -414,7 +414,7 @@ def run_lilypond (files, outbase, dep_prefix): if dep_prefix: opts = opts + ' --dep-prefix=%s' % dep_prefix - fs = '"' + string.join (files, '" "') + '"' + fs = string.join (files) if not verbose_p: # cmd = cmd + ' 1> /dev/null 2> /dev/null' @@ -613,7 +613,6 @@ None f.write (s) f.close () - # FIXME: howto escape spaces in file names? cmd = 'latex \\\\nonstopmode \\\\input %s' % latex_fn if not verbose_p: @@ -639,7 +638,7 @@ None. if extra['orientation'] and extra['orientation'][0] == 'landscape': opts = opts + ' -tlandscape' - cmd = 'dvips "%s" -o"%s" "%s"' % (opts, outbase + '.ps', outbase + '.dvi') + cmd = 'dvips %s -o%s %s' % (opts, outbase + '.ps', outbase + '.dvi') if not verbose_p: progress ( _("Running %s...") % 'dvips') diff --git a/scripts/update-lily.py b/scripts/update-lily.py index 76d9068fe5..3ff0442234 100644 --- a/scripts/update-lily.py +++ b/scripts/update-lily.py @@ -31,19 +31,7 @@ import string import sys import __main__ - -# if set, LILYPONDPREFIX must take prevalence -# if datadir is not set, we're doing a build and LILYPONDPREFIX -datadir = '@datadir@' -if os.environ.has_key ('LILYPONDPREFIX') \ - or '@datadir@' == '@' + 'datadir' + '@': - datadir = os.environ['LILYPONDPREFIX'] -else: - datadir = '@datadir@' - -sys.path.append (os.path.join (datadir, 'python')) -sys.path.append (os.path.join (datadir, 'python/out')) - +package_name = 'lilypond' program_name = 'build-lily' program_version = '@TOPLEVEL_VERSION@' @@ -105,7 +93,182 @@ option_definitions = [ ('', 'w', 'warranty', _ ("show warranty and copyright")), ] -from lilylib import * + +################################################################ +# lilylib.py -- options and stuff +# +# source file of the GNU LilyPond music typesetter + +import os + +try: + import gettext + gettext.bindtextdomain ('lilypond', localedir) + gettext.textdomain ('lilypond') + _ = gettext.gettext +except: + def _ (s): + return s + +if program_version == '@' + 'TOPLEVEL_VERSION' + '@': + program_version = '1.5.17' + +def identify (): + sys.stdout.write ('%s (GNU LilyPond) %s\n' % (program_name, program_version)) + +def warranty (): + identify () + sys.stdout.write ('\n') + sys.stdout.write (_ ('Copyright (c) %s by' % ' 2001')) + sys.stdout.write ('\n') + sys.stdout.write (' Han-Wen Nienhuys') + sys.stdout.write (' Jan Nieuwenhuizen') + sys.stdout.write ('\n') + sys.stdout.write (_ (r''' +Distributed under terms of the GNU General Public License. It comes with +NO WARRANTY.''')) + sys.stdout.write ('\n') + +def progress (s): + errorport.write (s + '\n') + +def warning (s): + progress (_ ("warning: ") + s) + +def error (s): + + + '''Report the error S. Exit by raising an exception. Please + do not abuse by trying to catch this error. If you do not want + a stack trace, write to the output directly. + + RETURN VALUE + + None + + ''' + + progress (_ ("error: ") + s) + raise _ ("Exiting ... ") + +def getopt_args (opts): + '''Construct arguments (LONG, SHORT) for getopt from list of options.''' + short = '' + long = [] + for o in opts: + if o[1]: + short = short + o[1] + if o[0]: + short = short + ':' + if o[2]: + l = o[2] + if o[0]: + l = l + '=' + long.append (l) + return (short, long) + +def option_help_str (o): + '''Transform one option description (4-tuple ) into neatly formatted string''' + sh = ' ' + if o[1]: + sh = '-%s' % o[1] + + sep = ' ' + if o[1] and o[2]: + sep = ',' + + long = '' + if o[2]: + long= '--%s' % o[2] + + arg = '' + if o[0]: + if o[2]: + arg = '=' + arg = arg + o[0] + return ' ' + sh + sep + long + arg + + +def options_help_str (opts): + '''Convert a list of options into a neatly formatted string''' + w = 0 + strs =[] + helps = [] + + for o in opts: + s = option_help_str (o) + strs.append ((s, o[3])) + if len (s) > w: + w = len (s) + + str = '' + for s in strs: + str = str + '%s%s%s\n' % (s[0], ' ' * (w - len(s[0]) + 3), s[1]) + return str + +def help (): + ls = [(_ ("Usage: %s [OPTION]... FILE") % program_name), + ('\n\n'), + (help_summary), + ('\n\n'), + (_ ("Options:")), + ('\n'), + (options_help_str (option_definitions)), + ('\n\n'), + (_ ("Report bugs to %s") % 'bug-lilypond@gnu.org'), + ('\n')] + map (sys.stdout.write, ls) + +def setup_temp (): + """ + Create a temporary directory, and return its name. + """ + global temp_dir + if not keep_temp_dir_p: + temp_dir = tempfile.mktemp (program_name) + try: + os.mkdir (temp_dir, 0777) + except OSError: + pass + + return temp_dir + + +def system (cmd, ignore_error = 0): + """Run CMD. If IGNORE_ERROR is set, don't complain when CMD returns non zero. + + RETURN VALUE + + Exit status of CMD + """ + + if verbose_p: + progress (_ ("Invoking `%s\'") % cmd) + st = os.system (cmd) + if st: + name = re.match ('[ \t]*([^ \t]*)', cmd).group (1) + msg = name + ': ' + _ ("command exited with value %d") % st + if ignore_error: + warning (msg + ' ' + _ ("(ignored)") + ' ') + else: + error (msg) + + return st + + +def cleanup_temp (): + if not keep_temp_dir_p: + if verbose_p: + progress (_ ("Cleaning %s...") % temp_dir) + shutil.rmtree (temp_dir) + + +def strip_extension (f, ext): + (p, e) = os.path.splitext (f) + if e == ext: + e = '' + return p + e + notify = 0 @@ -274,6 +437,7 @@ for opt in options: pass elif o == '--help' or o == '-h': help () + sys.exit (0) elif o == '--buid-root' or o == '-b': build_root = a elif o == '--command' or o == '-c': diff --git a/stepmake/stepmake/metafont-rules.make b/stepmake/stepmake/metafont-rules.make index b8d78cf76f..eb2e55b1ab 100644 --- a/stepmake/stepmake/metafont-rules.make +++ b/stepmake/stepmake/metafont-rules.make @@ -33,6 +33,12 @@ $(outdir)/%.pfb: + + +$(outdir)/%.pfb: + pktrace $(basename $(@F)) + mv $(basename $(@F)).pfb $(outdir) + #%.afm: # $(SHELL) $(depth)/buildscripts/tfmtoafm.sh $(shell basename $@ .afm) # mv $@ $@.in -- 2.39.2