Patchy email

2012-07-30 Thread lilypond-auto
04:35:09 (UTC) Begin LilyPond compile, previous commit at   
1c980a9906a7ea01b9f99487e75580f7232f2491

04:35:11 Merged staging, now at:1c980a9906a7ea01b9f99487e75580f7232f2491

04:35:13Success:./autogen.sh --noconfigure

04:35:38Success:../configure --disable-optimising

04:35:58Success:nice make clean 

04:42:46Success:nice make -j2 CPU_COUNT=2 
"WEB_TARGETS=online offline"

05:02:14Success:nice make test -j2 CPU_COUNT=2 
"WEB_TARGETS=online offline"

07:00:18 *** FAILED BUILD ***

nice make doc -j2 CPU_COUNT=2 "WEB_TARGETS=online offline"

Previous good commit:   

Current broken commit:  1c980a9906a7ea01b9f99487e75580f7232f2491

07:00:18 *** FAILED STEP ***

merge from staging

Failed runner: nice make doc -j2 CPU_COUNT=2 "WEB_TARGETS=online 
offline"

See the log file 
log-staging-nice-make-doc--j2-CPU_COUNT=2-"WEB_TARGETS=online-offline".txt


___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Set indent based on instrument name (issue 6457049)

2012-07-30 Thread Graham Percival
On Mon, Jul 30, 2012 at 11:44:28PM +0100, Bernard Hurley wrote:
> On Mon, Jul 30, 2012 at 10:14:37PM +0100, Phil Holmes wrote:
> > - Original Message - From: 
> >> lily/output-def.cc:38: Real long_name_len = 0.0;
> >> could these be class member variables instead of global variables?
> >
> > I don't believe so.  I'd be happy to be corrected by someone who 
> > understands this better than I do, but my understanding of c++ (which I 
> > guess at based on c#) says that, in order to access a class member 
> > variable, you need to have an instantiation of the class. 

That is true.

> In C++ variables can be declared static. If this is done all instances of
> the class share the same instance of the variable and it can exist
> even if the class has no instances see:

Yes, that's also true.

Let me rephrase my concern: in C++-land, having a global variable
(including static variables) are viewed upon like picking one's
nose.  If there is absolutely no other way to achieve one's goal,
it could be tolerated.  But I would be very surprised if this
could not be implemented without global variables, so I think
another draft of the patch will be necessary.

Hopefully somebody familiar with lilypond internals can skim the
patch (it's quite small) and give a suggestion as to how to avoid
the global variables.

- Graham

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Set indent based on instrument name (issue 6457049)

2012-07-30 Thread Bernard Hurley
On Mon, Jul 30, 2012 at 10:14:37PM +0100, Phil Holmes wrote:
> - Original Message - From: 
>> lily/output-def.cc:38: Real long_name_len = 0.0;
>> could these be class member variables instead of global variables?
>
> I don't believe so.  I'd be happy to be corrected by someone who 
> understands this better than I do, but my understanding of c++ (which I 
> guess at based on c#) says that, in order to access a class member 
> variable, you need to have an instantiation of the class. 

In C++ variables can be declared static. If this is done all instances of
the class share the same instance of the variable and it can exist
even if the class has no instances see:

http://www.learncpp.com/cpp-tutorial/811-static-member-variables/

Bernard

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Patchy email

2012-07-30 Thread lilypond-auto
22:17:41 (UTC) Begin LilyPond compile, previous commit at   
1c980a9906a7ea01b9f99487e75580f7232f2491

22:17:44 Merged staging, now at:1c980a9906a7ea01b9f99487e75580f7232f2491

22:17:46Success:./autogen.sh --noconfigure

22:18:21Success:../configure --disable-optimising

22:18:22 *** FAILED BUILD ***

nice make clean -j2 CPU_COUNT=2 WEB_TARGETS="online offline"

Previous good commit:   

Current broken commit:  1c980a9906a7ea01b9f99487e75580f7232f2491

22:18:22 *** FAILED STEP ***

merge from staging

Failed runner: nice make clean -j2 CPU_COUNT=2 WEB_TARGETS="online 
offline"

See the log file 
log-staging-nice-make-clean--j2-CPU_COUNT=2-WEB_TARGETS="online-offline".txt

22:22:13 (UTC) Begin LilyPond compile, previous commit at   
1c980a9906a7ea01b9f99487e75580f7232f2491

22:22:16 Merged staging, now at:1c980a9906a7ea01b9f99487e75580f7232f2491

22:22:18Success:./autogen.sh --noconfigure

22:22:43Success:../configure --disable-optimising

22:22:43 *** FAILED BUILD ***

nice make clean -j2 CPU_COUNT=2 WEB_TARGETS=online\ offline

Previous good commit:   

Current broken commit:  1c980a9906a7ea01b9f99487e75580f7232f2491

22:22:43 *** FAILED STEP ***

merge from staging

Failed runner: nice make clean -j2 CPU_COUNT=2 WEB_TARGETS=online\ 
offline

See the log file 
log-staging-nice-make-clean--j2-CPU_COUNT=2-WEB_TARGETS=online\-offline.txt

22:32:48 (UTC) Begin LilyPond compile, previous commit at   
1c980a9906a7ea01b9f99487e75580f7232f2491

22:32:50 Merged staging, now at:1c980a9906a7ea01b9f99487e75580f7232f2491

22:32:52Success:./autogen.sh --noconfigure

22:33:17Success:../configure --disable-optimising

22:33:37Success:nice make clean -j2 CPU_COUNT=2 
"WEB_TARGETS=online offline"

22:35:09 (UTC) Begin LilyPond compile, previous commit at   
1c980a9906a7ea01b9f99487e75580f7232f2491

22:35:10 *** FAILED STEP ***

merge from staging

Command 'git branch test-master-lock origin/master' returned non-zero 
exit status 128

fatal: A branch named 'test-master-lock' already exists.


___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Patchy email

2012-07-30 Thread lilypond-auto
22:17:41 (UTC) Begin LilyPond compile, previous commit at   
1c980a9906a7ea01b9f99487e75580f7232f2491

22:17:44 Merged staging, now at:1c980a9906a7ea01b9f99487e75580f7232f2491

22:17:46Success:./autogen.sh --noconfigure

22:18:21Success:../configure --disable-optimising

22:18:22 *** FAILED BUILD ***

nice make clean -j2 CPU_COUNT=2 WEB_TARGETS="online offline"

Previous good commit:   

Current broken commit:  1c980a9906a7ea01b9f99487e75580f7232f2491

22:18:22 *** FAILED STEP ***

merge from staging

Failed runner: nice make clean -j2 CPU_COUNT=2 WEB_TARGETS="online 
offline"

See the log file 
log-staging-nice-make-clean--j2-CPU_COUNT=2-WEB_TARGETS="online-offline".txt

22:22:13 (UTC) Begin LilyPond compile, previous commit at   
1c980a9906a7ea01b9f99487e75580f7232f2491

22:22:16 Merged staging, now at:1c980a9906a7ea01b9f99487e75580f7232f2491

22:22:18Success:./autogen.sh --noconfigure

22:22:43Success:../configure --disable-optimising

22:22:43 *** FAILED BUILD ***

nice make clean -j2 CPU_COUNT=2 WEB_TARGETS=online\ offline

Previous good commit:   

Current broken commit:  1c980a9906a7ea01b9f99487e75580f7232f2491

22:22:43 *** FAILED STEP ***

merge from staging

Failed runner: nice make clean -j2 CPU_COUNT=2 WEB_TARGETS=online\ 
offline

See the log file 
log-staging-nice-make-clean--j2-CPU_COUNT=2-WEB_TARGETS=online\-offline.txt

22:32:48 (UTC) Begin LilyPond compile, previous commit at   
1c980a9906a7ea01b9f99487e75580f7232f2491

22:32:50 Merged staging, now at:1c980a9906a7ea01b9f99487e75580f7232f2491

22:32:52Success:./autogen.sh --noconfigure

22:33:17Success:../configure --disable-optimising

22:33:37Success:nice make clean -j2 CPU_COUNT=2 
"WEB_TARGETS=online offline"

22:35:09 (UTC) Begin LilyPond compile, previous commit at   
1c980a9906a7ea01b9f99487e75580f7232f2491

22:35:10 *** FAILED STEP ***

merge from staging

Command 'git branch test-master-lock origin/master' returned non-zero 
exit status 128

fatal: A branch named 'test-master-lock' already exists.

22:35:13 *** FAILED BUILD ***

nice make -j2 CPU_COUNT=2 "WEB_TARGETS=online offline"

Previous good commit:   

Current broken commit:  1c980a9906a7ea01b9f99487e75580f7232f2491

22:35:13 *** FAILED STEP ***

merge from staging

Failed runner: nice make -j2 CPU_COUNT=2 "WEB_TARGETS=online offline"

See the log file 
log-staging-nice-make--j2-CPU_COUNT=2-"WEB_TARGETS=online-offline".txt


___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Patchy email

2012-07-30 Thread lilypond-auto
22:17:41 (UTC) Begin LilyPond compile, previous commit at   
1c980a9906a7ea01b9f99487e75580f7232f2491

22:17:44 Merged staging, now at:1c980a9906a7ea01b9f99487e75580f7232f2491

22:17:46Success:./autogen.sh --noconfigure

22:18:21Success:../configure --disable-optimising

22:18:22 *** FAILED BUILD ***

nice make clean -j2 CPU_COUNT=2 WEB_TARGETS="online offline"

Previous good commit:   

Current broken commit:  1c980a9906a7ea01b9f99487e75580f7232f2491

22:18:22 *** FAILED STEP ***

merge from staging

Failed runner: nice make clean -j2 CPU_COUNT=2 WEB_TARGETS="online 
offline"

See the log file 
log-staging-nice-make-clean--j2-CPU_COUNT=2-WEB_TARGETS="online-offline".txt

22:22:13 (UTC) Begin LilyPond compile, previous commit at   
1c980a9906a7ea01b9f99487e75580f7232f2491

22:22:16 Merged staging, now at:1c980a9906a7ea01b9f99487e75580f7232f2491

22:22:18Success:./autogen.sh --noconfigure

22:22:43Success:../configure --disable-optimising

22:22:43 *** FAILED BUILD ***

nice make clean -j2 CPU_COUNT=2 WEB_TARGETS=online\ offline

Previous good commit:   

Current broken commit:  1c980a9906a7ea01b9f99487e75580f7232f2491

22:22:43 *** FAILED STEP ***

merge from staging

Failed runner: nice make clean -j2 CPU_COUNT=2 WEB_TARGETS=online\ 
offline

See the log file 
log-staging-nice-make-clean--j2-CPU_COUNT=2-WEB_TARGETS=online\-offline.txt


___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Patchy email

2012-07-30 Thread lilypond-auto
22:17:41 (UTC) Begin LilyPond compile, previous commit at   
1c980a9906a7ea01b9f99487e75580f7232f2491

22:17:44 Merged staging, now at:1c980a9906a7ea01b9f99487e75580f7232f2491

22:17:46Success:./autogen.sh --noconfigure

22:18:21Success:../configure --disable-optimising

22:18:22 *** FAILED BUILD ***

nice make clean -j2 CPU_COUNT=2 WEB_TARGETS="online offline"

Previous good commit:   

Current broken commit:  1c980a9906a7ea01b9f99487e75580f7232f2491

22:18:22 *** FAILED STEP ***

merge from staging

Failed runner: nice make clean -j2 CPU_COUNT=2 WEB_TARGETS="online 
offline"

See the log file 
log-staging-nice-make-clean--j2-CPU_COUNT=2-WEB_TARGETS="online-offline".txt


___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Set indent based on instrument name (issue 6457049)

2012-07-30 Thread Phil Holmes
- Original Message - 
From: 

To: ; ; 
Cc: ; 
Sent: Monday, July 30, 2012 6:54 PM
Subject: Re: Set indent based on instrument name (issue 6457049)



Little nitpicks based on my C++ experience in other projects, with no
knowledge whatsoever of lilypond internals.


http://codereview.appspot.com/6457049/diff/4001/lily/instrument-name-engraver.cc
File lily/instrument-name-engraver.cc (right):

http://codereview.appspot.com/6457049/diff/4001/lily/instrument-name-engraver.cc#newcode111
lily/instrument-name-engraver.cc:111:
Instrument_name_engraver::Get_text_len_from_name (SCM scheme_text)
convention is to use lower-case names for class functions (or methods if
you prefer)

http://codereview.appspot.com/6457049/diff/4001/lily/output-def.cc
File lily/output-def.cc (right):

http://codereview.appspot.com/6457049/diff/4001/lily/output-def.cc#newcode38
lily/output-def.cc:38: Real long_name_len = 0.0;
could these be class member variables instead of global variables?


I don't believe so.  I'd be happy to be corrected by someone who understands 
this better than I do, but my understanding of c++ (which I guess at based 
on c#) says that, in order to access a class member variable, you need to 
have an instantiation of the class.  The problem we have is that the 
knowledge of the instrument name strings is in a different class 
(Instrument_name_engraver).  We need to persist the value of the longest 
instrument name, and pass it to output-def, where the indents are set.  If 
we instantiated an output-def class in Instrument_name_engraver, we would 
lose the instantiation when Instrument_name_engraver dies, so the values 
would not be persisted.  Hence why I ended up with global variables.  The 
one thing I thought about on the way home tonight is that these need to be 
zeroed when we create a new Score, so I need to find out/be told how to do 
that.



... hmm, more generally, I'm not sold on the whole set_inst_name_len
approach.  Is there any way you could just pass an additional argument
to line_dimenstions_int , and determine the data you need from that
function?

http://codereview.appspot.com/6457049/


Not AFAICS.  It currently requires 2 arguments: Output_def *def, int n, and 
there's no way we can satisfy them from Instrument_name_engraver.  I think 
adding an extra function to access the global variables is an effective 
encapsulation of the variable, and works for me.


--
Phil Holmes 



___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: added missing #inlude for use with g++ 4.7 (issue 6434048)

2012-07-30 Thread mike

LGTM - I'll push to staging if there are no objections in 24h.

http://codereview.appspot.com/6434048/

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Doc: clarify \header variables (2640) (issue 6456047)

2012-07-30 Thread tdanielsmusic

On 2012/07/30 14:28:35, Graham Percival wrote:


... concerned that we discuss bookTitleMarkup and
scoreTitleMarkup.


These are discussed in Custom layout for title blocks
a little further down.  But I see they are not indexed,
and a back reference there to this section is not well
worded.  I'll amend that and post a new patch.

Trevor


http://codereview.appspot.com/6456047/

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


GOP2-3: GLISS (update 1)

2012-07-30 Thread Graham Percival
There seems to be fairly broad support for _some_ form of
standardization.  Here's an update of the proposal along those
lines, along with brief responses to common concerns, in order to
let people just joining the discussion to skip the past 50 emails.

Better formatting here:
http://lilypond.org/~graham/gop/gop_4.html

** Summary

Let’s start stabilizing portions of the LilyPond input syntax. We
will guarantee that selected elements of the syntax will not
change (even with convert-ly) during the 3.x releases. This will
be a slow process, and the first phase (2012) will not even cover
the entire “single staff notation” section in the tutorial.


** Motivation

Some “computer languages” are fairly stable. A TeX or C++ program
written 10 years ago will probably still compile with no
modifications (notwithstanding the g++ 4.3 header and namespace
changes). The same is not true of LilyPond; even after using
convert-ly, there are still bits that require manual updating.

Given that, LilyPond is not suitable as an archival format for
music. It can produce a great pdf when you first write the file,
but the .ly files require regular maintenance if you want them to
compile in the latest stable version of lilypond. This is a
problem for projects such as mutopia – a large fraction of their
.ly files don’t compile with current lilypond. That means that
they can’t benefit from recent bugfixes; users wanting the sheet
music in a different size (say, printing a choral score as an A5
booklet) must delve into the ly code and make manual changes.

A stable input syntax should also make it easier to write
converters to/from lilypond, and should also make it easier to
write GUIs for lilypond. Currently, any program which exports
lilypond code needs to support multiple versions (e.g., 2.12 vs.
2.16). Hopefully making it easier to output lilypond code will
lead to more/better programs which do this, either in terms of
converting from alternate formats into lilypond, or in terms of
GUIs calling lilypond as the backend.

On a personal note, this is one of the biggest reasons I’ve given
up on using lilypond personally. From 2001 to 2004 I got a minor
in music composition. I carefully kept all my .ly files but
foolishly did not preserve the pdfs. And now, 10 years later, I’m
left with a bunch of music that I cannot generate sheet music for.
It’s true that I could dig out old lilypond binaries to process
the ly files (and I’ll probably tdo that at some point), but it
would be much nicer if I could benefit from the past ten years of
bugfixes in lilypond. Manually updating the .ly files would take
hours or days; I’ve started this process a few times but always
lost interest after a few files, since there’s no guarantee that I
wouldn’t need to go through the same process in another few years.


** Why disallow convert-ly?

  -  it forces us to take the process seriously by removing the
"safety net". Any poor decisions from the process will be
enthroned in the syntax for years to come[1]. Hopefully this will
make us proceed cautiously, take a more serious look at the syntax
proposals for potential problems, etc.
  -  it signals to other projects that we’re serious about this.
This makes tasks such as writing importers/exporters to/from
lilypond much less undesirable. It also might help people doing
musicology (or music theory) research with lilypond files.
  -  it makes lilypond more suited to being an "archival" format
(or at least less unsuited). convert-ly only converts files in a
forward direction. Granted, there aren’t many instances where
somebody might have a corpus of music they want to render in both
lilypond 3.0 and 3.2, but it’s not impossible. For example,
suppose there was a team of a dozen Russian musicologists
archiving folk tunes, but lilypond 3.2 doesn’t work on OSX 11.4
because Apple broke their own API again. It would be nice if the
team could share lilypond files between lilypond 3.0 and 3.2.
(assuming that there were no special tweaks happening – i.e. the
team was first getting the notes and rhythms written down, and are
not planning to do a great deal of tweaking). 


** Will this help the parser?

Straightening out the parser is going to lead to some breakage in
complicated and/or badly written scores. That may lead to some
understandable frustration from some users, but if we’re running
GLISS at the same time, that gives them some hope that things will
settle down. Also, simply discussing the notation we wish to
support will give rise to questions about precisly what the
current system already supports, and can clarify our thoughts on
it.


** Not necessarily any changes

GLISS will not necessarily involve any change of notation; in
fact, the first portion of “syntax stabilization” could just end
up approving the existing syntax exactly as it stands. I think we
should discuss each notation element separately without simply
rubber-stamping the existing syntax. If there are any changes in
the basic notation, then 

Re: GOP2-3 - GLISS or not

2012-07-30 Thread David Kastrup
Graham Percival  writes:

> In general, yes.  But some aspects of our syntax haven't been
> around for a long time -- footnotes, woodwind fingering, compound
> meters, etc.  Do we have the best syntax for those?  I mean,
> maybe David can figure out a way to allow us to write
>   \compoundMeter (3+2)/8
> or simply
>   \time (3+2)/8
> instead of
>   \compoundMeter #(3 2 8)

I'd have done so already, but \time takes an optional beatstructure
argument that is indistinguishable from a compound meter, being a number
list.

> Other than indirectly possibly motivating people to work on
> converters and GUIs from lilypond code, I don't see GLISS as
> adding new features to lilypond at all.  Rather, I'm expecting
> that new development continues as before; after some syntax has
> been around for long enough that we're confident that it's good,
> we declare it as "stable" so that users and programmers can rely
> on it.

Longevity is not a measure for quality.  In particular when we are
talking undocumented language quirks that are not likely to have been
known or exercised.

Documenting is a good litmus test: if writing documentation for some
peculiarity makes your stomach turn, chances are that declaring it as
part of a "stable" set is not doing anybody a favor.

>> * dramatically simplify our parser/lexer code in a way that brings
>> future rewards.
>
> David is working on this.

Somewhat backwards: I am trying to bring future rewards, and when our
current syntax throws a spanner in my works, I try arguing for change by
figuring out the sneakiest way to streamline it.

> Some of his changes will break user code, and some users will be upset
> by this.  I'm trying to make users feel better by phrasing it as a
> "give and take" situation.  Yes, some things will break, but other
> things will have a guarantee of stability -- and the area of stability
> will increase over time.

LilyPond has quite a few areas where the underlying design is of
"poke-with-a-stick-until-it-does-one-job" quality, drive-by coding.
There is little won to "stabilize" on random stuff that is going to make
life harder afterwards and that probably nobody understands or uses
extensively.

>> * dramatically expand our user-base
>
> Syntax stability can't hurt converts and GUIs.  I hope that GLISS
> can indirectly increase our user-base by making it easier for
> people to convert music into lilypond.

And have a good subset of LilyPond they can expect to convert back.

-- 
David Kastrup


___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Set indent based on instrument name (issue 6457049)

2012-07-30 Thread graham

Little nitpicks based on my C++ experience in other projects, with no
knowledge whatsoever of lilypond internals.


http://codereview.appspot.com/6457049/diff/4001/lily/instrument-name-engraver.cc
File lily/instrument-name-engraver.cc (right):

http://codereview.appspot.com/6457049/diff/4001/lily/instrument-name-engraver.cc#newcode111
lily/instrument-name-engraver.cc:111:
Instrument_name_engraver::Get_text_len_from_name (SCM scheme_text)
convention is to use lower-case names for class functions (or methods if
you prefer)

http://codereview.appspot.com/6457049/diff/4001/lily/output-def.cc
File lily/output-def.cc (right):

http://codereview.appspot.com/6457049/diff/4001/lily/output-def.cc#newcode38
lily/output-def.cc:38: Real long_name_len = 0.0;
could these be class member variables instead of global variables?

... hmm, more generally, I'm not sold on the whole set_inst_name_len
approach.  Is there any way you could just pass an additional argument
to line_dimenstions_int , and determine the data you need from that
function?

http://codereview.appspot.com/6457049/

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Set indent based on instrument name (issue 6457049)

2012-07-30 Thread PhilEHolmes

Please review.

http://codereview.appspot.com/6457049/

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: GOP2-3 - GLISS or not

2012-07-30 Thread Graham Percival
On Fri, Jul 27, 2012 at 12:56:12PM -0300, Han-Wen Nienhuys wrote:
> On Tue, Jul 24, 2012 at 6:09 AM, Graham Percival
>  wrote:
> > Let’s decide whether to try to stabilize the syntax or not. What
> > type of project do we want LilyPond to be? What kinds of
> > guarantees (or at least firm intentions) do we want to give to
> > users with respect to lilypond 2 or 5 years from now being able to
> > read their current ly files?
> 
> I think Lily is way past the point for us to decide that the language
> needs to be changed in any major way: syntax is not what stops people
> from using lilypond, and changing it in notable ways will only drive
> people away from Lily.

If we're not going to change a piece of syntax, then why not
inform users of that fact so that they can rely on it being the
same?  At the moment we have something like a "de facto" standard
-- if somebody writes a GUI which exports lilypond 2.12 code, then
it will probably work in lilypond 2.16.  Unless it doesn't, in
which case convert-ly will fix it.  Unless it doesn't, in which
case the GUI fails and the user needs to manually edit the
exported .ly files and/or file a bug with the GUI project.  Of
course, then the GUI front-end needs to either support multiple
.ly backends (i.e. "output to lilypond 2.12", "output to lilypond
2.16").  Or else it could drop support for lilypond 2.12 and only
output for lilypond 2.16.

Regardless of GLISS, we already *are* changing the format in
non-convert-ly ways.  Just last week, Keith found an example from
mutopia that failed to compile after a proposed patch was applied.
Now, I still support making that change, but I think we should
give users (and programmers of projects which convert or export to
lilypond) some hope that simple music won't be changed.

I'm not saying that GLISS will necessarily involve any change of
notation.  I think we should discuss each notation element
separately, and we should certainly consider whether any
disadvantages of the current notation outweigh the pain of
changing.  Maybe we'll decide that it's not worth making any
changes at all, so GLISS really will just be "input syntax
*stabilization*".

> We've had this problem for many years in the 1998-2003 period, when it
> was a usable but limited program, and people had to re-tweak their .ly
> files every few months because we had to get out of a corner we
> painted ourselves into.

Right.  I was good friends with the guy who tried to maintain the
rosegarden lilypond export when we were doing 1.6 to 1.8.  I think
that was when we changed from simultaneous music being <> to <<>>
?  I can't remember the specifics, but he was pretty frustrated
and in the end gave up.

> Rather than "defining" some stable subset (and then getting into a lot
> of discussion on what that subset should look like), I think we should
> just take the overall decision on intent, that is: what are we trying
> to do? My suggestion is:
> 
> * big changes: not OK

I agree with this.

> * small changes, especially when they clean up things (I'm thinking of
> the 4. vs 4.0 change David is working on): in principle OK, but the
> upgrade path should either be automatic or cause failure on
> compilation.

I disagree; we're not going to be perfect with any new syntax.  I
think it's worthwhile to introduce new syntax for a year or two,
find out what works and what doesn't, and fix it if necessary.
Just look at all the iterations that footnotes have gone through!

> * small changes that do not fall in the latter should be done over two
> stable releases. First, you make the old syntax trigger compile
> failure, and only the 2nd stable release you introduce a new
> interpretation.

That requires a fair amount of programmer effort to add the extra
error checks and remove them later.

> > ** Stability or not?
> >
> > Stabilizing a language is a tricky process. If you do it too
> > early, then you’re stuck with whatever mistakes or poor design
> > decisions.
> 
> LilyPond has been around for 15 years, and its basic syntax for 9
> years. It would be weird to suggest that we'd be stabilizing to early.

In general, yes.  But some aspects of our syntax haven't been
around for a long time -- footnotes, woodwind fingering, compound
meters, etc.  Do we have the best syntax for those?  I mean,
maybe David can figure out a way to allow us to write
  \compoundMeter (3+2)/8
or simply
  \time (3+2)/8
instead of
  \compoundMeter #(3 2 8)


> > and then we guarantee that this file will compile, completely
> > unmodified (no convert-ly allowed), for every lilypond 3.x
> > version. This seem like a really small step, but I really don’t
> > think that we can overestimate how much time, energy, and
> > arguments this will require.
> 
> I think this reasoning is red herring. Arguments take as much energy
> as the participants want to invest in it. If you spend too much time
> on it, stop writing replies to discussions.

If people declared somebody as the ultimate dictator of input
syntax, the

Re: Issue 1650: merge multiple header specifications. (issue 6445053)

2012-07-30 Thread Graham Percival
On Mon, Jul 30, 2012 at 02:43:46PM +, d...@gnu.org wrote:
> "Incorrect title (from book)"
> "Correct title (from bookpart)"
> and similar.  That way, it is easier to see whether the results are as
> expected.

sure, that sounds good.

- Graham

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Issue 1650: merge multiple header specifications. (issue 6445053)

2012-07-30 Thread reinhold . kainhofer

LGTM, seems to work correctly on all my (reg)tests.

I actually like David's idea of changing the header field values to
include correctness information. Still I like comments inside sample
code to make the reasons for a particular block clearer.


http://codereview.appspot.com/6445053/

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Fwd: Using MSH Paris Nord server

2012-07-30 Thread David Kastrup
John Mandereau  writes:

> 2012/7/30 Graham Percival :
>> I'm not convinced that this is an advantage.  I'd rather have one
>> central place to look for patches and their status (currently
>> google code, filtered by "has:Patch" and sorted based on patch
>> status[1]).  If "not bug fixes" patches aren't listed in the same
>> place as "bug fix" patches, then we'll have two websites to check
>> and keep up-to-date.
>
> I have never meant this.  I meant that if we decide to adopt Gerrit,
> then *all* pending patches will be on Gerrit, but patches that don't
> come from bug reports on Google Code tracker needn't be added there.
>
>
>> In short: we already have a global eye on submitted patches,
>> provided that people use git-cl.
>
> Gerrit can provide this as well, and might offer a better global eye
> than a generic issue tracker, be it an excellent one like Google Code.

There is no point arguing this.  We can't do a reasonable side-by-side
comparison and/or transition if we don't work with the same frontend.

The decision to change the frontend would be a rather invasive one, and
one can't use more than one frontend in parallel since the point of the
frontend is to provide a _complete_ overview over existing issues.

> We certainly agree on this as long as we use Rietveld for patches
> review, but if we find a better tool that provides a good frontend for
> patches review that can also integrate with Google code, then there's
> no reason to keep Google code as the frontend.

Again: wrong time to argue this.  One thing after the other.

-- 
David Kastrup


___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Fwd: Using MSH Paris Nord server

2012-07-30 Thread John Mandereau
2012/7/30 Graham Percival :
> I'm not convinced that this is an advantage.  I'd rather have one
> central place to look for patches and their status (currently
> google code, filtered by "has:Patch" and sorted based on patch
> status[1]).  If "not bug fixes" patches aren't listed in the same
> place as "bug fix" patches, then we'll have two websites to check
> and keep up-to-date.

I have never meant this.  I meant that if we decide to adopt Gerrit,
then *all* pending patches will be on Gerrit, but patches that don't
come from bug reports on Google Code tracker needn't be added there.


> In short: we already have a global eye on submitted patches,
> provided that people use git-cl.

Gerrit can provide this as well, and might offer a better global eye
than a generic issue tracker, be it an excellent one like Google Code.


> Don't get me wrong: I have nothing against switching the "backend"
> from rietveld to gerrit.  I just want to keep the google code
> "frontend".

We certainly agree on this as long as we use Rietveld for patches
review, but if we find a better tool that provides a good frontend for
patches review that can also integrate with Google code, then there's
no reason to keep Google code as the frontend.


> Ok.  I just want to emphasize that you could easily spend 20 hours
> setting this up, but then have the response be "no, we prefer the
> old system".

I've already evaluated this, so I don't mind :-)

John

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Issue 1650: merge multiple header specifications. (issue 6445053)

2012-07-30 Thread dak

Reviewers: Graham Percival,

Message:
On 2012/07/30 14:35:05, Graham Percival wrote:

LGTM, and I really like the comments in the regtests.


Not me who can claim credit.


In a few instances they
were slightly unclear, though.


I did not even bother looking at them.  You'll probably tear your hairs
out, but I lean towards scrapping the comments mostly, and instead
augment the title texts to things like
"Incorrect title (from book)"
"Correct title (from bookpart)"
and similar.  That way, it is easier to see whether the results are as
expected.

Description:
Issue 1650: merge multiple header specifications.

Books get initialized from $defaultheader, this is what toplevel \header
will set, and scores and bookparts are initialized empty so that they
will end up combined with their respective (possibly implicit) books.

Please review this at http://codereview.appspot.com/6445053/

Affected files:
  A input/regression/header-book-multiple.ly
  A input/regression/header-book-multiplescores.ly
  A input/regression/header-bookpart-multiple.ly
  A input/regression/header-score-multiple.ly
  A input/regression/header-toplevel-multiple.ly
  M lily/parser.yy



___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Fwd: Using MSH Paris Nord server

2012-07-30 Thread David Kastrup
Reinhold Kainhofer  writes:

> On 30/07/2012 16:21, Graham Percival wrote:
>> oh, logins just occurred to me.  Can gerrit let people log in with
>> their google accounts (IIRC there's an api for that), or would we
>> all need to make new accounts on the gerrit server?
>
>
> IIRC, gerrit works with any openID service...
> A while ago I set up gerrit on my server to evaluate it (I even posted
> it here), but I have meanwhile removed the installation again, as it
> seemed no one was really interested.

Without test-patchy understanding Gerrit URLs, there is really no way in
which one can actually test this in connection with LilyPond
development.  In addition I would have needed a login IIRC.

I agree with Graham that a transition is not feasible unless we can
continue working with the Google Code frontend.  A frontend move would
be much more of a non-reversible change than supporting another backend.

-- 
David Kastrup


___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Issue 1650: merge multiple header specifications. (issue 6445053)

2012-07-30 Thread graham

LGTM, and I really like the comments in the regtests.  In a few
instances they were slightly unclear, though.


http://codereview.appspot.com/6445053/diff/2001/input/regression/header-book-multiple.ly
File input/regression/header-book-multiple.ly (right):

http://codereview.appspot.com/6445053/diff/2001/input/regression/header-book-multiple.ly#newcode14
input/regression/header-book-multiple.ly:14: % This should NOT replace,
but amend the header:
I spent 30 seconds trying to figure out why you wanted the title to be
printed as
  "Title New Title"
before I realized I was misreading the comment.

Could the comment instead be:
  % This should not replace the entire header, but only replace the
'title' field of the previous header.  The subtitle should be unchanged.


similar change below.  Alternately, you could change the field names:
  \header{ title="don't print this title" subtitle="print subtitle" }
  \header{ title="print this title"}
... etc.  (with proper line-breaks because humans like using \n as a
separator even if lilypond doesn't distinguish between types of
whitespace)

http://codereview.appspot.com/6445053/diff/2001/input/regression/header-book-multiplescores.ly
File input/regression/header-book-multiplescores.ly (right):

http://codereview.appspot.com/6445053/diff/2001/input/regression/header-book-multiplescores.ly#newcode23
input/regression/header-book-multiplescores.ly:23: %% Do we have a
title, and is "New Subtitle" the subtitle?
please change to:
  % this should print "new subtitle".
rather than having a question.

http://codereview.appspot.com/6445053/

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: scheme spanner in input/regression/scheme-text-spanner.ly not quote-proof

2012-07-30 Thread David Kastrup
Reinhold Kainhofer  writes:

> On 28/07/2012 07:32, David Kastrup wrote:
>> Reinhold Kainhofer  writes:
>>
>>> The text spanner implemented in scheme (which is also used as a basis
>>> for David's measure counter engraver) seems to work fine in the regtest,
>>> but apparently it is not quote-proof.
>>>
>>> In particular, if you try call \addQuote on some music that contains
>>> \schemeTextSpannerStart or \schemeTextSpannerEnd, then you get the
>>> following warnings and the text spanner is not quoted:
>> Well, scheme-text-spanner changes the \Global context, and quote
>> environments uses the layout definition partCombineListener in
>> ly/declarations-init.ly with an unchanged Global context.
>>
>> Change its Global context similarly, and you should be set.
>
> How can a user, who wants to use e.g. the measure counter engraver,
> change the partCombineListener' s Global context without messing with
> the original lilypond sources?

Uh, in the same manner as he changes the normal Global context?

> Am I missing something?

I don't understand the problem.  You do something like

partCombineListener = \layout {
  \partCombineListener
  \context {
\Global
\grobdefinitions ...
EventClasses = ...
  }
}

> The whole point of scheme engravers and scheme text spanners is that
> users can now also implement things in scheme without messing with the
> lilypond sources...
> If I understand you right, then the user cannot add new grobs in an
> include file without messing with the lilypond sources.

Make no mistake: scheme-text-spanner is a heap of junk messing with
LilyPond internals.  Less so than previously, but still far too much.

So yes: for all practical purposes, the user cannot add new grobs.  What
scheme-text-spanner does is not a user interface.  It is code
duplication and hacking with internals.  You can extend this hackery to
the partCombineListener if you want to.  But scheme-text-spanner does
not in _any_ way constitute a user-accessible mechanism that is
guaranteed not to break either now or in future.

> Would a proper solution be to change the partCombineListener to a
> context mod and construct the real listener when we need it (i.e.
> replace the current (ly:parser-lookup parser 'partCombineListener) by
> the actual creation of the listener from the context in effect when
> add-quotable or recording-group-emulate is called?

I have no clue what you are talking about.  partCombineListener is an
output definition, and I see no problem with it that would be any
different from that of the normal \layout output definition.

-- 
David Kastrup

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Fwd: Using MSH Paris Nord server

2012-07-30 Thread Reinhold Kainhofer
On 30/07/2012 16:21, Graham Percival wrote:
> oh, logins just occurred to me.  Can gerrit let people log in with
> their google accounts (IIRC there's an api for that), or would we
> all need to make new accounts on the gerrit server?


IIRC, gerrit works with any openID service...
A while ago I set up gerrit on my server to evaluate it (I even posted
it here), but I have meanwhile removed the installation again, as it
seemed no one was really interested.

Cheers,
Reinhold

-- 
--
Reinhold Kainhofer, reinh...@kainhofer.com, http://www.kainhofer.com
 * Financial & Actuarial Math., Vienna Univ. of Technology, Austria
 * http://www.fam.tuwien.ac.at/, DVR: 0005886
 * Edition Kainhofer, Music Publisher, http://www.edition-kainhofer.com


___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Doc: Order of engravers within context matters (673) (issue 6448063)

2012-07-30 Thread graham

LGTM, much easier to read now!

http://codereview.appspot.com/6448063/

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Midi: store dynamic information for note-on velocity; issue 1661 (issue 6428075)

2012-07-30 Thread graham

LGTM

http://codereview.appspot.com/6428075/

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Doc: clarify \header variables (2640) (issue 6456047)

2012-07-30 Thread graham


http://codereview.appspot.com/6456047/diff/1/Documentation/notation/input.itely
File Documentation/notation/input.itely (left):

http://codereview.appspot.com/6456047/diff/1/Documentation/notation/input.itely#oldcode645
Documentation/notation/input.itely:645: @code{\header} title block and
@code{scoreTitleMarkup} for individual
I remember Mark Polesky being very concerned that we discuss
bookTitleMarkup and scoreTitleMarkup.  IIRC it's good to know these
names in case you want to change the layout?

Anyway, I agree that these words aren't the most important parts of this
section (so I'm fine with your change to the top of this @node), but we
should probably mention them _somewhere_.  Could you find some to copy
this paragraph to?  or if it's already covered somewhere else in the
docs, then I'm happy to drop my concern.

http://codereview.appspot.com/6456047/

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Issue 2702 in lilypond: Patch: Unify the lexer's idea of words and commands across all modes.

2012-07-30 Thread Bernard Hurley
On Mon, Jul 30, 2012 at 02:57:06PM +0100, Graham Percival wrote:
> 
> ok, but are we stepping in the right direction here?  I mean, if
>   \relative c' {
> \tempo "Allegro" 4. = 60
>   }
> works but
>   \midi {
> \tempo "Allegro" 4. = 60
>   }
> fails, I wouldn't blame anybody for being surprised.
> 

Not only that but software that generates ly files would not want to use 
different formats for the temp in different places.

Bernard


___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Fwd: Using MSH Paris Nord server

2012-07-30 Thread Graham Percival
On Mon, Jul 30, 2012 at 01:48:15PM +0200, John Mandereau wrote:
> From: John Mandereau 
> 2012/7/30 David Kastrup :
> > Here is what I see as the required steps:
-snip steps-
> > At this point of time, it becomes feasible to sensibly test one setup
> > against the other for a typical developer.

Yes.

> However, a Gerrit setup for LilyPond alone will certainly help having
> a global eye on submitted patches, and avoid creating Google Code
> issues for patches that are not bug fixes.

I'm not convinced that this is an advantage.  I'd rather have one
central place to look for patches and their status (currently
google code, filtered by "has:Patch" and sorted based on patch
status[1]).  If "not bug fixes" patches aren't listed in the same
place as "bug fix" patches, then we'll have two websites to check
and keep up-to-date.

In short: we already have a global eye on submitted patches,
provided that people use git-cl.  If they don't use git-cl, then
it doesn't matter whether the "backend" is rietveld or gerrit; the
patch will be lost in limbo on lilypond-devel until some kind
developer steps in.

Don't get me wrong: I have nothing against switching the "backend"
from rietveld to gerrit.  I just want to keep the google code
"frontend".

[1] sorry, icky url:
http://code.google.com/p/lilypond/issues/list?can=2&q=has:Patch&sort=patch

IMO all developers should have this bookmarked.


> > Of course, if we later find that everybody finds Gerrit too cumbersome
> > to use, or if we get serious protests against reviews being even placed
> > there, the work invested up to that point may be wasted.
> 
> Wasting time setting up Gerrit was my concern, but now it's no longer.
>  I'll chime in back when I have done steps a) and b).

Ok.  I just want to emphasize that you could easily spend 20 hours
setting this up, but then have the response be "no, we prefer the
old system".

oh, logins just occurred to me.  Can gerrit let people log in with
their google accounts (IIRC there's an api for that), or would we
all need to make new accounts on the gerrit server?

- Graham

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: scheme spanner in input/regression/scheme-text-spanner.ly not quote-proof

2012-07-30 Thread Reinhold Kainhofer
On 28/07/2012 07:32, David Kastrup wrote:
> Reinhold Kainhofer  writes:
>
>> The text spanner implemented in scheme (which is also used as a basis
>> for David's measure counter engraver) seems to work fine in the regtest,
>> but apparently it is not quote-proof.
>>
>> In particular, if you try call \addQuote on some music that contains
>> \schemeTextSpannerStart or \schemeTextSpannerEnd, then you get the
>> following warnings and the text spanner is not quoted:
> Well, scheme-text-spanner changes the \Global context, and quote
> environments uses the layout definition partCombineListener in
> ly/declarations-init.ly with an unchanged Global context.
>
> Change its Global context similarly, and you should be set.

How can a user, who wants to use e.g. the measure counter engraver,
change the partCombineListener' s Global context without messing with
the original lilypond sources? Am I missing something?
The whole point of scheme engravers and scheme text spanners is that
users can now also implement things in scheme without messing with the
lilypond sources...
If I understand you right, then the user cannot add new grobs in an
include file without messing with the lilypond sources.

Would a proper solution be to change the partCombineListener to a
context mod and construct the real listener when we need it (i.e.
replace the current (ly:parser-lookup parser 'partCombineListener) by
the actual creation of the listener from the context in effect when
add-quotable or recording-group-emulate is called?
However, I don't really have enough knowledge about how to create the
actual listener in scheme and insert a given context mod in scheme...

Cheers,
Reinhold

-- 
--
Reinhold Kainhofer, reinh...@kainhofer.com, http://www.kainhofer.com
 * Financial & Actuarial Math., Vienna Univ. of Technology, Austria
 * http://www.fam.tuwien.ac.at/, DVR: 0005886
 * Edition Kainhofer, Music Publisher, http://www.edition-kainhofer.com


___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Issue 2702 in lilypond: Patch: Unify the lexer's idea of words and commands across all modes.

2012-07-30 Thread David Kastrup
Graham Percival  writes:

> On Mon, Jul 30, 2012 at 03:48:48PM +0200, David Kastrup wrote:
>> Graham Percival  writes:
>> 
>> > Does this affect
>> >
>> > {
>> >   \tempo 4. = 120 
>> >   c2 d
>> >   %\tempo "Adagio" 4. = 43.5
>> >   \tempo "Adagio" 4. = 43
>> >   e4. d8 c2
>> > }
>> >
>> > ?
>> 
>> No.
>
> (aside: do we want to disallow all decimals in metronome markings?
> 43.5 doesn't work.  I'm perfectly fine forbidding them, but some
> contemporary composers might want to give exact values)

#43.5 should work.  I already stated that I would prefer having tokens
not mode dependent, and thus prohibit 4. from really meaning 4.0.
However, we already juggle between 4 (the duration) and 4 (the integer),
so that is basically just one more aggravation, and one could similarly
interpret 4. according to context.

In any way, I consider it a bit tasteless that we have to revert to
Scheme for disambiguating stuff that should be part of the regular
syntax.

>> \tempo syntax is insane.  This is one thing that will eventually have to
>> go.
>
> ok, but are we stepping in the right direction here?  I mean, if
>   \relative c' {
> \tempo "Allegro" 4. = 60
>   }
> works but
>   \midi {
> \tempo "Allegro" 4. = 60
>   }
> fails, I wouldn't blame anybody for being surprised.

We are not "stepping in the right direction".  This is where we already
are.

>> Whitespace is whitespace in LilyPond without further significance,
>> and we are _not_ going to change this against my very firm
>> disapproval.  It would be the death knell for having LilyPond
>> reasonably useful for computer-generated output, like exports from
>> other music software.
>
> I'm not seriously suggesting it, but I'd argue that significant
> whitespace should have an insignificant effect on
> computer-generated output.  I mean, sure it might take an extra
> hour of debugging, but once you've got your exporter adding the
> right number of spaces, it should work, right?

Do you even have an idea what "adding the right number of spaces"
entails?  You can no longer translate data to output in a linear
fashion, since you always have to track your current indentation level.
You can't, say, call a function for outputting an expression, because
you need to know whether you are at the start of line after or before
indentation, or somewhere else in line.

You _can't_ concatenate code and/or splice it in, because you need to
reformat it using the current indentation.

Have you ever written a program generating non-trivial Python?  Or a
pretty-printer?  Much more complex than writing just a printer, and with
an indentation-sensitive language, _everything_ needs to be
pretty-printed, in context.

-- 
David Kastrup

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: added missing #inlude for use with g++ 4.7 (issue 6434048)

2012-07-30 Thread Graham Percival
On Mon, Jul 30, 2012 at 03:50:18PM +0200, David Kastrup wrote:
> gra...@percival-music.ca writes:
> 
> > LGTM, and I think it can be pushed to staging right now.
> 
> Without even asking test-patchy?

Sorry, of course we should ask test-patchy.  I meant after that --
i.e. in this case I think we can skip the 96-hour countdown (since
one countdown already started).

However, if you have any concerns other than test-patchy, then of
course we should wait and have the full countdown for reviews.

- Graham

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Issue 2702 in lilypond: Patch: Unify the lexer's idea of words and commands across all modes.

2012-07-30 Thread Graham Percival
On Mon, Jul 30, 2012 at 03:48:48PM +0200, David Kastrup wrote:
> Graham Percival  writes:
> 
> > Does this affect
> >
> > {
> >   \tempo 4. = 120 
> >   c2 d
> >   %\tempo "Adagio" 4. = 43.5
> >   \tempo "Adagio" 4. = 43
> >   e4. d8 c2
> > }
> >
> > ?
> 
> No.

(aside: do we want to disallow all decimals in metronome markings?
43.5 doesn't work.  I'm perfectly fine forbidding them, but some
contemporary composers might want to give exact values)

> >> \midi { \tempo "Moderato"
> >>   line-width = 100\mm }
> >> 
> >> will not work any more, since
> >> 
> >>   \tempo "Moderato" 4. = 56
> 
> Well, in the Midi block, \tempo "Moderato" is not exactly important.

> > hmm, I'm beginning to appreciated why C uses semicolons.  ;)
> 
> \tempo syntax is insane.  This is one thing that will eventually have to
> go.

ok, but are we stepping in the right direction here?  I mean, if
  \relative c' {
\tempo "Allegro" 4. = 60
  }
works but
  \midi {
\tempo "Allegro" 4. = 60
  }
fails, I wouldn't blame anybody for being surprised.

> Whitespace is whitespace in LilyPond without further significance, and
> we are _not_ going to change this against my very firm disapproval.  It
> would be the death knell for having LilyPond reasonably useful for
> computer-generated output, like exports from other music software.

I'm not seriously suggesting it, but I'd argue that significant
whitespace should have an insignificant effect on
computer-generated output.  I mean, sure it might take an extra
hour of debugging, but once you've got your exporter adding the
right number of spaces, it should work, right?  I think the real
problem would be non-technical users trying to write files,
potentially without a fixed-width font, and getting confused about
7 spaces vs. 8 spaces.

- Graham

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: added missing #inlude for use with g++ 4.7 (issue 6434048)

2012-07-30 Thread David Kastrup
gra...@percival-music.ca writes:

> LGTM, and I think it can be pushed to staging right now.

Without even asking test-patchy?

-- 
David Kastrup


___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: error while running make check (g++ 4.7.0): missing include of unistd.h

2012-07-30 Thread John Mandereau
2012/7/30 Frédéric Bron :
>> I wanted to run regression tests and compare before and after a change.
>> However, I obtained the error given below after make -j8 CPU_COUNT=8 check
>>
>> I suspect this is because I am compiling with gcc/g++ 4.7.0 (coming
>> with Fedora 17) and its release notes say:
>> "Avoid polluting the global namespace and do not include ."
>> we should then include
>>#include 
>>#include 
>> before using getpid and getcwd.
>
> Who can review my patch?
> http://codereview.appspot.com/6434048

To make our life easier with verifying that the build of sources with
your patch passes, we currently use Google Code issues. As Graham
pointed out, I created one manually, but please do so next time, which
should be done if you enter login details in git-cl:

Best,
John

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Issue 2702 in lilypond: Patch: Unify the lexer's idea of words and commands across all modes.

2012-07-30 Thread David Kastrup
Graham Percival  writes:

> On Mon, Jul 30, 2012 at 01:12:44PM +0200, David Kastrup wrote:
>> Graham Percival  writes:
>> > Could I have some examples?  I just don't get this "word"
>> > business.  Is there any syntax which was previously
>> > (theoretically) supported, which this patch breaks?
>> 
>> Here is one thing that can be made to work: we can have music inside of
>> output definitions, but currently it is parsed in "initial" mode.  That
>> means something like
>> 
>> \layout { \tempo 4. = 120 }
>> 
>> will not work and has to be written as
>> 
>> \layout { \tempo 4 . = 120 }
>>
>> since 4. is a real number in "initial" mode.  One way out would be to
>
> -snip explanation-
>
> Does this affect
>
> {
>   \tempo 4. = 120 
>   c2 d
>   %\tempo "Adagio" 4. = 43.5
>   \tempo "Adagio" 4. = 43
>   e4. d8 c2
> }
>
> ?

No.

> I thought that \tempo was something we put with notes, and the
> Notation manual agrees with me.  Your example of \layout{} is
> confusing me.

Uh, right.  This was supposed to be \midi { \tempo ... } for setting the
playback speed.  Sorry for the confusion.

>> switch into "notes" mode temporarily for music.  If we do that,
>> something like
>> 
>> \layout { \tempo "Moderato"
>>   line-width = 100\mm }
>> 
>> will not work any more, since
>> 
>>   \tempo "Moderato" 4. = 56

Well, in the Midi block, \tempo "Moderato" is not exactly important.

> hmm, I'm beginning to appreciated why C uses semicolons.  ;)

\tempo syntax is insane.  This is one thing that will eventually have to
go.

> What about line-breaks?  The combination of "functions" (in the
> generic sense, since I don't know if \tempo is an expression or
> macro or music function or whatever) having an optional number of
> arguments, with a lack of explicit "command is over" symbol,
> surely leads to a huge ton of pain in the parser/lexer.
>
> With my python background, I'd be perfectly happy to have
> significant-whitespace indents, i.e.
>   \tempo "Allegro"
> 4. = 100
>   line-width = 100\mm
>
> however, I acknowledge that it takes about two weeks for python
> beginners to get comfortable with this, so it may scare away
> musicians.

Whitespace is whitespace in LilyPond without further significance, and
we are _not_ going to change this against my very firm disapproval.  It
would be the death knell for having LilyPond reasonably useful for
computer-generated output, like exports from other music software.

> I suppose that another option could be a "line continuation
> character", like \ in bash.  But again, I could easily imagine this
> leading to more confusing syntax for beginners, not less.

No.  And I don't want to throw ';' away by using it as a separator,
either.

-- 
David Kastrup


___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


added missing #inlude for use with g++ 4.7 (issue 6434048)

2012-07-30 Thread graham

LGTM, and I think it can be pushed to staging right now.

http://codereview.appspot.com/6434048/

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: error while running make check (g++ 4.7.0): missing include of unistd.h

2012-07-30 Thread Graham Percival
On Mon, Jul 30, 2012 at 08:50:01AM +0200, Frédéric Bron wrote:
> Who can review my patch?
> http://codereview.appspot.com/6434048

I see that John has just added it to the tracker:
http://code.google.com/p/lilypond/issues/detail?id=2704
so it will now make its way onto our countdown.

- Graham

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Issue 2702 in lilypond: Patch: Unify the lexer's idea of words and commands across all modes.

2012-07-30 Thread Graham Percival
On Mon, Jul 30, 2012 at 01:12:44PM +0200, David Kastrup wrote:
> Graham Percival  writes:
> > Could I have some examples?  I just don't get this "word"
> > business.  Is there any syntax which was previously
> > (theoretically) supported, which this patch breaks?
> 
> Here is one thing that can be made to work: we can have music inside of
> output definitions, but currently it is parsed in "initial" mode.  That
> means something like
> 
> \layout { \tempo 4. = 120 }
> 
> will not work and has to be written as
> 
> \layout { \tempo 4 . = 120 }
>
> since 4. is a real number in "initial" mode.  One way out would be to

-snip explanation-

Does this affect

{
  \tempo 4. = 120 
  c2 d
  %\tempo "Adagio" 4. = 43.5
  \tempo "Adagio" 4. = 43
  e4. d8 c2
}

?  I thought that \tempo was something we put with notes, and the
Notation manual agrees with me.  Your example of \layout{} is
confusing me.

I think it would a real shame if we cannot let people specify a
metronome marking with the normal way of writing rhythms (i.e.
"4.").

> switch into "notes" mode temporarily for music.  If we do that,
> something like
> 
> \layout { \tempo "Moderato"
>   line-width = 100\mm }
> 
> will not work any more, since
> 
>   \tempo "Moderato" 4. = 56

hmm, I'm beginning to appreciated why C uses semicolons.  ;)

What about line-breaks?  The combination of "functions" (in the
generic sense, since I don't know if \tempo is an expression or
macro or music function or whatever) having an optional number of
arguments, with a lack of explicit "command is over" symbol,
surely leads to a huge ton of pain in the parser/lexer.

With my python background, I'd be perfectly happy to have
significant-whitespace indents, i.e.
  \tempo "Allegro"
4. = 100
  line-width = 100\mm

however, I acknowledge that it takes about two weeks for python
beginners to get comfortable with this, so it may scare away
musicians.

I suppose that another option could be a "line continuation
character", like \ in bash.  But again, I could easily imagine
this leading to more confusing syntax for beginners, not less.

- Graham

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Fwd: Patchy's configure flags

2012-07-30 Thread John Mandereau
Sorry for duplicating a message again David, I'm bugged by an email
client I don't use often.


-- Forwarded message --
From: John Mandereau 
Date: 2012/7/30
Subject: Re: Patchy's configure flags
To: David Kastrup 


2012/7/30 David Kastrup :
> The problem is not actually the optimization setting, but the debug
> code.

So, I guess it's fine if I use

CXXFLAGS="-O2 -finline-functions -march=pentium4 -mfpmath=sse"
./configure --disable-optimising

?

Thanks,
John

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Patchy's configure flags

2012-07-30 Thread David Kastrup
John Mandereau  writes:

> I wonder why Patchy has unconditionnally run configure with
> --disable-optimising since last December or so.

Because without that, compilations get run with -DNDEBUG and assertions
are not tested.  Also some other tests (like that for parsed objects
that should be dead) are not being run.

http://code.google.com/p/lilypond/issues/detail?id=1905>

http://code.google.com/p/lilypond/issues/detail?id=1908#c3>

> I guess there used to be issues with optimisation for some GCC
> versions. Could optimisations be enabled again now? Or better, could
> we allow developers who run Patchy tune configure flags?
>
> I'm asking this because I suspect the Pentium 4 at MSH Paris Nord
> could build the docs significantly faster by building LilyPond with
> appropriate GCC flags, instead of building a binary for a generic x86
> processor.

The problem is not actually the optimization setting, but the debug
code.

-- 
David Kastrup


___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Patchy's configure flags

2012-07-30 Thread John Mandereau
I wonder why Patchy has unconditionnally run configure with
--disable-optimising since last December or so.

I guess there used to be issues with optimisation for some GCC
versions. Could optimisations be enabled again now? Or better, could
we allow developers who run Patchy tune configure flags?

I'm asking this because I suspect the Pentium 4 at MSH Paris Nord
could build the docs significantly faster by building LilyPond with
appropriate GCC flags, instead of building a binary for a generic x86
processor.

John

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Fwd: Using MSH Paris Nord server

2012-07-30 Thread John Mandereau
-- Forwarded message --
From: John Mandereau 
Date: 2012/7/30
Subject: Re: Using MSH Paris Nord server
To: David Kastrup 


2012/7/30 David Kastrup :
> Here is what I see as the required steps:
>
> a) get a gerrit server set up
> b) make test-patches.py deal with either Rietveld or Gerrit URLs for
>testing
>
> At this point of time, it becomes feasible to manually create a Gerrit
> review and have it go through our normal processes.
>
> c) make git-cl configurable so that it can optionally create Gerrit
>reviews instead of Rietveld reviews.
>
> At this point of time, it becomes feasible to sensibly test one setup
> against the other for a typical developer.
>
> d) document Gerrit operation of git-cl in the CG
>
> e) deprecate Rietveld use

Right. I was about to submit patches the build system (cleaning traces
of Stepmake as an installable, separate package, merging make and
stepmake/stepmake, using git file list to roll source tarball, reduce
make overhead by deleting useless makefiles in many subdirectories),
but I think trying Gerrit has a higher priority, and it will be a good
opportunity to test Gerrit on those patches (e.g. I'd be glad to see
that Gerrit handles diffs with file renames, i.e. "git diff -M" on the
command-line).


> I don't see that feature comparisons from manuals will do much for
> getting an actual hang of the respective advantages/disadvantages.

At least it allows estimating them, I wanted to do this before diving
into setting up Gerrit.  Your message saves me the time and energy of
writing a detailed review based on feature comparisons from manuals
and previous discussions, which as you say would have far less value
than an actual experiment with these tools/


> We know that the principal disadvantage of Rietveld is its inability to
> deal with a patch sequence gracefully, and that one reviews tree changes
> rather than commits (which would include commit messages, authors,
> signoffs etc).

Agreed. I experienced this too.


>  The base feature set other than that is comparable, but
> figuring out how feasible the respective use cases will be can only be
> done in practice.

It seems from its manual that Gerrit doesn't provide as much email
integration as Rietveld (e.g. replies by email get added to the review
comments threads in the review server), but it might, and anyway this
would not be terribly hard to add.

However, a Gerrit setup for LilyPond alone will certainly help having
a global eye on submitted patches, and avoid creating Google Code
issues for patches that are not bug fixes.


> I don't see that be can get by without at least
> implementing b) in some manner, and we don't really need much of
> "sufficient approval from core developers" for that.

I was thinking of other tools, like ReviewBoard, but I find don't
their issues system much useful; it has integration with Google Code,
it seems to provide better Git integration than Rietveld, but less
than Gerrit
http://www.reviewboard.org/docs/manual/dev/faq/#does-review-board-support-git
Well, we can integrate Gerrit with Google code through
git-cl/test-patches, so ReviewBoard doesn't seem to win over Gerrit
w.r.t. these two criteria.


> Of course, if we later find that everybody finds Gerrit too cumbersome
> to use, or if we get serious protests against reviews being even placed
> there, the work invested up to that point may be wasted.

Wasting time setting up Gerrit was my concern, but now it's no longer.
 I'll chime in back when I have done steps a) and b).

John

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Issue 2702 in lilypond: Patch: Unify the lexer's idea of words and commands across all modes.

2012-07-30 Thread David Kastrup
Graham Percival  writes:

> On Sun, Jul 29, 2012 at 10:15:10PM +0200, David Kastrup wrote:
>
>>  It turns out that this definition works with  
>> both "make test" as well as "make doc" without requiring any change in the  
>> LilyPond code base.
>
> That's certainly promising.
>
>> Discuss.  This is quite a consequential change regarding what word syntax  
>> is valid and what not, but the previous state was rather arbitrary to the  
>> degree of being wonky.
>
> Could I have some examples?  I just don't get this "word"
> business.  Is there any syntax which was previously
> (theoretically) supported, which this patch breaks?

Here is one thing that can be made to work: we can have music inside of
output definitions, but currently it is parsed in "initial" mode.  That
means something like

\layout { \tempo 4. = 120 }

will not work and has to be written as

\layout { \tempo 4 . = 120 }

since 4. is a real number in "initial" mode.  One way out would be to
switch into "notes" mode temporarily for music.  If we do that,
something like

\layout { \tempo "Moderato"
  line-width = 100\mm }

will not work any more, since

  \tempo "Moderato" 4. = 56

is perfectly valid input, so the parser has to look ahead to see whether
anything that might be a duration will follow.  It can't switch back to
"INITIAL" mode for that.  But with our current setup, a "word" in
"notes" mode will not be allowed to contain hyphens, so the next token
is a STRING with the value "line".  In "INITIAL" mode, it would be a
STRING with the value "line-width".  Having just "line" be the string
means that the assignment goes haywire.

In contrast, if words have the same form in all modes, "line-width" will
get scanned correctly even while still being in "notes" mode, and the
following assignment will work properly after switching back to
"INITIAL" mode nominally one token late.

Having fewer different modes in the lexer also means that mostly
mode-unaware tools like highlighting editors and convert-ly are more
likely to get the basic units they are messing with identified
correctly.

-- 
David Kastrup


___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Using MSH Paris Nord server

2012-07-30 Thread David Kastrup
John Mandereau  writes:

> 2012/7/23 John Mandereau :
>> Il giorno lun, 23/07/2012 alle 19.25 +0200, David Kastrup ha scritto:
>>> Maybe running gerrit on it would be an option?
>>
>> This sounds an excellent idea.
>
> Wait, there has already been much discussion about patch review tools,
> much of it happened when I was completely away. Before diving into
> setting up Gerrit, I'd like to summarize the pros and cons of
> Rietveld+Google Code Issues+Patchy (current system), Gerrit,
> ReviewBoard, and others, judging on features that have been discussed
> on this list. Be warned that I tend to prefer Gerrit, but I don't want
> to spend time setting it before a contradictory assesment (summarizing
> previous discussion and comparing the features of these tools
> advertized by their manuals) and sufficient approval from core
> developers.

That implies having to make a choice before thinking about switching.  I
don't see that this makes much sense.

Here is what I see as the required steps:

a) get a gerrit server set up
b) make test-patches.py deal with either Rietveld or Gerrit URLs for
   testing

At this point of time, it becomes feasible to manually create a Gerrit
review and have it go through our normal processes.

c) make git-cl configurable so that it can optionally create Gerrit
   reviews instead of Rietveld reviews.

At this point of time, it becomes feasible to sensibly test one setup
against the other for a typical developer.

d) document Gerrit operation of git-cl in the CG

e) deprecate Rietveld use

I don't see that feature comparisons from manuals will do much for
getting an actual hang of the respective advantages/disadvantages.  We
know that the principal disadvantage of Rietveld is its inability to
deal with a patch sequence gracefully, and that one reviews tree changes
rather than commits (which would include commit messages, authors,
signoffs etc).  The base feature set other than that is comparable, but
figuring out how feasible the respective use cases will be can only be
done in practice.  I don't see that be can get by without at least
implementing b) in some manner, and we don't really need much of
"sufficient approval from core developers" for that.

Of course, if we later find that everybody finds Gerrit too cumbersome
to use, or if we get serious protests against reviews being even placed
there, the work invested up to that point may be wasted.

But I don't see how we can even attempt to arrive at a decision before
getting there.

-- 
David Kastrup

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Using MSH Paris Nord server

2012-07-30 Thread John Mandereau
2012/7/23 John Mandereau :
> Il giorno lun, 23/07/2012 alle 19.25 +0200, David Kastrup ha scritto:
>> Maybe running gerrit on it would be an option?
>
> This sounds an excellent idea.

Wait, there has already been much discussion about patch review tools,
much of it happened when I was completely away. Before diving into
setting up Gerrit, I'd like to summarize the pros and cons of
Rietveld+Google Code Issues+Patchy (current system), Gerrit,
ReviewBoard, and others, judging on features that have been discussed
on this list. Be warned that I tend to prefer Gerrit, but I don't want
to spend time setting it before a contradictory assesment (summarizing
previous discussion and comparing the features of these tools
advertized by their manuals) and sufficient approval from core
developers.

John

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel


Re: Using MSH Paris Nord server

2012-07-30 Thread John Mandereau
2012/7/25 David Kastrup :
> Lilyfan  writes:
>>> Message du 25/07/12 00:08
>>> De : "Trevor Daniels"
>>> A : "Graham Percival" , "John Mandereau"
>>> Copie à : "lilypond-devel"
>>> Objet : Re: Using MSH Paris Nord server
>>> Graham Percival wrote Tuesday, July 24, 2012 10:55 PM
>>>
>>> > grenouille.lilynet.net.
>>>
>>> I like it. Definitely better than crapaud which has an unfortunate
>>> connotation to English-speakers.
>>>
>>> Trevor
>
> Well, the association for me was
> http://en.wikipedia.org/wiki/Jean-Baptiste_Grenouille>, as the
> not-quite sympathy-inspiring protagonist of a German novel.  However,
> the novel quite expands on the ethymology of the name, so the reader
> will be aware of the association to frogs.
>
> Of course, it is almost inevitable for those versed in both the American
> as well as the French language to think of John Longhorn's (aka Mark
> Twain) famous frog story
> http://www.angelfire.com/nb/classillus/images/jumping/jumping.html>,
> an 18th century precursor of the famous "translate back and forth" game
> that nowadays is popular with computer translation programs.

Thanks for these references David.  Jean-Charles, I'm sorry but there
are more votes for "grenouille", so let's go for this. I'm asking
Valentin.

John

___
lilypond-devel mailing list
lilypond-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-devel