Re: broken doc build (orchestra.ly)

2016-05-20 Thread David Kastrup
David Kastrup  writes:

[Bisection]

>> Commit c1d7bc2217462a63bf5c5c6d6f6df5cb00099180
>> Author: David Kastrup 
>> Date:   Tue May 3 19:11:15 2016 +0200
>>
>> Issue 4842/6: Don't special-case Scheme_engraver's acknowledgers
>>
>>
>> /build/Documentation/ly-examples/orchestra.preview.log
>> ===
>> Changing working directory to: `./out-www'
>> Processing `/home/knut/sources/lily/Documentation/ly-examples/orchestra.ly'
>> Parsing...
>> Interpreting music...ERROR: Wrong type (expecting exact integer): (x y)
>
> Oh wow.  The expression with the wrong type is something completely
> different here.  That makes it likely that we are dealing with an
> expression that has been garbage-collected prematurely and is
> overwritten with something else randomly before use.

So yes, I think there is a problem in that commit regarding
garbage-protecting a Scheme_engraver's acknowledgers.

But: I don't think that orchestra.ly even uses a Scheme engraver, and
the problem would not hit before such an engraver is actually
instantiated in some context.  Very weird.

Nevertheless, I'll see whether this needs fixing, and if it does, follow
through with an issue (and push fast once testing confirms no problem).
Even though I don't really see how this could trigger in the described
manner.

-- 
David Kastrup

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


Re: broken doc build (orchestra.ly)

2016-05-20 Thread David Kastrup
David Kastrup  writes:

> David Kastrup  writes:
>
> [Bisection]
>
>>> Commit c1d7bc2217462a63bf5c5c6d6f6df5cb00099180
>>> Author: David Kastrup 
>>> Date:   Tue May 3 19:11:15 2016 +0200
>>>
>>> Issue 4842/6: Don't special-case Scheme_engraver's acknowledgers
>>>
>>>
>>> /build/Documentation/ly-examples/orchestra.preview.log
>>> ===
>>> Changing working directory to: `./out-www'
>>> Processing `/home/knut/sources/lily/Documentation/ly-examples/orchestra.ly'
>>> Parsing...
>>> Interpreting music...ERROR: Wrong type (expecting exact integer): (x y)
>>
>> Oh wow.  The expression with the wrong type is something completely
>> different here.  That makes it likely that we are dealing with an
>> expression that has been garbage-collected prematurely and is
>> overwritten with something else randomly before use.
>
> So yes, I think there is a problem in that commit regarding
> garbage-protecting a Scheme_engraver's acknowledgers.

Nope, there wasn't.  If at all, it is sort of a timing problem where the
derived_mark of a Scheme_engraver might be called before the type is
fully initialized or it is _not_ called until it is fully initialized
and fails to protect the partially constructed type.

> But: I don't think that orchestra.ly even uses a Scheme engraver, and
> the problem would not hit before such an engraver is actually
> instantiated in some context.  Very weird.

Can you run this under a debugger and place a breakpoint on
Scheme_engraver::init_from_scheme or just write abort(); as its first
line?  I want to know whether the problem is triggered _without_
creating a Scheme_engraver.  Or whether I just did not figure out how a
Scheme_engraver comes into play here.

-- 
David Kastrup

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


Re: broken doc build (orchestra.ly)

2016-05-20 Thread David Kastrup
James  writes:

> I don;t know what the lilypond.pot stuff does but could that have been
> the problem?

Unlikely.  I think it may be the distribution of files across parallel
builds, where the few snippets using the Scheme_engraver poison the
session so that it crashes during an unrelated snippet (or when exiting)
later on.

That is, if we can show that the Scheme_engraver code actually gets
exercised during the runs that crash.

-- 
David Kastrup

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


Re: broken doc build (orchestra.ly)

2016-05-21 Thread David Kastrup
James Lowe  writes:

> David,
>
> On 20/05/16 17:38, David Kastrup wrote:
>> James  writes:
>>
>>> I don;t know what the lilypond.pot stuff does but could that have been
>>> the problem?
>> Unlikely.  I think it may be the distribution of files across parallel
>> builds, where the few snippets using the Scheme_engraver poison the
>> session so that it crashes during an unrelated snippet (or when exiting)
>> later on.
>>
>> That is, if we can show that the Scheme_engraver code actually gets
>> exercised during the runs that crash.
>>
>
> Well if you need me to try some 'hacked up' code or try some specific
> compilation options etc. to get output for you, let me know.
>
> All I can say to Knut is that, for the last couple of days anyway, the
> 'problem' seems to have gone away.

Garbage collection problems are elusive.  I was surprised that Knut was
able to reproduce them well enough for bisection (though bisection does
not employ much redundancy if at all, so if a problem triggers randomly,
you'll still end up with a particular commit labelled as culprit).

At any rate, Werner had pushed a spelling correction commit that ended
up staying in staging for a long time (days I think) but then got
passed to master pretty fast once _another_ commit was pushed on top of
it.

That also reeks a bit of Patchy failure for sort-of random but
reproducible conditions.  At any rate, I pushed a slightly amended patch
for issue 4851 now.  _If_ it was a garbage collection issue on some
topic I suspected, it might make the problem go away.  Let's hear from
Knut.

-- 
David Kastrup

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


Re: broken doc build (orchestra.ly)

2016-05-21 Thread David Kastrup
Werner LEMBERG  writes:

>> At any rate, Werner had pushed a spelling correction commit that
>> ended up staying in staging for a long time (days I think) but
>> then got passed to master pretty fast once _another_ commit was
>> pushed on top of it.
>
> I hope it is OK to push such minor tweaks without creating an issue.
> Otherwise it would increase the necessary time to apply such fixes by
> a factor of 10 at least...

The problem with such minor tweaks is that if they break sectioning,
they can still block the queue.  While our staging process keeps master
reasonably clean and compilable, it can still affect staging.

So my own metric is that if a change is restricted to non-functional
texts (comments, descriptions etc) I don't have much qualms about just
pushing.

This change, however, affected cross-references and index entries.


With regard to the text changes: I don't actually know whether the
correct Finnish word is kaksoisappogiatura or kaksoisappoggiatura but am
willing to believe the latter.

I do find the German "mit einem Schrägstrich durch den Hals, und den
Vorhalt (engl. appoggiatura)," at least peculiar since "appoggiatura" is
rather an Italian than an English term.  While this description
originates from before the patch, a review might have been an
opportunity for changing this.

At the current point of time, patch testing is done completely manually
by James.  That does make me somewhat less inclined to create
issues/patches for trivial stuff.

-- 
David Kastrup

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


Re: Custom accidental styles

2016-05-21 Thread David Kastrup
Dan Eble  writes:

> On May 20, 2016, at 05:38 , Simon Albrecht  wrote:
>> I was hoping to do further improvements to the code (comments and
>> simplification) such as to make the threshold still lower, but I
>> didn’t get there unfortunately.
>> 
>> HTH, Simon
>> 
>
> Thank you.  That was helpful.  This worked for me:
>
> %% Like voice, with additional cautionary cross-voice cancellations
> #(set! accidental-styles (append accidental-styles
> `((hymnbook-cautionary #f
>(Voice ,(make-accidental-rule 'same-octave 0))
>(Staff ,(make-accidental-rule 'same-octave 0))
>Staff

accidental-styles.hymnbook-cautionary =
#`(#f (Voice ,(make-accidental-rule 'same-octave 0))
      (Staff ,(make-accidental-rule 'same-octave 0))
  Staff)

-- 
David Kastrup

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


Re: Fwd: Custom accidental styles

2016-05-21 Thread David Kastrup
Dan Eble  writes:

> [I dropped lilypond-devel when I replied.  Sending David’s reply to the list.]
>
> From: David Kastrup 
> Subject: Re: Custom accidental styles
> Date: May 21, 2016 at 12:29:05 EDT
> To: Dan Eble 
>
> Dan Eble  writes:
>
>>> On May 21, 2016, at 11:00 , David Kastrup  wrote:
>>> 
>>> Dan Eble  writes:
>>> 
>>>> On May 20, 2016, at 05:38 , Simon Albrecht  wrote:
>>>>> I was hoping to do further improvements to the code (comments and
>>>>> simplification) such as to make the threshold still lower, but I
>>>>> didn’t get there unfortunately.
>>>>> 
>>>>> HTH, Simon
>>>>> 
>>>> 
>>>> Thank you.  That was helpful.  This worked for me:
>>>> 
>>>> %% Like voice, with additional cautionary cross-voice cancellations
>>>> #(set! accidental-styles (append accidental-styles
>>>>  `((hymnbook-cautionary #f
>>>> (Voice ,(make-accidental-rule 'same-octave 0))
>>>> (Staff ,(make-accidental-rule 'same-octave 0))
>>>> Staff
>>> 
>>> accidental-styles.hymnbook-cautionary =
>>> #`(#f (Voice ,(make-accidental-rule 'same-octave 0))
>>> (Staff ,(make-accidental-rule 'same-octave 0))
>>> Staff)
>> 
>> It’s prettier, but it isn’t working.  With 2.19.42, I get "warning:
>> unknown accidental style” and the style is not put into effect.  The
>> attached file demonstrates both ways.
>
> Ugh.  Wouldn't work with define! instead of set! either I guess (which
> is what lily-lexer.cc uses effectively).  The variable is defined in a
> different module (lily rather than the current lexer).
>
> From the Guile docs:
>
>   `define' (when it occurs at top level), `scm_define' and
>`scm_c_define' all create or set the value of a variable in the top
>level environment of the current module.  If there was not already a
>variable with the specified name belonging to the current module, but a
>similarly named variable from another module was visible through having
>been imported, the newly created variable in the current module will
>shadow the imported variable, such that the imported variable is no
>longer visible.
>
> So for
>
> xxx.yyy = ...
>
> we quite likely want set! semantics.  How about for
>
> xxx = ...
>
> ?

Ugh.

GNU LilyPond 2.19.43
Processing `input/regression/collision-2.ly'
Parsing.../usr/local/tmp/lilypond/out/share/lilypond/current/scm/lily-library.scm:583:32:
 In expression (break pred lst):
/usr/local/tmp/lilypond/out/share/lilypond/current/scm/lily-library.scm:583:32: 
Wrong type to apply: #)
 (break-permission . force))((display-methods #) (name . 
LineBreakEvent) (types line-break-event break-event event)) >

`break' is a procedure (automatically loaded) in (srfi srfi-1).  It is
also a music expression in ly/declarations-init.ly.

Overwriting it does not seem like a good idea...

-- 
David Kastrup

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


Re: Fwd: Custom accidental styles

2016-05-21 Thread David Kastrup
David Kastrup  writes:

> Dan Eble  writes:
>
>> From the Guile docs:
>>
>>   `define' (when it occurs at top level), `scm_define' and
>>`scm_c_define' all create or set the value of a variable in the top
>>level environment of the current module.  If there was not already a
>>variable with the specified name belonging to the current module, but a
>>similarly named variable from another module was visible through having
>>been imported, the newly created variable in the current module will
>>shadow the imported variable, such that the imported variable is no
>>longer visible.
>>
>> So for
>>
>> xxx.yyy = ...
>>
>> we quite likely want set! semantics.  How about for
>>
>> xxx = ...
>>
>> ?
>
> Ugh.
>
> GNU LilyPond 2.19.43
> Processing `input/regression/collision-2.ly'
> Parsing.../usr/local/tmp/lilypond/out/share/lilypond/current/scm/lily-library.scm:583:32:
> In expression (break pred lst):
> /usr/local/tmp/lilypond/out/share/lilypond/current/scm/lily-library.scm:583:32:
> Wrong type to apply: # /usr/local/tmp/lilypond/out/share/lilypond/current/ly/declarations-init.ly:64:9>)
> (break-permission . force))((display-methods #)
> (name . LineBreakEvent) (types line-break-event break-event event)) >
>
> `break' is a procedure (automatically loaded) in (srfi srfi-1).  It is
> also a music expression in ly/declarations-init.ly.
>
> Overwriting it does not seem like a good idea...

So the question is what to do with partial list assignments.  The
assumption would likely be that the user _knows_ he wants to modify an
existing list in its own module when not writing xxx = #'() before
assigning to xxx.yyy.

But I'm queasy about that.  It could result in spacing settings in some
\header or \layout to have more global effects than intended.

-- 
David Kastrup

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


Re: broken doc build (orchestra.ly)

2016-05-22 Thread David Kastrup
"Phil Holmes"  writes:

> I think it's likely to be what David was guessing at - David's "Issue
> 4842/6: Don't special-case Scheme_engraver's acknowledgers" has
> affected garbage collection somehow, and this affects different
> systems in different ways, because of the way the OS handles memory
> allocation.

I thought the current master was good enough.

> You might try rolling back to before that commit and see whether you
> are OK. If so, there's an argument (I think) for Davis to revert it
> until we're on firmer ground checking what it happening with make doc.

There are a few other commits in that area, so reverting is not all that
easy.

-- 
David Kastrup

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


Re: broken doc build (orchestra.ly)

2016-05-22 Thread David Kastrup
James Lowe  writes:

> My make doc issue has come back :(
>
> Taking a few more minutes to try and diagnose the problem - it is the
> same again, as Knut had. With the same error on processing
> orchestra.ly.

Bah.  Let's try getting a post mortem backtrace from it.

Basically, you do

ulimit -c 40 # Assuming that a 400MB core is enough

then you run the tests.  Now when the assertion failure happens, it will
leave a file named "core" in the directory where the program was
started (probably Documentation/ly-examples).

You can probably look for it using

find -name core

in your LilyPond directory.

Then you do

gdb out/bin/lilypond Documentation/ly-examples/core

and should be able to tell gdb to

backtrace


Be sure that you don't have an old core file lying around: I think that
Linux does not overwrite preexisting core files.

-- 
David Kastrup

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


Re: Fwd: Custom accidental styles

2016-05-22 Thread David Kastrup
David Kastrup  writes:

> David Kastrup  writes:
>
>> Dan Eble  writes:
>>
>>> From the Guile docs:
>>>
>>>   `define' (when it occurs at top level), `scm_define' and
>>>`scm_c_define' all create or set the value of a variable in the top
>>>level environment of the current module.  If there was not already a
>>>variable with the specified name belonging to the current module, but a
>>>similarly named variable from another module was visible through having
>>>been imported, the newly created variable in the current module will
>>>shadow the imported variable, such that the imported variable is no
>>>longer visible.
>>>
>>> So for
>>>
>>> xxx.yyy = ...
>>>
>>> we quite likely want set! semantics.  How about for
>>>
>>> xxx = ...
>>>
>>> ?
>>
>> Ugh.
>>
>> GNU LilyPond 2.19.43
>> Processing `input/regression/collision-2.ly'
>> Parsing.../usr/local/tmp/lilypond/out/share/lilypond/current/scm/lily-library.scm:583:32:
>> In expression (break pred lst):
>> /usr/local/tmp/lilypond/out/share/lilypond/current/scm/lily-library.scm:583:32:
>> Wrong type to apply: #> /usr/local/tmp/lilypond/out/share/lilypond/current/ly/declarations-init.ly:64:9>)
>> (break-permission . force))((display-methods #)
>> (name . LineBreakEvent) (types line-break-event break-event event)) >
>>
>> `break' is a procedure (automatically loaded) in (srfi srfi-1).  It is
>> also a music expression in ly/declarations-init.ly.
>>
>> Overwriting it does not seem like a good idea...
>
> So the question is what to do with partial list assignments.  The
> assumption would likely be that the user _knows_ he wants to modify an
> existing list in its own module when not writing xxx = #'() before
> assigning to xxx.yyy.
>
> But I'm queasy about that.  It could result in spacing settings in some
> \header or \layout to have more global effects than intended.

Ok, just pinned this down by changing session-define-public.

Tracker issue: 4858 (https://sourceforge.net/p/testlilyissues/issues/4858/)
Rietveld issue: 300110043 (https://codereview.appspot.com/300110043)
Issue description:
  Let define-session-public place variables natively into parser
  Putting them as native variables in the parser module (rather than
  using export/import) makes `set!' and `define' equivalent rather
  than having `define' create a shadowing definition of the session
  variable. That is important in order to avoid the values of the
  variable diverging between parser module and `lily'.


Your example works fine with that change.  It should also allow
foregoing the use of ly:parser-lookup/ly:parser-define! in a number of
cases since session-export variables are now automatically shared
between `lily' module and parser.

-- 
David Kastrup

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


Re: broken doc build (orchestra.ly)

2016-05-22 Thread David Kastrup
James Lowe  writes:

> OK I'll give that a go and roll back to the commit just before all the
> 4842/* ones - in case I cannot just roll back to before the 4842/6 and
> not break something dependent in the other 4842 changes.

All of the commits should compile fine (or I'd have put them in a branch
of their own).

-- 
David Kastrup

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


Re: broken doc build (orchestra.ly)

2016-05-24 Thread David Kastrup
James Lowe  writes:

> No core file was generated, I also upped the ulimit to 1GB.
>
> So perhaps it isn't the type of 'assertion' or crash you thought it
> was after all?

Perhaps.  Knut's problem, however, sounded like it.  If you have
different results from Knut, things are even muddier than I thought.

-- 
David Kastrup

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


Re: broken doc build (orchestra.ly)

2016-05-24 Thread David Kastrup
James  writes:

> David
>
> On 24/05/16 18:20, David Kastrup wrote:
>> James Lowe  writes:
>>
>>> No core file was generated, I also upped the ulimit to 1GB.
>>>
>>> So perhaps it isn't the type of 'assertion' or crash you thought it
>>> was after all?
>> Perhaps.  Knut's problem, however, sounded like it.  If you have
>> different results from Knut, things are even muddier than I thought.
>>
> Just in case it isn't obvious :)
>
> Your checkin stuck in staging is because patchy-staging-merge cannot
> complete the make doc so it won't push to staging, not because there
> is necessarily anything wrong with your patch.

I'll run one of my own.  It's a nuisance that our results differ.  Wait:
my patchy runs with --enable-checking instead of --disable-optimising
because I have the following patch applied:

>From fe1e215b2780a201c8fa85cefe76e894cdfc4a66 Mon Sep 17 00:00:00 2001
From: David Kastrup 
Date: Tue, 19 May 2015 10:21:13 +0200
Subject: [PATCH] Replace --disable-optimising with the faster
 --enable-checking

---
 patches/compile_lilypond_test/__init__.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/patches/compile_lilypond_test/__init__.py b/patches/compile_lilypond_test/__init__.py
index 22b2ff9..4a554f3 100644
--- a/patches/compile_lilypond_test/__init__.py
+++ b/patches/compile_lilypond_test/__init__.py
@@ -296,7 +296,7 @@ class AutoCompile (object):
 run ("find %s ! -wholename \"*out-test-baseline*\" -type f -exec rm -f {} \\;"
  % self.build_dir, wrapped=True)
 self.runner (self.build_dir,
-os.path.join (self.src_build_dir, "configure") + " --disable-optimising",
+os.path.join (self.src_build_dir, "configure") + " --enable-checking",
 issue_id, "configure", env=dict (config.items ("configure_environment")))
 
 def patch (self, patch_issue, issue_id):
-- 
2.7.4


That was the long-term idea for creating --enable-checking in the first
place.  I just haven't put everybody on the same footing here.

I'll revert this patch at my end and see whether I get anywhere
different.

Knut, did you use any options to ./configure ?  config.log should
mention how configure was called.

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


Re: broken doc build (orchestra.ly)

2016-05-25 Thread David Kastrup
David Kastrup  writes:

> James  writes:
>
>> David
>>
>> On 24/05/16 18:20, David Kastrup wrote:
>>> James Lowe  writes:
>>>
>>>> No core file was generated, I also upped the ulimit to 1GB.
>>>>
>>>> So perhaps it isn't the type of 'assertion' or crash you thought it
>>>> was after all?
>>> Perhaps.  Knut's problem, however, sounded like it.  If you have
>>> different results from Knut, things are even muddier than I thought.
>>>
>> Just in case it isn't obvious :)
>>
>> Your checkin stuck in staging is because patchy-staging-merge cannot
>> complete the make doc so it won't push to staging, not because there
>> is necessarily anything wrong with your patch.
>
> I'll run one of my own.  It's a nuisance that our results differ.  Wait:
> my patchy runs with --enable-checking instead of --disable-optimising
> because I have the following patch applied:

[...]

> I'll revert this patch at my end and see whether I get anywhere
> different.
>
> Knut, did you use any options to ./configure ?  config.log should
> mention how configure was called.

S.  This took longer than I thought because I hibernated the laptop
(Doh!) before going to sleep.

It completed in the morning.  How-e-ver: staging had already been pushed
to master previously by someone else.  Did someone test manually?  Or do
other patchies not fail in the manner Knut's setup does?

-- 
David Kastrup

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


Re: broken doc build (orchestra.ly)

2016-05-25 Thread David Kastrup
Knut Petersen  writes:

> Am 20.05.2016 um 17:27 schrieb David Kastrup:
>> David Kastrup  writes:
>>
>>> Can you run this under a debugger and place a breakpoint on
>>> Scheme_engraver::init_from_scheme or just write abort(); as its first
>>> line?  I want to know whether the problem is triggered _without_
>>> creating a Scheme_engraver.  Or whether I just did not figure out how a
>>> Scheme_engraver comes into play here.
>>>
>
> Back at the PC again.
>
> lilypond 0e00ce29:
> 
>
> make doc succeeds.
>
> lilypond c1d7bc22:

What about current master?  More exactly, did

56a1519b44d1a0a8500c43236ae644053cc1f25b

make a difference?

> "valgrind -v --track-origins=yes
> /home/knut/sources/lily/build/out/bin/lilypond -dpreview -ddebug
> -dresolution=150 -o ./out-www
> /home/knut/sources/lily/Documentation/ly-examples/orchestra.ly" fails
> 10 out of 10 times.
>
> lilypond c1d7bc22 with "abort();" at start of
> Scheme_engraver::init_from_scheme succeeds if called from bash prompt
> and fails with valgrind again.

Makes little enough sense to me.  At any rate, if the changed code does
not even get called, it would seem that rather the change in memory
layout might be responsible for triggering the problem.  I'll try to go
through the code with a fine comb and see whether I can find anything
that might make a difference when no Scheme_engraver is actually created
(which should correspond to init_from_scheme not being called).

> "-ddebug" does not work as lilypond tells me that there is no internal
> option named debug ;-)

Uh, -dverbose it was.

> valgrind logs of both versions differ a lot, but they are pretty
> big. Shall I send them to the list? I think it could be a good idea to
> look at those places that differ ...

I'm not sure.  valgrind output for code using a conservative garbage
collector tends to be of quite limited usefulness.

-- 
David Kastrup

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


Re: broken doc build (orchestra.ly)

2016-05-25 Thread David Kastrup
Knut Petersen  writes:

>>>> Knut, did you use any options to ./configure ?  config.log should
>>>> mention how configure was called.

> doit "../configure --prefix=$MYROOT"

Ok, so no options at all.

-- 
David Kastrup

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


Re: Tie properties vs. slur properties.

2016-05-25 Thread David Kastrup
tisimst  writes:

> On Wed, May 25, 2016 at 12:19 AM, Werner LEMBERG [via Lilypond] <
> ml-node+s1069038n19094...@n5.nabble.com> wrote:
>
>>
>> > The tie interface has height-limit and ratio as part of Tie.details.
>> >
>> > The slur interface has height-limit and ratio as part of Slur (not
>> > embedded in Slur.details).
>> >
>> > Is there a reason for this difference, or is it just due to never
>> > making the two be consistent?
>>
>> I believe it's the latter.
>>
>> > If there is no reason for the difference, I think the two should be
>> > rationalized, probably by moving Slur.height-limit and Slur.ratio to
>> > Slur.details.height-limit and Slur.details.ratio.
>>
>> This looks ok.
>>
>
> What's the benefit of nesting properties like this?

You don't need to list them individually in an interface.  You can
override the whole set of details with one command without needing to
specifically clear properties that are usually never set, but the user
and/or some containing context may have set them to special values.

If you need to access them as a set anyway, it's faster to get them once
and go from there.

There may be properties in some "details" that are named identically to
properties in some other "details" or at top level.

That's what I can currently think of.

I'm not particularly enamored with the details either, but if you take a
look at stuff like the harp diagram details, they are really a long long
list.  Overriding all of them individually is effort.

-- 
David Kastrup

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


Re: Tie properties vs. slur properties.

2016-05-27 Thread David Kastrup
tisimst  writes:

> On Thu, May 26, 2016 at 12:50 AM, David Kastrup [via Lilypond] <
> ml-node+s1069038n190980...@n5.nabble.com> wrote:
>>
>> I'm not particularly enamored with the details either, but if you
>> take a look at stuff like the harp diagram details, they are really a
>> long long list.  Overriding all of them individually is effort.
>>
>
> Ah, yes. That makes sense. Thank you for making it possible to do both
> Grob.details.property and Grob.details = #'((property . ...))

That one wasn't my idea.  I merely reimplemented it in order to make it
work reliably with predictable semantics without putting too much of a
downer on performance.  It wasn't used heavily before partly because it
was a bit hit-and-miss once you tried combining it with reverts (and
since the default for \override is to revert before setting, this does
not exactly happen rarely).

-- 
David Kastrup

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


Re: Still cannot make doc :(

2016-05-27 Thread David Kastrup
James  writes:

> Hello,
>
> I still cannot make doc and so cannot merge staging - and for those
> waiting on me to test new patches, I cannot do that with any great
> reliability either.

Fiddlesticks.  I was afraid that this would be the case but it was worth
a try.

> I am sorry this is incredibly frustrating.

Sorry.

> I don't have time right now to set up a LilyDev env to try it for
> myself and will not have the time until at least Saturday evening.

I don't think that the problem can be reduced to a code generation issue
(which would explain that it gets seen only on certain systems likely
depending on GCC version and/or machine architecture) because the
changes of the incriminated patch do not introduce markedly different
code from before.  If anything, it removes code.

-- 
David Kastrup

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


Re: Still cannot make doc :(

2016-05-27 Thread David Kastrup
James  writes:

> Hello,
>
> I still cannot make doc and so cannot merge staging - and for those
> waiting on me to test new patches, I cannot do that with any great
> reliability either.
>
> I am sorry this is incredibly frustrating.
>
> @Phil would it be possible for you to run Patchy Merge on your system
> and see if you can get this to work.

I've started one just now on my laptop.  It just takes significantly
North of one hour to complete.

-- 
David Kastrup

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


Re: Still cannot make doc :(

2016-05-28 Thread David Kastrup
Thomas Morley  writes:

> 2016-05-27 16:22 GMT+02:00 David Kastrup :
>> James  writes:
>>
>>> Hello,
>>>
>>> I still cannot make doc and so cannot merge staging - and for those
>>> waiting on me to test new patches, I cannot do that with any great
>>> reliability either.
>>
>> Fiddlesticks.  I was afraid that this would be the case but it was worth
>> a try.
>>
>>> I am sorry this is incredibly frustrating.
>>
>> Sorry.
>>
>>> I don't have time right now to set up a LilyDev env to try it for
>>> myself and will not have the time until at least Saturday evening.
>>
>> I don't think that the problem can be reduced to a code generation issue
>> (which would explain that it gets seen only on certain systems likely
>> depending on GCC version and/or machine architecture) because the
>> changes of the incriminated patch do not introduce markedly different
>> code from before.  If anything, it removes code.
>>
>> --
>> David Kastrup
>
> FWIW, I checked out staging with your recent patch, i.e.:
> $ git log
> commit 193369dddc8adc492d3d98b6f1d00de11a31e9c4
> Author: David Kastrup 
> Date:   Fri May 27 10:20:18 2016 +0200
>
> Issue 4863: Protect Grob_interface<>::interface_symbol_
> [...]
>
> On my host system Ubuntu 16.04 64-bit
> make doc
> fails with orchestra.ly as before

Yes, I reckoned so after James' report.  Without some backtrace or core
dump or recipe other than "run make doc" I cannot really track this
down.  It would not be feasible to look at the assembly code for all
affected code since this changes header files resulting in differences
in all engravers/translators.

-- 
David Kastrup

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


Re: Silently depressed keys

2016-05-29 Thread David Kastrup
Dan Eble  writes:

> I’m experimenting with an articulation called \silent that uses a
> large negative midi-extra-velocity property to add a note with minimum
> velocity to the MIDI output.

"minimum velocity" is 0.  Midi implementations use this as an alternate
representation of key release since this leads to shorter Midi messages
and faster transmission than the "proper" key release event.

You need at least 1 to make a distinctive event.

-- 
David Kastrup

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


Re: Still cannot make doc :(

2016-05-29 Thread David Kastrup
James Lowe  writes:

> I think this a a completely different issue that you have, perhaps,
> self-inflicted here and this is just adding noise to the thread.

I disagree that it is just adding noise to the thread: it may well
explain why we have outliers regarding the reports concerning
architecture: having a different problem responsible there is clarifying
things.

> Finally, as I cannot make doc still, I cannot test patches, am not
> really checking my emails as much as I normally do, other than to drop
> by for the patch countdown - which doesn't need me to compile
> anything. It also means, as you can all see, that staging is not being
> merged and I have both my home and work machines running on a
> patchy-staging-merge 2 - 4 hour loop but constantly reporting the same
> make doc fail each time they try to merge.
>
> Someone else is going to have to test patches and merge staging for
> now.

I hear your frustration and will be running a staging pass presently.
Sorry for the bad situation.  I am currently rewriting LilyPond's
translators in order to make them better debuggable and the code more
straightforward.

I have to see whether I have a chance to run a 64 bit kernel on my
system: I used to for a few years (and consequently was able to look at
64 bit code), but the current laptop has an Nvidia card and Ubuntu's
kernel/library setup did not manage to integrate the Nvidia proprietary
driver stuff into a 64 bit kernel running on a 32bit userland and the
free drivers did not work reasonably.  Maybe the situation has improved.

-- 
David Kastrup

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


Re: Still cannot make doc :(

2016-05-29 Thread David Kastrup
David Kastrup  writes:

> I have to see whether I have a chance to run a 64 bit kernel on my
> system: I used to for a few years (and consequently was able to look
> at 64 bit code), but the current laptop has an Nvidia card and
> Ubuntu's kernel/library setup did not manage to integrate the Nvidia
> proprietary driver stuff into a 64 bit kernel running on a 32bit
> userland and the free drivers did not work reasonably.  Maybe the
> situation has improved.

GNOME and GNOME_classic crash on login.  MATE appears to start, so I
might be able to work with a graphical interface.  It's likely that I'll
not be able to suspend or hibernate, though.  But maybe I can get to
where I am able to get a lead on the problem.

It's not like I had other plans for my birthday anyway.  Ok, I did, but
climbing was struck off the list a week ago already because of being
incompatible with spontaneous loss of consciousness.  Probably just the
blood pressure medication doing more than its duty.

Sorry, I'm just not good company at the moment.

-- 
David Kastrup

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


Re: Still cannot make doc :(

2016-05-29 Thread David Kastrup
David Kastrup  writes:

> David Kastrup  writes:
>
>> I have to see whether I have a chance to run a 64 bit kernel on my
>> system: I used to for a few years (and consequently was able to look
>> at 64 bit code), but the current laptop has an Nvidia card and
>> Ubuntu's kernel/library setup did not manage to integrate the Nvidia
>> proprietary driver stuff into a 64 bit kernel running on a 32bit
>> userland and the free drivers did not work reasonably.  Maybe the
>> situation has improved.
>
> GNOME and GNOME_classic crash on login.  MATE appears to start, so I
> might be able to work with a graphical interface.  It's likely that I'll
> not be able to suspend or hibernate, though.  But maybe I can get to
> where I am able to get a lead on the problem.

This is going to take a whole lot of time.  Lots of library/compilation
problems.  I think I need to go scything nettles to get a clear head.
I hope to get this under control in the course of the day.  Bah.
Compose Key gone as well.  Need to get along with the U.S. keyboard for
a while it appears.

-- 
David Kastrup

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


Re: Still cannot make doc :(

2016-05-29 Thread David Kastrup
Thomas Morley  writes:

> James,
>
> 2016-05-29 13:15 GMT+02:00 James Lowe :
>> Thomas,
>
>> I think this a a completely different issue that you have, perhaps,
>> self-inflicted here and this is just adding noise to the thread.
>>
>> Knut and I do not get these same errors as you and also note that we both
>> *can* compile doc prior to the one checkin that David did.
>
> I disagree.
> As soon as I commented every occurance of japanese in all relevant
> files I got the error on orchestra.ly with
> make LANGS='' doc
>
> Next I revised orchestra.ly.
> - I deleted some custom-context-definitons and put them directly via
> \with into the elevant contexts
> - multiple settings of \layout were summarized
> - numerous uses of \set instrumentName ... etc were put into \with as well
> The last point may be the most likely candidate for the problems with
> orchestra.ly, but I'm only guessing.
>
> Anyway, with this I got a successful run of `make LANGS='' doc'
>
> A diff is attached.
>
> I'll now checkout a fresh branch from master, apply Hosoda-san's patch from
> https://codereview.appspot.com/298320043/
> change orchestra.ly as before.
> Try a full `make doc' and report back later.
>
> I suspect we have two problems (at least).

I manage to compile for amd64 architecture currently.  In the process I
likely hosed my system to a degree where I will not be able to run it
with a 32bit kernel or GNOME any time soon again.  On the plus side,
I've been able to hibernate a few times (not possible before).

But I should be good for testing 64bit compilation now.  Not so sure
about 32bit.

-- 
David Kastrup

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


Re: Still cannot make doc :(

2016-05-29 Thread David Kastrup
Thomas Morley  writes:

>> Processing `./c0/lily-c236818d.ly'
>> Parsing...
>> Renaming input to: `/home/hermann/lilypond-git/input/regression/utf-8.ly'
>> Interpreting music...
>> Preprocessing graphical objects...
>> Calculating line breaks...
>> Drawing systems...
>> Writing header field `texidoc' to `./c0/lily-c236818d.texidoc'...
>> Writing ./c0/lily-c236818d-1.signature
>> Writing ./c0/lily-c236818d-2.signature
>> Layout output to `./c0/lily-c236818d.eps'...
>> Converting to `./c0/lily-c236818d.pdf'...
>> warning: `(gs -q -dNOSAFER -dEPSCrop -dCompatibilityLevel=1.4
>> -dNOPAUSE -dBATCH -r1200 -sDEVICE=pdfwrite
>> -sOutputFile=./c0/lily-c236818d.pdf -c.setpdfwrite
>> -f./c0/lily-c236818d.eps)' failed (256)
>>
>> Every problematic file listed in the log compiles on its own without
>> problem. They all deal with fonts in some way, though.

I think make doc uses --bigpdf and some sort of PDF postprocessing.
Maybe one needs that to reproduce?

-- 
David Kastrup

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


Re: Still cannot make doc :(

2016-05-29 Thread David Kastrup
David Kastrup  writes:

> Thomas Morley  writes:
>
>>> Processing `./c0/lily-c236818d.ly'
>>> Parsing...
>>> Renaming input to: `/home/hermann/lilypond-git/input/regression/utf-8.ly'
>>> Interpreting music...
>>> Preprocessing graphical objects...
>>> Calculating line breaks...
>>> Drawing systems...
>>> Writing header field `texidoc' to `./c0/lily-c236818d.texidoc'...
>>> Writing ./c0/lily-c236818d-1.signature
>>> Writing ./c0/lily-c236818d-2.signature
>>> Layout output to `./c0/lily-c236818d.eps'...
>>> Converting to `./c0/lily-c236818d.pdf'...
>>> warning: `(gs -q -dNOSAFER -dEPSCrop -dCompatibilityLevel=1.4
>>> -dNOPAUSE -dBATCH -r1200 -sDEVICE=pdfwrite
>>> -sOutputFile=./c0/lily-c236818d.pdf -c.setpdfwrite
>>> -f./c0/lily-c236818d.eps)' failed (256)
>>>
>>> Every problematic file listed in the log compiles on its own without
>>> problem. They all deal with fonts in some way, though.
>
> I think make doc uses --bigpdf and some sort of PDF postprocessing.
> Maybe one needs that to reproduce?

--bigpdfs it was.  Sorry.  Or just -b .

-- 
David Kastrup

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


Re: GSoC spanners project

2016-05-30 Thread David Kastrup
Nathan Chou  writes:

> Hello,
>
> Thank you for the information! I have been thinking more and a few
> questions have come to mind:
>
> * However the cross voice Spanner object is created, is it expected to
> be identical to the object currently created by the hidden voice
> workaround? Just to make sure, Spanners are Grobs, which only contain
> graphical information and aren't associated with a context, right?

Spanners are Grobs.  Grobs contain a whole lot more than only graphical
information (the graphical part is their stencil) but are employed only
during graphical typesetting (the one governed by \layout blocks).
Spanners tend to split into separate quasi-items at line breaking, with
each such item covering one line.

They aren't themselves associated with contexts, but the _announcements_
(or rather "acknowledgments") of grobs mention the engraver originating
the announcement.  That engraver is hosted by a particular (and
queryable) context.

> * Although it is possible to deliver the STOP spanner event to the
> engraver of the corresponding START event (e.g. if the spanner has an
> ID to match the START and STOP events), is this an undesirable
> solution because it basically does the same thing as the hidden voice
> workaround?

There is no need to base the implementation on workarounds.  At the
current point of time, slurs and phrasing slurs have ways of dealing
with multiple spanners.  That has not much of a user interface and it
requires putting up engravers in some context where it will see the
announcements of both starting and ending slur.  The mechanism is also
tied rather hard into the engravers themselves without a good way to
generalize this into other engravers.

Currently engravers listen to events and acknowledgments only in their
dedicated context but can announce anywhere.  It's possible to move the
listeners around independently if that opens a viable solution.  Of
course, the lifetime of an engraver is tied to its hosting context,
however.

-- 
David Kastrup

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


Re: Still cannot make doc :(

2016-05-30 Thread David Kastrup
Knut Petersen  writes:

> Am 29.05.2016 um 13:52 schrieb David Kastrup:
>> I have to see whether I have a chance to run a 64 bit kernel on my
>> system: I used to for a few years (and consequently was able to look
>> at 64 bit code), but the current laptop has an Nvidia card and
>> Ubuntu's kernel/library setup did not manage to integrate the Nvidia
>> proprietary driver stuff into a 64 bit kernel running on a 32bit
>> userland and the free drivers did not work reasonably. Maybe the
>> situation has improved. 
>
> On my i7-4790K valgrind reports 23179 "Conditional jump or move
> depends on uninitialised value(s)"
> and "Use of uninitialised value of size 8" errors from 121 contexts. I
> suspect that the patch that breaks
> "make doc" only exposes an older problem. But 121 context ... that's a
> lot of code to inspect.

The commit in question _does_ change some engraver/translator memory
layouts/sizes.  It is conceivable that some uninitialized memory
previously was reliably stomped over with somewhat-ok values.  And what
might be at bay here is that garbage collection triggers while the
constructor of the Engraver base class is running, and derived_mark
marks values that have not yet been initialized by the constructor of
the derived class.

I don't think we need to inspect all contexts here: the commit in
question changed the engraver/translator _infrastructure_ so it is not
surprising that if there is a problem, it occurs often.

So the 121 contexts will not likely be of more than a few different
kinds.  Can I get some pointers to the routine where the jump occurs,
together with a bit of disassembly for figuring out the actual
corresponding source code?

Or was that information already in one of your reports?

> To those who see "make doc" fail at orchestra.ly: Please report cpu as
> well as versions of gcc and guile. Please also send the output of

I'll start a make doc.  But I suspect we might also have some
Ghostscript problem responsible for some of our problems.  Conveniently,
my Ghostscript is a 32bit version...

-- 
David Kastrup

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


Re: Still cannot make doc :(

2016-05-30 Thread David Kastrup
Thomas Morley  writes:

> 2016-05-29 21:03 GMT+02:00 Thomas Morley :
>
>> I'll now checkout a fresh branch from master, apply Hosoda-san's patch from
>> https://codereview.appspot.com/298320043/
>> change orchestra.ly as before.
>> Try a full `make doc' and report back later.
>
>
> This failed quite early in the regtest with the already mentioned files, 
> namely:
> typography-demo.ly
> utf-8.ly
> profile-property-access.ly
> one-line-breaking.ly
> one-line-auto-height-breaking.ly
> one-line-breaking.ly
>
> All using japanese or including typography-demo.ly, although
> Hosoda-san's patch was applied.
>
> But again, I've a successful run for the english-only doc with all
> japenese commented and a changed orchestra.ly.
> I attach the revised orchestra.ly if someone wans to try. Maybe it
> even helps to track down the problem.

I could just tear out my hairs here.  I have little doubt that you are
onto something (and it seems like Werner has a lead on how to fix it)
but it just does not make sense in connection with the exact commit Knut
pinpointed as starting his problems.

It may or may not be the blocker for James, either.  At any rate, I am
currently going through the C++ standard with respect of initialization
orders and stuff, and I hope to get to tackle the problem Knut has been
focusing on eventually.

It does seem utterly strange that both failures should occur on the same
file of documentation building.  Does it happen early in the build?

-- 
David Kastrup

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


Re: Still cannot make doc :(

2016-05-30 Thread David Kastrup
David Kastrup  writes:

> Thomas Morley  writes:
>
>> 2016-05-29 21:03 GMT+02:00 Thomas Morley :
>>
>>> I'll now checkout a fresh branch from master, apply Hosoda-san's patch from
>>> https://codereview.appspot.com/298320043/
>>> change orchestra.ly as before.
>>> Try a full `make doc' and report back later.
>>
>>
>> This failed quite early in the regtest with the already mentioned files, 
>> namely:
>> typography-demo.ly
>> utf-8.ly
>> profile-property-access.ly
>> one-line-breaking.ly
>> one-line-auto-height-breaking.ly
>> one-line-breaking.ly
>>
>> All using japanese or including typography-demo.ly, although
>> Hosoda-san's patch was applied.
>>
>> But again, I've a successful run for the english-only doc with all
>> japenese commented and a changed orchestra.ly.
>> I attach the revised orchestra.ly if someone wans to try. Maybe it
>> even helps to track down the problem.
>
> I could just tear out my hairs here.  I have little doubt that you are
> onto something (and it seems like Werner has a lead on how to fix it)
> but it just does not make sense in connection with the exact commit Knut
> pinpointed as starting his problems.
>
> It may or may not be the blocker for James, either.  At any rate, I am
> currently going through the C++ standard with respect of initialization
> orders and stuff, and I hope to get to tackle the problem Knut has been
> focusing on eventually.
>
> It does seem utterly strange that both failures should occur on the same
> file of documentation building.  Does it happen early in the build?

Ok, I manage to get

Changing working directory to: `./out-www'
Processing `orchestra.ly'
Parsing...
Interpreting music...ERROR: Wrong type (expecting exact integer): (denies Voice)

now.  That clearly is not font-related.  It also clearly is garbage
collection related: (denies Voice) is part of a context modification.
The interesting thing is that

a) most exact integers (as well as '() and #f) in ranges interesting to
LilyPond are immediate values.  So why is garbage collection even
involved?  Most likely, we have a _callback_ here (or an
unpure/pure-container) that is being overwritten.

b) \denies Voice is only present in
dak@lola:/usr/local/tmp/lilypond$ git grep '\\denies "\?Voice"\?'
ly/engraver-init.ly:  \denies "Voice"
ly/engraver-init.ly:  \denies "Voice"
ly/engraver-init.ly:  \denies "Voice"
ly/engraver-init.ly:  \denies "Voice"
ly/engraver-init.ly:  \denies "Voice"
ly/engraver-init.ly:  \denies "Voice"
ly/engraver-init.ly:  \denies "Voice"
ly/performer-init.ly:  \denies Voice
ly/performer-init.ly:  \denies Voice
ly/performer-init.ly:  \denies Voice
ly/performer-init.ly:  \denies Voice
ly/performer-init.ly:  \denies Voice
ly/performer-init.ly:  \denies Voice
ly/performer-init.ly:  \denies Voice

which likely is read in before any problem is triggered.  It does not
appear like the context definition is copied around a lot in
orchestra.ly but there are several \layout blocks which create a copy of
the current default layout.  I don't see anything obvious otherwise
which could steal an allocated block.

Unfortunately, the error message is essentially useless for figuring out
the source of the problem.  valgrind might be more fruitful.  Sigh.
I think I have a lead on the problem, and at least I get the same
failure now, so I can check.

-- 
David Kastrup

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


Re: Still cannot make doc :(

2016-05-30 Thread David Kastrup
James  writes:

> Zipped Valgrind output of both OSes is attached to this email or can
> be obtained here:
>
> https://drive.google.com/file/d/0B9nZ5LHV2Ds6dGU5VTJjOGNlSm8/view?usp=sharing

By far most complaints are in the GC marking phase and complain about
uninitialized values in stack allocations.  That's perfectly to be
expected with a conservative garbage collector, however.  I'm taking a
look at the heap-related complaints though since on the heap, GC should
not occur conservatively (not in Guile-1 at least).

-- 
David Kastrup

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


Re: Still cannot make doc :(

2016-05-30 Thread David Kastrup
James  writes:

> Hello
>
> On 30/05/16 15:06, David Kastrup wrote:
>> James  writes:
>>
>>> Zipped Valgrind output of both OSes is attached to this email or can
>>> be obtained here:
>>>
>>> https://drive.google.com/file/d/0B9nZ5LHV2Ds6dGU5VTJjOGNlSm8/view?usp=sharing
>> By far most complaints are in the GC marking phase and complain about
>> uninitialized values in stack allocations.  That's perfectly to be
>> expected with a conservative garbage collector, however.  I'm taking a
>> look at the heap-related complaints though since on the heap, GC should
>> not occur conservatively (not in Guile-1 at least).
>>
> In the meantime I have installed 32bit LilyDev at work and am
> currently setting all that up and will run a 'staging merge' now -
> this will bring staging and master up to date hopefully, verify that
> LilyDev works for me (i.e. I have it all configured properly - nice
> job by the way Federico, I haven't used LD for a while).
>
> If it does then I guess I can get some of these new patches tested and
> moved along - but that may be tomorrow, it just depends how much time
> I get today.

Ok,

==15261== 3774 errors in context 100 of 100:
==15261== Conditional jump or move depends on uninitialised value(s)
==15261==at 0x4E923D3: scm_i_sweep_card (in /usr/lib/libguile.so.17.4.0)
==15261==by 0x4E91255: scm_i_sweep_some_cards (in 
/usr/lib/libguile.so.17.4.0)
==15261==by 0x4E916EC: scm_i_sweep_some_segments (in 
/usr/lib/libguile.so.17.4.0)
==15261==by 0x4E907AE: scm_gc_for_newcell (in /usr/lib/libguile.so.17.4.0)
==15261==by 0x4EDDF3E: scm_c_make_vector (in /usr/lib/libguile.so.17.4.0)
==15261==by 0x4E9C62C: ??? (in /usr/lib/libguile.so.17.4.0)
==15261==by 0x59D525: Scheme_hash_table::make_smob() (scm-hash.cc:29)
==15261==by 0x643B51: add_acknowledger(scm_unused_struct*, char const*, 
Protected_scm&) (translator.cc:238)
==15261==by 0x72DEAD: Dots_engraverrhythmic_head_ack_adder() 
(dots-engraver.cc:59)
==15261==by 0x4DDEF8: ly_init_ly_module() (guile-init.cc:57)
==15261==by 0x76710E: call_trampoline(void*) (lily-modules.cc:61)
==15261==by 0x4E8DC01: scm_c_with_fluid (in /usr/lib/libguile.so.17.4.0)
==15261==  Uninitialised value was created by a stack allocation
==15261==at 0x4EDC7C4: scm_c_catch (in /usr/lib/libguile.so.17.4.0)

looks like a red flag concerning the relation to the patch in question..
It's a bit strange that all reported calls seem to be from the same
Dots_engraverrhythmic_head_ack_adder but then this may not mean more
than garbage collection being triggered inside of
Dots_engraverrhythmic_head_ack_adder coincidentally during startup and
it is just bad/good luck that this happens/not at this location on 64/32
bit.

But when it happens, we may have a problem.  Now on to disassembly
and/or code analysis.

-- 
David Kastrup

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


Re: Still cannot make doc :(

2016-05-30 Thread David Kastrup
James  writes:

> David if you need anything from any of these outputs on my machines
> here at work, let me know and I'll do whatever tests or output that
> you think might be helpful.
>
> Hope the Nettle-reaping was successful.

Scything.  There is nothing to reap, they just have to be kept from
proliferating within the meadows.  Somewhat annoyingly, when scything on
an active meadow, some horses will indeed get behind you and start short
work on the results.  Apparently detaching them from the ground is the
most tedious part of eating them.

-- 
David Kastrup

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


Re: pushing to a new branch on server

2016-05-31 Thread David Kastrup
Federico Bruni  writes:

> Hi all
>
> Last week I've worked on updating the italian translation.
> I always work on the translation branch and push to the translation
> branch. Sometimes I need to push my changes to a temporary branch on
> the server (because I want to make a backup before the weekend or
> finish the work at home during the weekend).
>
> I could not push to a /dev/name/branch name. I had to use a short name
> without slashes:
>
> git push origin translation:fedelibre-doc-it
>
> while the following did not work:
>
> git push origin translation:/dev/fede/doc-it
>
> Not a big deal.. but I'd be curious to know what's the mistake.

/dev/fede/doc-it is an absolute path.

-- 
David Kastrup

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


Re: Still cannot make doc :(

2016-05-31 Thread David Kastrup
James  writes:

> Oh Well, Lilydev complains about the same make doc error  when (I use
> -j5) - I am 99% sure, I haven't time now to look at the full output,
> but the messages generated on the console are so familiar that I am
> almost sure it is the same thing.
>
> I have to leave now for Home.

My own LilyPond is now 64bittified so it does not offer anything over
yours.  Issue 4865 compiles for me (well, it got across ly-examples at
least once and I don't care about repeated tries).  Mind you: this is a
code reorganization and mostly mechanical.  It most certainly does _not_
address any potential bug but apparently is enough of a reorganization
that garbage collection now triggers at a different point of time where
the bug wreaks less havoc.

So screw this, I'm pushing that patch to staging out of line.  Let's see
whether lilypond-patchy-staging then not just gets past the ly-examples
but also the rest of the docs.  If it does, for whatever misbegotten
reason, at least we'll stop wasting your time with regular work and I
can get this crap analyzed without time pressure.

-- 
David Kastrup

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


Re: Patchy email

2016-05-31 Thread David Kastrup
pat...@gnu.org writes:

> 09:14:55 (UTC) Begin LilyPond compile, previous commit at 
> dbaf1e56e37be0e204231c5bf1adcb14bd8ac3b8
> 09:15:08 test-master-lock and PID entry exist but previous Patchy
> run (PID 17333) died, resetting test-master-lock anyway.
> 09:15:10 Merged staging, now at:  dbaf1e56e37be0e204231c5bf1adcb14bd8ac3b8
> 09:15:11  Success:./autogen.sh --noconfigure
> 09:15:19 *** FAILED BUILD ***
>   /tmp/lilypond-autobuild/configure --disable-optimising
>   Previous good commit:   a1467ba6de6240dda93009c907b05794ec9b8d54
>   Current broken commit:  dbaf1e56e37be0e204231c5bf1adcb14bd8ac3b8
> 09:15:19 *** FAILED STEP ***
>   merge from staging
>   Failed runner: /tmp/lilypond-autobuild/configure --disable-optimising
> See the log file log-staging-configure.txt
> 09:15:19 Traceback (most recent call last):
>   File 
> "/usr/local/tmp/lilypond-extra/patches/compile_lilypond_test/__init__.py", 
> line 527, in handle_staging
> self.configure (issue_id)
>   File 
> "/usr/local/tmp/lilypond-extra/patches/compile_lilypond_test/__init__.py", 
> line 300, in configure
> issue_id, "configure", env=dict (config.items ("configure_environment")))
>   File 
> "/usr/local/tmp/lilypond-extra/patches/compile_lilypond_test/__init__.py", 
> line 266, in runner
> raise FailedCommand ("Failed runner: %s\nSee the log file %s" % (command, 
> this_logfilename))
> FailedCommand: Failed runner: /tmp/lilypond-autobuild/configure 
> --disable-optimising
> See the log file log-staging-configure.txt

Ugh, sorry for that.  I need to tell my patchy to compile for 64bit or
it will not get along with the libraries.  Let's see whether I manage to
do so.

-- 
David Kastrup

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


Re: Delay import of `midi' module. (issue 297420043 bylemzw...@googlemail.com)

2016-05-31 Thread David Kastrup
"Phil Holmes"  writes:

> - Original Message - 
> From: 
> To: 
> Cc: ; 
> Sent: Tuesday, May 31, 2016 11:37 AM
> Subject: Re: Delay import of `midi' module. (issue 297420043
> bylemzw...@googlemail.com)
>
>>> > Can you push this right to staging
>>
>>> Done.
>>
>> Aargh, I forgot to massage the commit message to mention the issue.
>> Sorry for that.
>
> This causes make test to fail:
>
> Traceback (most recent call last):
> File "/home/patchy/patchybuild/autobuild/scripts/midi2ly.py", line
> 1194, in 
> main ()
> File "/home/patchy/patchybuild/autobuild/scripts/midi2ly.py", line
> 1191, in main
> convert_midi (f, o)
> File "/home/patchy/patchybuild/autobuild/scripts/midi2ly.py", line
> 958, in convert_midi
> t.music = t.parse ()
> File "/home/patchy/patchybuild/autobuild/scripts/midi2ly.py", line
> 441, in parse
> if (e[1][0] == midi.NOTE_OFF
> NameError: global name 'midi' is not defined
> make[2]: *** [out-test/key-initial-midi.ly] Error 1
> make[2]: *** Waiting for unfinished jobs
> make[1]: *** [local-test] Error 2
> make: *** [test] Error 2

Argl.  Removing this commit again.  Werner, do you think you can push a
fixed version?

-- 
David Kastrup

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


Re: Patchy email

2016-05-31 Thread David Kastrup
pat...@gnu.org writes:

> 10:35:41 (UTC) Begin LilyPond compile, previous commit at 
> def633f7a88fe8950b685adee93165c42299bd5c
> 10:35:55 Merged staging, now at:  def633f7a88fe8950b685adee93165c42299bd5c
> 10:35:56  Success:./autogen.sh --noconfigure
> 10:36:13  Success:/tmp/lilypond-autobuild/configure 
> --disable-optimising
> 10:36:17  Success:nice make clean
> 10:42:40  Success:nice make -j3 CPU_COUNT=3
> 10:50:35 *** FAILED BUILD ***
>   nice make test -j3 CPU_COUNT=3
>   Previous good commit:   a1467ba6de6240dda93009c907b05794ec9b8d54
>   Current broken commit:  def633f7a88fe8950b685adee93165c42299bd5c
> 10:50:35 *** FAILED STEP ***
>   merge from staging
>   Failed runner: nice make test -j3 CPU_COUNT=3
> See the log file log-staging-nice-make-test--j3-CPU_COUNT=3.txt
> 10:50:35 Traceback (most recent call last):
>   File 
> "/usr/local/tmp/lilypond-extra/patches/compile_lilypond_test/__init__.py", 
> line 528, in handle_staging
> self.build (issue_id=issue_id)
>   File 
> "/usr/local/tmp/lilypond-extra/patches/compile_lilypond_test/__init__.py", 
> line 328, in build
> issue_id)
>   File 
> "/usr/local/tmp/lilypond-extra/patches/compile_lilypond_test/__init__.py", 
> line 266, in runner
> raise FailedCommand ("Failed runner: %s\nSee the log file %s" % (command, 
> this_logfilename))
> FailedCommand: Failed runner: nice make test -j3 CPU_COUNT=3
> See the log file log-staging-nice-make-test--j3-CPU_COUNT=3.txt

Ugh.  The Python module.  If I compile that with 64bit, it won't
cooperate with my 32bit Python2.7.  And half the desktop environment
depends on that so I don't want to swap that out.

I have to see whether I can make a clean 64/32 split along the necessary
lines here.

-- 
David Kastrup

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


Re: Delay import of `midi' module. (issue 297420043 by lemzw...@googlemail.com)

2016-05-31 Thread David Kastrup
"Phil Holmes"  writes:

> Patchy-staging running now.
>>
>> https://codereview.appspot.com/297420043/

Well, hooray!  master has been pushed.  Now let's see whether this helps
James in any respect (if there is still a Ghostscript problem, it likely
won't, but otherwise it might).

And I need to stop LilyPond from conflating $(LD) for both C and C++.
In fact, it first proceeds to find a good version of LD for C, only to
have it stomped over with '$(CXX)' in STEPMAKE_CXX afterwards (commit
commit 078703a6ab29f75983a55ac2cc35fe5f315da574
Author: Jan Nieuwenhuizen 
Date:   Wed Oct 19 13:54:23 2005 +

* stepmake/stepmake/*:
* */GNUmakefile:
* config.make.in:
* GNUmakefile.in:
* stepmake/aclocal.m4: Friendlier --srcdir build, allowing `make'
from any directory in build-dir.  Cleanups.

* make/srcdir.make.in: Remove.

* lily/main.cc (setup_paths): Fix and document build-dir hack.
).

As I want to have 64bit compilation with C++ and 32bit with C on my
personal computer (don't ask), it's important to have the linker
distinguished properly.

-- 
David Kastrup

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


Re: Delay import of `midi' module. (issue 297420043 by lemzw...@googlemail.com)

2016-05-31 Thread David Kastrup
James  writes:

> On 31/05/16 13:37, David Kastrup wrote:
>> "Phil Holmes"  writes:
>>
>>> Patchy-staging running now.
>>>> https://codereview.appspot.com/297420043/
>> Well, hooray!  master has been pushed.  Now let's see whether this helps
>> James in any respect (if there is still a Ghostscript problem, it likely
>> won't, but otherwise it might).
>
> I am running a merge now - it doesn't matter that someone else already
> has done it (Patchy just replies that staging has already been pushed
> by 'someone else'; I do appreciate those devs that worked on Patchy) -
> so if that works, I'll know in about 20 mins from now.
>
> Then I'll see if I can test a patch - although I fear we may get
> failures that have more to do with needing to rebase with current
> master ;)
>
> I'll let you all know.

I'm rather interested in issue 4871: that one is necessary for my rather
peculiar C++/64 C/32 setup to work.  Once I can push that one to
staging, I should be able to rejoin the lilypond-patchy-staging crowd.

-- 
David Kastrup

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


Re: Delay import of `midi' module. (issue 297420043 by lemzw...@googlemail.com)

2016-05-31 Thread David Kastrup
James  writes:

> On 31/05/16 13:56, James wrote:
>>
>>
>> On 31/05/16 13:37, David Kastrup wrote:
>>> "Phil Holmes"  writes:
>>>
>>>> Patchy-staging running now.
>>>>> https://codereview.appspot.com/297420043/
>>> Well, hooray!  master has been pushed.  Now let's see whether this helps
>>> James in any respect (if there is still a Ghostscript problem, it likely
>>> won't, but otherwise it might).
>>
>> I am running a merge now - it doesn't matter that someone else
>> already has done it (Patchy just replies that staging has already
>> been pushed by 'someone else'; I do appreciate those devs that
>> worked on Patchy) - 
>> so if that works, I'll know in about 20 mins from now.
>>
>> Then I'll see if I can test a patch - although I fear we may get
>> failures that have more to do with needing to rebase with current
>> master ;)
>>
>> I'll let you all know.
> OK that all worked and I was technically able to push.
>
> \o/
>
> Although I hadn't noticed that I had the default values of j3 and it
> took nearly an hour to compile the doc =80 (no wonder people hate
> doing it, I had forgotten what it was like in the olden days when I
> used to do doc work on my 2 CPU iMac running LilyDev in a VM).

That sounds like Lilydev and 32bit.  I'd be interested to know whether
64bit has improved.

> Thanks for the work to all concerned.

The frustrating thing is that the commit that broke things was just
reorganizing some stuff, and the commit that possibly made things work
again was further reorganizing and there is no sane reason for either to
have made a difference.  But I hope this buys me time for figuring out
the insane reasons.

-- 
David Kastrup

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


Re: Delay import of `midi' module. (issue 297420043 by lemzw...@googlemail.com)

2016-05-31 Thread David Kastrup
James  writes:

> On 31/05/16 16:52, David Kastrup wrote:
>
>> That sounds like Lilydev and 32bit.  I'd be interested to know whether
>> 64bit has improved.
>
> This was 64 bit.

Great.

> It is just that I still had default setting of the
> lilypond-patchy-config file is j3 from my restored build environmenty
> when we first had the issue and thought the problem was local to my
> machine.
>
> I can try 32 bit if you like - I still have my lilydev VM around.

Let's just wait and see if someone else hollers.

-- 
David Kastrup

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


Re: Delay import of `midi' module. (issue 297420043 by lemzw...@googlemail.com)

2016-05-31 Thread David Kastrup
James  writes:

> Although I hadn't noticed that I had the default values of j3 and it
> took nearly an hour to compile the doc

Luxury.  https://www.youtube.com/watch?v=VKHFZBUTA4k>

> (no wonder people hate doing it, I had forgotten what it was like in
> the olden days when I used to do doc work on my 2 CPU iMac running
> LilyDev in a VM).

16:55:29 (UTC) Begin LilyPond compile, previous commit at   
1b6d6de94a26c3e8b75e1f78f6d0cfc9eec96a89
16:55:43 Merged staging, now at:1b6d6de94a26c3e8b75e1f78f6d0cfc9eec96a89
16:55:44Success:./autogen.sh --noconfigure
16:56:01Success:/tmp/lilypond-autobuild/configure 
--disable-optimising
16:56:04Success:nice make clean
17:03:03Success:nice make -j3 CPU_COUNT=3
17:18:03Success:nice make test -j3 CPU_COUNT=3
18:32:37Success:nice make doc -j3 CPU_COUNT=3
18:32:54 To ssh://git.sv.gnu.org/srv/git/lilypond.git
   905109e..1b6d6de  test-staging -> master
18:32:54Success:pushed to master

-- 
David Kastrup

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


Spare SSD anybody?

2016-06-01 Thread David Kastrup

Hi,

my current development SSD, graciously donated by James, currently has
the following readings:

Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME  FLAG VALUE WORST THRESH TYPE  UPDATED  
WHEN_FAILED RAW_VALUE
  5 Reallocated_Sector_Ct   0x0033   099   099   ---Pre-fail  Always   
-   13
  9 Power_On_Hours  0x0032   094   094   ---Old_age   Always   
-   25748
 12 Power_Cycle_Count   0x0032   093   093   ---Old_age   Always   
-   6196
175 Program_Fail_Count_Chip 0x0032   099   099   ---Old_age   Always   
-   9
176 Erase_Fail_Count_Chip   0x0032   100   100   ---Old_age   Always   
-   0
177 Wear_Leveling_Count 0x0013   085   085   ---Pre-fail  Always   
-   545
178 Used_Rsvd_Blk_Cnt_Chip  0x0013   077   077   ---Pre-fail  Always   
-   450
179 Used_Rsvd_Blk_Cnt_Tot   0x0013   079   079   ---Pre-fail  Always   
-   844
180 Unused_Rsvd_Blk_Cnt_Tot 0x0013   079   079   ---Pre-fail  Always   
-   3188
181 Program_Fail_Cnt_Total  0x0032   099   099   ---Old_age   Always   
-   13
182 Erase_Fail_Count_Total  0x0032   100   100   ---Old_age   Always   
-   0
183 Runtime_Bad_Block   0x0013   099   099   ---Pre-fail  Always   
-   13
187 Uncorrectable_Error_Cnt 0x0032   100   100   ---Old_age   Always   
-   0
195 ECC_Error_Rate  0x001a   200   200   ---Old_age   Always   
-   0
198 Offline_Uncorrectable   0x0030   100   100   ---Old_age   Offline  
-   0
199 CRC_Error_Count 0x003e   253   253   ---Old_age   Always   
-   0
232 Available_Reservd_Space 0x0013   077   077   ---Pre-fail  Always   
-   1566
241 Total_LBAs_Written  0x0032   032   032   ---Old_age   Always   
-   2933093682
242 Total_LBAs_Read 0x0032   058   058   ---Old_age   Always   
-   1798843749

In the interest of continuity, it seems like a good idea to replace it
soon.  I might return to a rotating disk (which has quite less wear but
is more sensitive to movement, draws more current, and of course is
slower).  After changing my kernel to 64bit, I am currently in the
situation that the computer will no longer wake successfully from sleep
mode (screen stays black), so I have to use hibernation instead.  That's
nice on the battery but sloshes out gigabytes of memory to disk each
time.  So it's not really helping with regard to SSD wear.  I don't have
all that much free capacity either, so what I have is being cycled
often.

Anybody with something to spare?  The current size I have is 120GB.

-- 
David Kastrup

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


Re: Spare SSD anybody?

2016-06-01 Thread David Kastrup
David Kastrup  writes:

> Hi,
>
> my current development SSD, graciously donated by James, currently has
> the following readings:
>
> Vendor Specific SMART Attributes with Thresholds:
> ID# ATTRIBUTE_NAME  FLAG VALUE WORST THRESH TYPE  UPDATED  
> WHEN_FAILED RAW_VALUE
>   5 Reallocated_Sector_Ct   0x0033   099   099   ---Pre-fail  Always  
>  -   13
>   9 Power_On_Hours  0x0032   094   094   ---Old_age   Always  
>  -   25748

Ok, I might have been panicking because of all the lines with "Pre-fail"
and "Old_age" but they only indicate the _category_ of the respective
settings.  Sorry for that.

I'm still trying to figure out the readings as such though.  The
"documentation" including online is not much help.

-- 
David Kastrup

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


Re: Spare SSD anybody?

2016-06-01 Thread David Kastrup
Michael Hendry  writes:

>> On 1 Jun 2016, at 10:07, David Kastrup  wrote:
>> 
>> David Kastrup  writes:
>> 
>>> Hi,
>>> 
>>> my current development SSD, graciously donated by James, currently has
>>> the following readings:
>>> 
>>> Vendor Specific SMART Attributes with Thresholds:
>>> ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED
>>> RAW_VALUE
>>>  5 Reallocated_Sector_Ct 0x0033 099 099 --- Pre-fail Always - 13
>>>  9 Power_On_Hours 0x0032 094 094 --- Old_age Always - 25748
>> 
>> Ok, I might have been panicking because of all the lines with "Pre-fail"
>> and "Old_age" but they only indicate the _category_ of the respective
>> settings.  Sorry for that.
>> 
>> I'm still trying to figure out the readings as such though.  The
>> "documentation" including online is not much help.
>
>
> Surely an SSD is entirely Solid State, so can’t wear out in the way a
> mechanical device does.

Seriously?  https://en.wikipedia.org/wiki/Wear_leveling>.  Which is
why SSD drives are great for servers and are put through the mills as
swap drive.

> Eventually, I suppose, even solid state devices will fail, but I doubt
> that SMART monitoring will give you advance warning of this.

It can keep track of the individual block wear pretty well, and the
average number of reliable block erasures is also known.  So failures
are not _exceptional_ but predictable.  So storage deterioration is
predictable as well as monitorable (either CRC errors or uncleared bits
directly after erasure).  You can get a hint about the bearings of a
rotating disk by monitoring its spinup (and noticing irregularities in
operation) but actual failures tend to come suddenly as platter damage
affecting an area.

-- 
David Kastrup

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


Re: Spare SSD anybody?

2016-06-01 Thread David Kastrup
Alexander Kobel  writes:

> recently I was afraid about my SSD for the same reason, so I asked our
> institute's IT service staff who cares for some dozens (hundreds?) of
> laptops and desktops with SSDs.
>
> They say that even power users of hibernation with high rate of data
> turnover didn't manage to damage their SSDs lately; the horror stories
> for the first generations of SSDs seem not to apply anymore.

Well, I am not sure I have significantly later than first generation...

=== START OF INFORMATION SECTION ===
Model Family: Samsung based SSDs
Device Model: SAMSUNG SSD PM810 2.5" 7mm 128GB
Serial Number:S0NRNEAB524258
LU WWN Device Id: 5 f0 0
Firmware Version: AXM08D1Q
User Capacity:128,035,676,160 bytes [128 GB]
Sector Size:  512 bytes logical/physical
Rotation Rate:Solid State Device
Device is:In smartctl database [for details use: -P show]
ATA Version is:   ATA8-ACS, ATA/ATAPI-7 T13/1532D revision 1
SATA Version is:  SATA 2.6, 3.0 Gb/s (current: 1.5 Gb/s)
Local Time is:Wed Jun  1 12:23:20 2016 CEST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

> You still have to take a bit of care (try to have some empty space,
> and run fstrim once in a while), but other than that you should be
> fine.  As you experienced, the SMART information is rather unhelpful
> unless you have additional context by the manufacturer; more often
> than not, the only semi-reliable source are the manufacturer's own
> toolkits (which, unfortunately, are hardly available on Linux).

> That being said: which form factor/connector do you need?

SATA, 2.5".

> I can ask if I can grab something. Many parts from few-year old
> machines are sorted out regularly here. Not sure about hard disks,
> though - there might be regulations for data protection that prevent
> them from giving out old drives.

Sure, it would be nice to keep in mind.  I'm not really sure what the
expected lifetime of the disk I have is.  Maybe I just need to keep
making backups in sane intervals and otherwise am still fine.

-- 
David Kastrup

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


Re: make doc still fails - problem with lilypond-book - was: Still cannot make doc

2016-06-03 Thread David Kastrup
Thomas Morley  writes:

> First the good news.
> With a build from a checkout of recent staging, I can successfully run
> make LANGS='' doc
> without any failure for orchestra.ly
> ... as soon as I comment/delete all japanese !!

Yes, it was pretty obvious that we are talking about two separate
problems here.  Have you tried the recent patches by Hosoda-san?  They
would appear to concern Japanese font problems, and there are two on
countdown.

-- 
David Kastrup

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


Re: broken doc build (orchestra.ly)

2016-06-05 Thread David Kastrup
Knut Petersen  writes:

> "make doc" succeeds again, at least here.
>
> [newer versions]: make doc succeeds
> dbaf1e56e37be0e204231c5bf1adcb14bd8ac3b8: fixes "make doc" failure here

Ugh, I forgot to make this a merge commit.  The preceding commit does
not compile on its own.  Let's hope that this does not bite too many
people when bisecting.

> 4b4a2cae9953cff69159f10763e990f5e4265ddd: lilypond does not build
> cccd7f9574c72ccecca00641d7a5ea3e8ce99cfd: still broken "make doc"
> [...]
> c1d7bc2217462a63bf5c5c6d6f6df5cb00099180: first broken "make doc"
> [older versions]

The "fixing" commit, like the "breaking" one is a reorganization that
should not have caused a difference either way.  The purpose of
committing the "fix" mainly was to streamline the initialization code
such that tracing and debugging of the initialization would become more
straightforward.

It's not clear to me what even causes somewhat reliably reproducible
failure (with or without --disable-optimising, robust against smaller
changes, across different computers and setups) when LilyPond is called
from the Makefile but not when it is called with the same command line
from the shell.

I am currently doing a large sequence of tentative fixes to garbage
collection/initialization, rebased on the earliest failing commit.  So
far, no change in result.  But it's still stuff useful for avoiding
use-before-initialization.  Guilev2 might be affected worse, so making
things airtight is not a waste of time.  Still, I'd want to get a hold
on the actual culprit.

-- 
David Kastrup

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


Re: make doc still fails - problem with lilypond-book - was: Still cannot make doc

2016-06-05 Thread David Kastrup
Masamichi Hosoda  writes:

> In addition, all fonts of the above without `-dgs-load-fonts' option are fine.
> I suggest removing `-dgs-load-fonts' option from lilypond-book.
> I think that `--bigpdfs' option is more suitable than
> `-dgs-load-fonts'.

Either make for particularly large PDF files, don't they?

-- 
David Kastrup

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


Re: PATCHES: Countdown for June 6th

2016-06-06 Thread David Kastrup
James Lowe  writes:

> Hello,
>
> Here is the current patch countdown list. The next countdown will be on
> June 9th.
>
> A quick synopsis of all patches currently in the review process can be
> found here:
>
> http://philholmes.net/lilypond/allura/
>
> Apologies for the huge list in countdown - we had a bit of a logjam a
> last week because of some doc compiling issue, so if people want the
> countdown to be extended a day or two, just let me know.
>
> I'll assume no reply means I carry on as normal.

I have pushed a number of patches early (cross fingers).  So you should
particularly update your "New" list in order to avoid testing patches
that are already in.

-- 
David Kastrup

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


Re: PATCHES: Countdown for June 6th

2016-06-06 Thread David Kastrup
Dan Eble  writes:

> Also, I submitted a couple patches that do not appear in your list.
> Did I miss a step somewhere?
>
> https://sourceforge.net/p/testlilyissues/issues/2232/
> https://sourceforge.net/p/testlilyissues/issues/3945/

Status "Started" rather than "Accepted".  Changed that right now.

-- 
David Kastrup

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


Re: PATCHES: Countdown for June 6th

2016-06-06 Thread David Kastrup
Dan Eble  writes:

> On Jun 6, 2016, at 08:39 , David Kastrup  wrote:
>> 
>> Dan Eble  writes:
>> 
>>> Also, I submitted a couple patches that do not appear in your list.
>>> Did I miss a step somewhere?
>>> 
>>> https://sourceforge.net/p/testlilyissues/issues/2232/
>>> https://sourceforge.net/p/testlilyissues/issues/3945/
>> 
>> Status "Started" rather than "Accepted".  Changed that right now.
>
> Thanks.  Is there a good reason not to let the git-cl upload script
> set the status to Started?

git-cl already does that.

-- 
David Kastrup

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


Re: PATCHES: Countdown for June 6th

2016-06-06 Thread David Kastrup
Dan Eble  writes:

>> On Jun 6, 2016, at 16:52 , David Kastrup  wrote:
>> 
>> Dan Eble  writes:
>> 
>>> On Jun 6, 2016, at 08:39 , David Kastrup  wrote:
>>>> 
>>>> Dan Eble  writes:
>>>> 
>>>>> Also, I submitted a couple patches that do not appear in your list.
>>>>> Did I miss a step somewhere?
>>>>> 
>>>>> https://sourceforge.net/p/testlilyissues/issues/2232/
>>>>> https://sourceforge.net/p/testlilyissues/issues/3945/
>>>> 
>>>> Status "Started" rather than "Accepted".  Changed that right now.
>>> 
>>> Thanks.  Is there a good reason not to let the git-cl upload script
>>> set the status to Started?
>> 
>> git-cl already does that.
>
> It didn’t for these two issues.

Maybe that happens (not) when uploading to an already existing issue?
For newly created issues at least I did not have problems.

-- 
David Kastrup

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


Re: Spare SSD anybody?

2016-06-07 Thread David Kastrup
Dr Nicholas Bailey  writes:

> On Wednesday, 1 June 2016 12:36:02 BST David Kastrup wrote:
>> Alexander Kobel  writes:
>> ...
>> 
>> Sure, it would be nice to keep in mind.  I'm not really sure what the
>> expected lifetime of the disk I have is.  Maybe I just need to keep
>> making backups in sane intervals and otherwise am still fine.
>
> I had cause to look into this recently and came across the following. 
> Executive summary: everything is fine now and new SSDs last forever.

Well, I don't exactly have a new SSD...

> http://techreport.com/review/27909/the-ssd-endurance-experiment-theyre-all-dead
>
> It's on the internet so it must be true :) (I expect more
> authoritative tests are available).
>
> I'm using a hybrid 1TB in my laptop at the moment with no problems
> with Debian Stretch GNU/Linux as the only OS installed. These devices
> feature typically 8GB or so of flash with the majority of the storage
> being on the whirlydisk.  What the flash gets used for is up to the
> drive.

Well, I'll just stick with what I have until replacement is mandatory or
convenient.  And then I (or more likely the facts) can decide on the
parameters...

-- 
David Kastrup

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


Re: Gub failure

2016-06-08 Thread David Kastrup
"Phil Holmes"  writes:

> Attached is a compressed log file.  I see lots of warnings but no errors.

It does not use the text "error" but there is:

make[1]: *** No rule to make target 
`/home/gub/NewGub/gub/target/darwin-ppc/root/usr/include/freetype2/freetype/ftxf86.h',
 needed by `out/pango-font.o'.  Stop.
make[1]: *** Waiting for unfinished jobs

The "unfinished jobs" create so much more output afterwards that you
probably overlooked this problem.

-- 
David Kastrup

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


Re: rsvg-view can't display SVG files created by lilypond

2016-06-09 Thread David Kastrup
Werner LEMBERG  writes:

>>> >> However, there's still a nasty scaling bug that completely ruins
>>> >> text positioning at larger magnification values.  Sigh.
>>> > 
>>> > Is *this* a bug in librsvg, or another LilyPond output problem?
>>> 
>>> It's definitely a bug in librsvg AFAICS, cf.
>>> 
>>>   https://phabricator.wikimedia.org/T65703
>> 
>> I see on this page that there is a mention of "Fixed in 2.40.13"
>
> I think this is only partially correct, cf.
>
>   https://phabricator.wikimedia.org/T65703#1981688
>
>> Do you happen to know if we could usefully upgrade Denemo to use
>> librsvg 2.40.13 (it always involves quite a bit of work upgrading
>> versions so I thought I'd ask first)
>
> Sorry, I can't help here.  Regarding librsvg, I'm an ordinary user,
> not acquainted with SVG at all.

Well, we are not in the market for SVG compliance testing.  If there are
reasonably simple changes we can make to LilyPond in order to
avoid/sidestep triggering this librsvg bug, then we'll save ourselves a
lot of trouble by just doing some change on our side.  Blame-shifting
tends up to be a lot of work and hassle with _our_ users, never mind
that technically we are not at fault at all.

-- 
David Kastrup

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


Re: rsvg-view can't display SVG files created by lilypond

2016-06-09 Thread David Kastrup
Richard Shann  writes:

> On Thu, 2016-06-09 at 12:57 +0200, David Kastrup wrote:
>> Werner LEMBERG  writes:
>> 
>> >>> >> However, there's still a nasty scaling bug that completely ruins
>> >>> >> text positioning at larger magnification values.  Sigh.
>> >>> > 
>> >>> > Is *this* a bug in librsvg, or another LilyPond output problem?
>> >>> 
>> >>> It's definitely a bug in librsvg AFAICS, cf.
>> >>> 
>> >>>   https://phabricator.wikimedia.org/T65703
>> >> 
>> >> I see on this page that there is a mention of "Fixed in 2.40.13"
>> >
>> > I think this is only partially correct, cf.
>> >
>> >   https://phabricator.wikimedia.org/T65703#1981688
>> >
>> >> Do you happen to know if we could usefully upgrade Denemo to use
>> >> librsvg 2.40.13 (it always involves quite a bit of work upgrading
>> >> versions so I thought I'd ask first)
>> >
>> > Sorry, I can't help here.  Regarding librsvg, I'm an ordinary user,
>> > not acquainted with SVG at all.
>> 
>> Well, we are not in the market for SVG compliance testing.  If there are
>> reasonably simple changes we can make to LilyPond in order to
>> avoid/sidestep triggering this librsvg bug,
>
> I don't know about *this* bug, but I did test out replacing currentColor
> with "black" (in quotes) in the LilyPond source code and it worked fine;
> that seems to me not only a simple but also a fairly sensible change.

Except that it would make it impossible to draw in colors other than
black.  That was the rationale for using currentColor in the first
place.

It would seem like a better idea to explicitly establish a documentwide
default of currentColor to black explicitly somewhere.

-- 
David Kastrup

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


Re: rsvg-view can't display SVG files created by lilypond

2016-06-09 Thread David Kastrup
Richard Shann  writes:

> On Thu, 2016-06-09 at 13:23 +0200, David Kastrup wrote:
>> Richard Shann  writes:
>> 
>> > I don't know about *this* bug, but I did test out replacing
>> > currentColor with "black" (in quotes) in the LilyPond source code
>> > and it worked fine; that seems to me not only a simple but also a
>> > fairly sensible change.
>> 
>> Except that it would make it impossible to draw in colors other than
>> black.  That was the rationale for using currentColor in the first
>> place.
>
> Oh, if that is the case then I'm misremembering - I thought I found
> that explicitly set colors over-rode the value currentColor (or
> "black" or whatever you put at that place in the code).

What is "that place"?

dak@lola:/usr/local/tmp/lilypond$ git grep currentColor
Documentation/misc/ChangeLog-2.10:  change black to currentColor 
everywhere. This fixes color support
scm/output-svg.scm:  (set-attribute 'fill "currentColor"))
scm/output-svg.scm:  (set-attribute 'fill "currentColor")
scm/output-svg.scm:   `(fill . ,(if is-filled "currentColor" "none"))
scm/output-svg.scm:   `(stroke . "currentColor")
scm/output-svg.scm:(stroke . "currentColor")
scm/output-svg.scm:   `(fill . ,(if is-filled "currentColor" "none"))
scm/output-svg.scm:   `(stroke . "currentColor")
scm/output-svg.scm: `(fill . ,(if fill "currentColor" "none"))
scm/output-svg.scm: `(stroke . "currentColor")
scm/output-svg.scm: `(fill . ,(if fill "currentColor" "none"))
scm/output-svg.scm: `(stroke . "currentColor")
scm/output-svg.scm:    '(stroke . "currentColor")
scm/output-svg.scm:`(fill . ,(if fill? "currentColor" "none"))
scm/output-svg.scm:   `(fill . ,(if is-filled "currentColor" "none"))
scm/output-svg.scm:   '(stroke . "currentColor")
scm/output-svg.scm:   '(fill . "currentColor")))


-- 
David Kastrup

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


Re: rsvg-view can't display SVG files created by lilypond

2016-06-09 Thread David Kastrup
Werner LEMBERG  writes:

>> It would seem like a better idea to explicitly establish a
>> documentwide default of currentColor to black explicitly somewhere.
>
> Perhaps a `-dxxx' command-line option?

Anything requiring explicit user effort in order to produce expected
results is not going to mitigate the damage.

-- 
David Kastrup

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


Re: rsvg-view can't display SVG files created by lilypond

2016-06-09 Thread David Kastrup
Werner LEMBERG  writes:

>>>> It would seem like a better idea to explicitly establish a
>>>> documentwide default of currentColor to black explicitly
>>>> somewhere.
>>>
>>> Perhaps a `-dxxx' command-line option?
>> 
>> Anything requiring explicit user effort in order to produce expected
>> results is not going to mitigate the damage.
>
> Mhmm, `damage' is too big a word IMHO.  This problem is already fixed
> in the latest release of librsvg (and it wasn't present in some
> earlier versions about a year ago; at least I was able to submit an
> SVG to Wikipedia without any problems), and I believe that at least
> Wikipedia will update within the next few months.

So a half-year outage of LilyPond on Wikipedia and a messup of Denemo
and a number of other applications is not "damage".

> The current default of Lilypond is not wrong, as far as I can see.

Shrug.  It doesn't matter whether we can nominally justify calling this
"somebody else's problem".  The fallout still piles up in our backyard.

-- 
David Kastrup

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


Re: Scheme question

2016-06-13 Thread David Kastrup
Phil Holmes  writes:

> Can anyone explain why the f in the attached code is 2 octaves above where 
> I would expect them?
>
> testy = #(define-music-function (note)
>   (ly:music?)
> #{
>   \tag #'a { #note }
>   \tag #'b { #note }
> #})
>
> \score {
> \keepWithTag #'a {
> \new Staff
> {
>   \new Voice { \relative c'' { c d e \testy f } }
> }
>   }
> }

Because you let it be shifted two times before selecting your tag?  Your
music does not contain two _copies_ of note, but rather contains note
_itself_ two times.  So \relative is applied to the same music two times
in succession.

Use #(music-clone note) or #(ly:music-deep-copy note) or $note for your
two uses, and the note will get placed in two separate _copies_ of the
original rather than using the note object itself in two places.

-- 
David Kastrup

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


Re: Scheme question

2016-06-13 Thread David Kastrup
David Kastrup  writes:

> Phil Holmes  writes:
>
>> Can anyone explain why the f in the attached code is 2 octaves above where 
>> I would expect them?
>>
>> testy = #(define-music-function (note)
>>   (ly:music?)
>> #{
>>   \tag #'a { #note }
>>   \tag #'b { #note }
>> #})
>>
>> \score {
>> \keepWithTag #'a {
>> \new Staff
>> {
>>   \new Voice { \relative c'' { c d e \testy f } }
>> }
>>   }
>> }
>
> Because you let it be shifted two times before selecting your tag?  Your
> music does not contain two _copies_ of note, but rather contains note
> _itself_ two times.  So \relative is applied to the same music two times
> in succession.
>
> Use #(music-clone note) or #(ly:music-deep-copy note) or $note for your
> two uses, and the note will get placed in two separate _copies_ of the
> original rather than using the note object itself in two places.

By the way: since \relative is applied before \keepWithTag, the result
will still likely suck when writing

\relative c'' { c d e \testy f, c }

since in first iteration it expands to

\relative c'' { c d e \tag #'a f, \tag #'b f, c }

namely

\absolute { c'' d'' e'' \tag #'a f' \tag #'b f c }

so the subsequent c is still likely to be one octave lower than
expected.

So you probably want

testy = #(define-music-function (note)
  (ly:music?)
  (make-relative (note) note
#{
  \tag #'a { $note }
  \tag #'b { $note }
#}))

This uses just "note" as the expression affecting \relative, but places
two separate copies of the once-affected note in your tags.

Expressed differently: the whole concept of \relative sucks.

-- 
David Kastrup

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


Re: Protected_scm warning: returning reference to temporary

2016-06-13 Thread David Kastrup
Dan Eble  writes:

> I noticed these errors building staging in lilydev 3.0:
>
>> /home/dan/lilypond-git/lily/protected-scm.cc: In member function
>> 'Protected_scm::operator scm_unused_struct* const&() const':
>> /home/dan/lilypond-git/lily/protected-scm.cc:75:56: warning:
>> returning reference to temporary [enabled by default]

That sounds bad.  The way I read the C++11 standard (but it may not
apply to lilydev 3.0) this should work out, but there is no real reason
not to use an explicit if/then instead of ? : here in order not to rely
on it.

>> /home/dan/lilypond-git/lily/protected-scm.cc: In member function
>> 'Protected_scm& Protected_scm::operator=(const Protected_scm&)':
>> /home/dan/lilypond-git/lily/protected-scm.cc:60:16: warning:
>> '' may be used uninitialized in this function
>> [-Wuninitialized]
>> /home/dan/lilypond-git/lily/protected-scm.cc:75:56: note:
>> '' was declared here

That's current staging/master?  It would likely be issue 4873 that
caused the change.  I don't remember seeing a similar message on my
computer (native Ubuntu environment rather than lilydev 3.0).

Anyway, I'll push a fix.  Can you check again in 5 minutes?

-- 
David Kastrup

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


Re: Mixing music and markup in Scheme

2016-06-14 Thread David Kastrup
Phil Holmes  writes:

> Yet another question about Scheme functions (note - I _do_ try to find the 
> answers to my questions by reading the manual and experimenting, and have 
> been looking at this for a couple of hours without success).
>
> Background: Renaissance music has a somewhat cavalier attitude to 
> placement of accidentals.  Sometimes they are conventionally placed to the 
> left of the note, and occasionally they are placed above the note, like 
> musica ficta in modern transcriptions.  If I use \set suggestAccidentals = 
> ##t in Mensural music, I get a modern accidental sign, so this doesn't 
> help setting these.  A long-hand way of getting this effect is:

Ugh.

Being cleverer than LilyPond rarely pays off.

mus = \relative c''
{ c4 d e \once \set suggestAccidentals = ##t fis
}

\score {
  \new MensuralStaff \with { \override AccidentalSuggestion.glyph-name-alist =
			 #alteration-mensural-glyph-name-alist }
{
      \new MensuralVoice { \mus }
}
}


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


Re: Mixing music and markup in Scheme

2016-06-14 Thread David Kastrup
"Phil Holmes"  writes:

>> mus = \relative c''
>> { c4 d e \once \set suggestAccidentals = ##t fis
>> }
>>
>> \score {
>>  \new MensuralStaff \with { \override
>> AccidentalSuggestion.glyph-name-alist =
>>  #alteration-mensural-glyph-name-alist }
>>{
>>  \new MensuralVoice { \mus }
>>}
>> }
>>
>
> Excellent, as always.  Thanks.

Well, not really.  Should AccidentalSuggestion.glyph-name-alist be
changed by default here?  Or are the ficta signs in mensural music
usually added as well as styled modernly?

Should there be some more obvious interface?  And/or documentation?

My basic approach here was "there must be something better" and digging
around in the internals doc for candidates and in the "musica ficta" NR
index and finally looking for something related in default context/grob
properties in the Scheme files.

Approaches that don't work without specialist handholding and/or code
archaeology don't really scale well.

-- 
David Kastrup

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


Re: Doc build failing

2016-06-14 Thread David Kastrup
Phil Holmes  writes:

> I thought I'd see how large I get for a doc build and so nuked my build
> directory and started from scratch.  I get a failed doc build (this with
> master).  There are a number of xml files which are throwing errors similar 
> to:
>
> lilypond-git/input/regression/musicxml/02d-Rests-Multimeasure-
> TimeSignatures.xml:7:5: error: syntax error, unexpected end of input
>
> Always the same line and character number 7:5
>
> Has anyone else seen this, or been successful recently?

Unexpected end of input?  My first guess would be that your disk is
full.

I mean, obviously we had versions of lilypond-patchy-staging able to
build docs.

The next guess would be that you need "make test" before doing "make
doc" because of missing dependencies: the xml stuff clearly is from the
regtests, and it would explain why lilypond-patchy-staging is able to
get through with its documentation building.

-- 
David Kastrup

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


Re: A regression

2016-06-21 Thread David Kastrup
Richard Shann  writes:

> (this happened after inserting a page break). It compiles ok with
> 2.18.2. My question is, would it be helpful to anyone to have the file?
> (Obviously cutting it down to a minimal example is not an option).

\repeat unfold 2000 c'4

is a pretty minimal way to produce lots of pages.  While it likely takes
considerable effort to replace parts of the file in this manner while
producing the same error, that's not the same as "obviously not an
option".  Debugging such problems tends to be quite a headache on its
own: reducing the number of elements that might be involved here will
definitely be helpful.

-- 
David Kastrup

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


Re: What to do with input/regression/page-spacing.ly

2016-06-22 Thread David Kastrup
Thomas Morley  writes:

> Hi,
>
> in input/regression/page-spacing.ly several commands for
> \overrideProperty
> Score.NonMusicalPaperColumn.line-break-system-details
> ...
> are applied, i.e. settings for Y-extent, refpoint-Y-extent,
> next-padding, next-space, bottom-space.
>
> As far as I can tell none of them has any visual effect anymore as
> opposed to (far) earlier ly-version.
> Attached a cut off from
> http://lilypond.org/doc/v2.10/input/regression/collated-files.pdf
> page 86
> (In my pdf-viewer every glyph is omitted, incompatlible software for
> such an old file I guess, but that's not the point here)
> You'll see those settings _had_ an effect with v2.10
> Additionally, the `obsolete-between-system-space` there let me guess
> that convert-ly was applied to it at some point of time and since then
> nobody touched it.
>
> Strange enough, the last commit I've found tackling paper-system.scm is

Cf. 
https://lists.gnu.org/archive/html/lilypond-devel/2015-06/msg00068.html>
and Trevor's answer.

Not that this is overly conclusive about what we should do here.

-- 
David Kastrup

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


Re: compiling lilypond fails

2016-06-24 Thread David Kastrup
Marc Hohl  writes:

> Hi list,
>
> after a recent "git pull", the call "make -j3" fails with
>
> ---
>
> In file included from slur-engraver.cc:32:0:
> slur-engraver.cc: In static member function 'static void
> Slur_engraver::boot()':
> ./include/translator.icc:115:40: error:
> '&Slur_proto_engraver::listen_slur' is not a valid template argument
> for type 'void (Slur_engraver::*)(Stream_event*)' because it is of
> type 'void (Slur_proto_engraver::*)(Stream_event*)'
>   method_finder<&cl::listen_ ## m> (),   \
> ^
> slur-engraver.cc:65:3: note: in expansion of macro 'ADD_LISTENER'
>ADD_LISTENER (Slur_engraver, slur);
>^
> ./include/translator.icc:115:40: note: standard conversions are not
> allowed in this context
>   method_finder<&cl::listen_ ## m> (),   \
> ^
> slur-engraver.cc:65:3: note: in expansion of macro 'ADD_LISTENER'
>ADD_LISTENER (Slur_engraver, slur);
>^
> make[1]: *** [out/slur-engraver.o] Error 1
> make[1]: *** Waiting for unfinished jobs
> make[1]: Leaving directory `/home/marc/git/lilypond/lily'
> make: *** [all] Fehler 2
>
> ---
>
> The error is reproducable with a fresh git clone
>
> Any ideas?

Well, it got through patchy-staging.  So obviously something is
different with your setup, and you don't give any information about your
setup.  What does g++ --version say?

You used git pull (rather than git pull -r).  That causes a merge rather
than a rebase.  Recent changes in master happened to be reverts which
did not apply cleanly but had to be significantly edited.

Adding merge resolution on top might lead to problems.

Can you try rebasing on master/origin and see whether that helps?

-- 
David Kastrup

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


Re: compiling lilypond fails

2016-06-24 Thread David Kastrup
"Phil Holmes"  writes:

> make fails for me.  Old Ubuntu 10.04.  Nuked build and reran configur
> etc. Result is:
>
> In file included from
> /media/IntelSSD/lilypond/lilypond-git/lily/slur-engraver.cc:32:0:
> /media/IntelSSD/lilypond/lilypond-git/lily/slur-engraver.cc: In static
> member function 'static void Slur_engraver::boot()':
> /media/IntelSSD/lilypond/lilypond-git/lily/include/translator.icc:115:40:
> error: '&Slur_proto_engraver::listen_slur' is not a valid template
> argument for type 'void (Slur_engraver::*)(Stream_event*)' because it
> is of type 'void (Slur_proto_engraver::*)(Stream_event*)'
> method_finder<&cl::listen_ ## m> (), \
> ^
> /media/IntelSSD/lilypond/lilypond-git/lily/slur-engraver.cc:65:3:
> note: in expansion of macro 'ADD_LISTENER'
> ADD_LISTENER (Slur_engraver, slur);
> ^
> /media/IntelSSD/lilypond/lilypond-git/lily/include/translator.icc:115:40:
> note: standard conversions are not allowed in this context
> method_finder<&cl::listen_ ## m> (), \
> ^
> /media/IntelSSD/lilypond/lilypond-git/lily/slur-engraver.cc:65:3:
> note: in expansion of macro 'ADD_LISTENER'
> ADD_LISTENER (Slur_engraver, slur);
> ^
> make[1]: *** [out/slur-engraver.o] Error 1
> make[1]: *** Waiting for unfinished jobs
> make[1]: Leaving directory
> `/media/IntelSSD/lilypond/lilypond-git/build/lily'
> make: *** [all] Error 2
> phil@Ubuntu:~/lilypond-git/build$

I don't think we have supported 10.04 for a long time now (and there
have been long streaks of time where it definitely failed on other
stuff).

I am somewhat puzzled at this failure because exactly the _same_
technique has been used for acknowledgers for quite a while now,
recently reversed, and later reinstated.

So it does not make a whole lot of sense to be that it fails with
listeners, and only with some compilers.  The responsible commit would
likely be

commit f7013d65b51f1372dc31973b78bbe04f505ea569
Author: David Kastrup 
Date:   Sat Jun 18 10:20:43 2016 +0200

Issue 4899/1: Let method_finder also find listeners

This allows using inherited listeners directly like with
acknowledgers and translator methods.

However, it is also conceivable that some other commit in the 4899
series pushes your compiler version over the edge.  Can you try checking
which commits in issue 4899 (if any) make your compilation go bad?

Maybe I can figure then out what is unique about them after all and we
can figure out how to be more compiler-friendly.

Marc, what compiler version do you have?

-- 
David Kastrup

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


Re: compiling lilypond fails

2016-06-24 Thread David Kastrup
Knut Petersen  writes:

> os / compiler
> ===
>
> os version: linux, openSUSE 13.2 (Harlequin) (x86_64)
> gcc --version: (SUSE Linux) 4.8.3 20140627 [gcc-4_8-branch revision 212064]

Pretty old as well.

> git bisect log
> =
> git bisect start
> # good: [f4e12f1b0cb5dfb32f193f87e7ca28c406b87771] Issue 2232: fix MIDI 
> output of abutting (de)crescendi
> git bisect good f4e12f1b0cb5dfb32f193f87e7ca28c406b87771
> # bad: [a975d6f176453d35367e3fa4808c7061d326a9e7] Issue 4898: Set 
> rhythmic-location early in paper-column-engraver
> git bisect bad a975d6f176453d35367e3fa4808c7061d326a9e7
> # good: [f9b2cfebb944a0ea7d7c35a583233c51039486aa] PO: update template.
> git bisect good f9b2cfebb944a0ea7d7c35a583233c51039486aa
> # bad: [f7013d65b51f1372dc31973b78bbe04f505ea569] Issue 4899/1: Let 
> method_finder also find listeners
> git bisect bad f7013d65b51f1372dc31973b78bbe04f505ea569
> # good: [f869d8f6ebe878618588036e17971166721de9e0] Release: bump Welcome 
> versions.
> git bisect good f869d8f6ebe878618588036e17971166721de9e0
> # good: [5dbaaca80b06fda4b0a3b9cdc67760a2735dbee1] Merge remote branch 
> 'origin/release/unstable' into HEAD
> git bisect good 5dbaaca80b06fda4b0a3b9cdc67760a2735dbee1
> # good: [ec6b4cc313dd6a1aa4070080076da54b7f1c0c71] Release: bump VERSION.
> git bisect good ec6b4cc313dd6a1aa4070080076da54b7f1c0c71
> # first bad commit: [f7013d65b51f1372dc31973b78bbe04f505ea569] Issue 4899/1: 
> Let method_finder also find listeners

Ok, this is sort of a nuisance because I still have pending stuff in
that exact area (starting with issue 4903) and the same engravers.

At any rate, this implies that TRANSLATOR_INHERIT fails doing its job
when it has to inherit overloaded template functions with a single
"using" instruction.  I propose the following patch (to current
master).  Does it change something for you?

>From fa45edd4db3d49817425fa7833559f20697c3c74 Mon Sep 17 00:00:00 2001
From: David Kastrup 
Date: Fri, 24 Jun 2016 15:10:44 +0200
Subject: [PATCH] Split overloaded `method_finder' in two

Some older g++ compilers seem unhappy about the mixture of `using'
instructions and overloading in connection with templates, so the
overloaded way of calling `method_finder' is split into `method_finder'
and `listen_finder'.
---
 lily/include/translator.hh  | 8 +++-
 lily/include/translator.icc | 2 +-
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/lily/include/translator.hh b/lily/include/translator.hh
index cd05091..3a13f8a 100644
--- a/lily/include/translator.hh
+++ b/lily/include/translator.hh
@@ -39,6 +39,7 @@
 
 #define TRANSLATOR_INHERIT(BASE)\
   using BASE::method_finder;\
+  using BASE::listen_finder;\
   using BASE::ack_finder;
 
 #define DECLARE_TRANSLATOR_CALLBACKS(NAME)  \
@@ -48,7 +49,7 @@
 return Callback0_wrapper::make_smob ();   \
   } \
   template\
-  static SCM method_finder ()   \
+  static SCM listen_finder ()   \
   { \
 return Callback_wrapper::make_smob > ();   \
   } \
@@ -165,6 +166,11 @@ protected:  // should be private.
   static SCM
   method_finder () { return SCM_UNDEFINED; }
 
+  // Overriden elsewhere but needed for TRANSLATOR_INHERIT
+  template 
+  static SCM
+  listen_finder () { return SCM_UNDEFINED; }
+
   // Overriden in Engraver.  Don't instantiate.
   template 
   static SCM ack_trampoline (SCM, SCM, SCM);
diff --git a/lily/include/translator.icc b/lily/include/translator.icc
index 3d038b6..cd9fa58 100644
--- a/lily/include/translator.icc
+++ b/lily/include/translator.icc
@@ -112,7 +112,7 @@ void add_acknowledger (SCM ptr,
 #define ADD_LISTENER(cl, m) \
   listener_list_ = scm_acons\
 (event_class_symbol (#m),   \
- method_finder<&cl::listen_ ## m> (),   \
+ listen_finder<&cl::listen_ ## m> (),   \
  listener_list_)
 
 #endif /* TRANSLATOR_ICC */
-- 
2.7.4



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


Re: [GSoC] spanners project update

2016-06-24 Thread David Kastrup
Jan-Peter Voigt  writes:

> Hi Nathan, hi Dan,
>
> the "nearest" context might be on Staff level - or, if (for example)
> you have voices switching staves, on StaffGroup level, where a
> StaffGroup also might be a GrandStaff or the like. If the context
> property turns out to complex (I don't see all consequences yet),
> you'll have to use this static engraver member. But you should try the
> "nearest" context.

A static engraver member would be a total disaster.  What happens for
stuff like

{ c1-\markup \score { \new Staff { e1 } } }

with global variables like that?  What happens when the engraver is
being collected but the static member stays around without protection
from garbage collection?  Or if it is protected, will it drag into the
next file to be processed on the command line?

Ids for \= could be specified as a key-list? and if it has two members
(more would be an error) the first should be a context type symbol
indicating the context the separate engravers choose to share their data
over.

-- 
David Kastrup

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


Re: compiling lilypond fails

2016-06-24 Thread David Kastrup
Knut Petersen  writes:

> Am 24.06.2016 um 15:13 schrieb David Kastrup:
>> At any rate, this implies that TRANSLATOR_INHERIT fails doing its job
>> when it has to inherit overloaded template functions with a single
>> "using" instruction.  I propose the following patch (to current
>> master).  Does it change something for you?
>
> No:
>
> In file included from /home/knut/sources/lily/lily/slur-engraver.cc:32:0:
> /home/knut/sources/lily/lily/slur-engraver.cc: In static member function 
> 'static void Slur_engraver::boot()':
> /home/knut/sources/lily/lily/include/translator.icc:115:40: error: 
> '&Slur_proto_engraver::listen_slur' is not a valid template argument for type 
> 'void (Translator::*)(Stream_event*)' because it is of type 'void 
> (Slur_proto_engraver::*)(Stream_event*)'
>   listen_finder<&cl::listen_ ## m> (),   \
> ^
> /home/knut/sources/lily/lily/slur-engraver.cc:65:3: note: in expansion of 
> macro 'ADD_LISTENER'
>ADD_LISTENER (Slur_engraver, slur);
>^
> /home/knut/sources/lily/lily/include/translator.icc:115:40: error: 
> '&Slur_proto_engraver::listen_slur' is not a valid template argument for type 
> 'void (Slur_engraver::*)(Stream_event*)' because it is of type 'void 
> (Slur_proto_engraver::*)(Stream_event*)'
>   listen_finder<&cl::listen_ ## m> (),   \
> ^
> /home/knut/sources/lily/lily/slur-engraver.cc:65:3: note: in expansion of 
> macro 'ADD_LISTENER'
>ADD_LISTENER (Slur_engraver, slur);
>^
> /home/knut/sources/lily/lily/include/translator.icc:115:40: note: standard 
> conversions are not allowed in this context
>   listen_finder<&cl::listen_ ## m> (),   \
> ^
> /home/knut/sources/lily/lily/slur-engraver.cc:65:3: note: in expansion of 
> macro 'ADD_LISTENER'
>ADD_LISTENER (Slur_engraver, slur);
>^
> /home/knut/sources/lily/stepmake/stepmake/c++-rules.make:4: recipe for target 
> 'out/slur-engraver.o' failed
> make[1]: *** [out/slur-engraver.o] Error 1
> make[1]: *** Waiting for unfinished jobs
> /home/knut/sources/lily/lily/staff-performer.cc: In member function 'int 
> Staff_performer::get_channel(const string&)':
> /home/knut/sources/lily/lily/staff-performer.cc:295:37: warning: conversion 
> to 'int' from 'std::map, int>::size_type {aka long 
> unsigned int}' may alter its value [-Wconversion]
>  : channel_map.size ();
>  ^
> make[1]: Leaving directory '/home/knut/sources/lily/build/lily'
> /home/knut/sources/lily/stepmake/stepmake/generic-targets.make:6: recipe for 
> target 'all' failed
> make: *** [all] Error 2

Weird.  What happens if you swap the adjacent lines

  DECLARE_TRANSLATOR_CALLBACKS (NAME);  \
  TRANSLATOR_INHERIT (Translator);  \

in lily/include/translator.hh ?

-- 
David Kastrup

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


Re: compiling lilypond fails

2016-06-24 Thread David Kastrup

Ok, next try.

>From 664bdeb25a2ece31bd42774e1c0c7cadb790ebf1 Mon Sep 17 00:00:00 2001
From: David Kastrup 
Date: Fri, 24 Jun 2016 15:10:44 +0200
Subject: [PATCH] TRANSLATOR_INHERIT -> ENGRAVER_INHERIT

In order to accommodate older g++ compilers, inheriting
methods/listeners/acknowledgers is only provided for engravers now, the
main (and so far sole) customer of this technique.

method_finder is split into both method_finder and listen_finder to
avoid trickier forms of overloading.
---
 lily/auto-beam-engraver.cc  |  2 +-
 lily/beam-engraver.cc   |  2 +-
 lily/include/coherent-ligature-engraver.hh  |  2 +-
 lily/include/gregorian-ligature-engraver.hh |  2 +-
 lily/include/translator.hh  | 11 ---
 lily/include/translator.icc |  2 +-
 lily/kievan-ligature-engraver.cc|  2 +-
 lily/mensural-ligature-engraver.cc  |  2 +-
 lily/phrasing-slur-engraver.cc  |  2 +-
 lily/slur-engraver.cc   |  2 +-
 lily/vaticana-ligature-engraver.cc  |  2 +-
 11 files changed, 14 insertions(+), 17 deletions(-)

diff --git a/lily/auto-beam-engraver.cc b/lily/auto-beam-engraver.cc
index 3f03362..4eea5c9 100644
--- a/lily/auto-beam-engraver.cc
+++ b/lily/auto-beam-engraver.cc
@@ -579,7 +579,7 @@ ADD_TRANSLATOR (Auto_beam_engraver,
 class Grace_auto_beam_engraver : public Auto_beam_engraver
 {
   TRANSLATOR_DECLARATIONS (Grace_auto_beam_engraver);
-  TRANSLATOR_INHERIT (Auto_beam_engraver);
+  ENGRAVER_INHERIT (Auto_beam_engraver);
 
 private:
   Moment last_grace_start_; // Full starting time of last grace group
diff --git a/lily/beam-engraver.cc b/lily/beam-engraver.cc
index 9b4df64..8065c0d 100644
--- a/lily/beam-engraver.cc
+++ b/lily/beam-engraver.cc
@@ -342,7 +342,7 @@ class Grace_beam_engraver : public Beam_engraver
 {
 public:
   TRANSLATOR_DECLARATIONS (Grace_beam_engraver);
-  TRANSLATOR_INHERIT (Beam_engraver);
+  ENGRAVER_INHERIT (Beam_engraver);
 
 protected:
   virtual bool valid_start_point ();
diff --git a/lily/include/coherent-ligature-engraver.hh b/lily/include/coherent-ligature-engraver.hh
index 78bfef8..8c457dd 100644
--- a/lily/include/coherent-ligature-engraver.hh
+++ b/lily/include/coherent-ligature-engraver.hh
@@ -26,7 +26,7 @@ class Coherent_ligature_engraver : public Ligature_engraver
 public:
   // no TRANSLATOR_DECLARATIONS (Coherent_ligature_engraver) needed
   // since this class is abstract
-  TRANSLATOR_INHERIT (Ligature_engraver);
+  ENGRAVER_INHERIT (Ligature_engraver);
   DECLARE_TRANSLATOR_CALLBACKS (Coherent_ligature_engraver);
 
 protected:
diff --git a/lily/include/gregorian-ligature-engraver.hh b/lily/include/gregorian-ligature-engraver.hh
index fcac99c..7076a4f 100644
--- a/lily/include/gregorian-ligature-engraver.hh
+++ b/lily/include/gregorian-ligature-engraver.hh
@@ -29,7 +29,7 @@ public:
   // no TRANSLATOR_DECLARATIONS (Gregorian_ligature_engraver) needed
   // since this class is abstract
 
-  TRANSLATOR_INHERIT(Coherent_ligature_engraver);
+  ENGRAVER_INHERIT (Coherent_ligature_engraver);
   DECLARE_TRANSLATOR_CALLBACKS (Gregorian_ligature_engraver);
 protected:
   Gregorian_ligature_engraver ();
diff --git a/lily/include/translator.hh b/lily/include/translator.hh
index cd05091..977955b 100644
--- a/lily/include/translator.hh
+++ b/lily/include/translator.hh
@@ -34,11 +34,12 @@
   VIRTUAL_COPY_CONSTRUCTOR (Translator, NAME);  \
   virtual void fetch_precomputable_methods (SCM methods[]); \
   DECLARE_TRANSLATOR_CALLBACKS (NAME);  \
-  TRANSLATOR_INHERIT (Translator);  \
+  using Translator::method_finder;  \
   /* end #define */
 
-#define TRANSLATOR_INHERIT(BASE)\
+#define ENGRAVER_INHERIT(BASE)  \
   using BASE::method_finder;\
+  using BASE::listen_finder;\
   using BASE::ack_finder;
 
 #define DECLARE_TRANSLATOR_CALLBACKS(NAME)  \
@@ -48,7 +49,7 @@
 return Callback0_wrapper::make_smob ();   \
   } \
   template\
-  static SCM method_finder ()   \
+  static SCM listen_finder ()   \
   { \
 return Callback_wrapper::make_smob > ();   \
   } \
@@ -169,10 +170,6 @@ protected:  // should be private.
   template 
   static SCM ack_trampoline (SCM, SCM, SCM);
 
-  // Overriden in Engraver.  Don't instantiate.
-  template 
-  static SCM ack_finder ();
-
 

Re: compiling lilypond fails

2016-06-24 Thread David Kastrup
Marc Hohl  writes:

> Am 24.06.2016 um 10:33 schrieb David Kastrup:
> [...]
>>
>> Well, it got through patchy-staging.  So obviously something is
>> different with your setup, and you don't give any information about your
>> setup.  What does g++ --version say?
>
> $ g++ --version
> g++ (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
> Copyright (C) 2013 Free Software Foundation, Inc.
> This is free software; see the source for copying conditions.  There is NO
> warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
>
>
>>
>> You used git pull (rather than git pull -r).  That causes a merge rather
>> than a rebase.  Recent changes in master happened to be reverts which
>> did not apply cleanly but had to be significantly edited.
>>
>> Adding merge resolution on top might lead to problems.
>
> As mentioned earlier, I started from scratch just to be on the safe side:
>
> $ git clone git://git.sv.gnu.org/lilypond.git ./lilypond
> $ cd lilypond
> $ ./autogen.sh
> $ make -j3
>
> The error remains.

Yeah, it seems to be g++ 4 vs g++ 5 (and g++ 6, according to Federico(?)
crashes somewhere else.  Great.)  Let's see how my last proposal fares.

-- 
David Kastrup

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


Re: compiling lilypond fails

2016-06-24 Thread David Kastrup
Knut Petersen  writes:

> Am 24.06.2016 um 16:43 schrieb David Kastrup:
>> Ok, next try.
>>
>
> On top of HEAD:
>
> In file included from /home/knut/sources/lily/lily/slur-engraver.cc:32:0:
> /home/knut/sources/lily/lily/slur-engraver.cc: In static member function 
> 'static void Slur_engraver::boot()':
> /home/knut/sources/lily/lily/include/translator.icc:115:40: error: 
> '&Slur_proto_engraver::listen_slur' is not a valid template argument for type 
> 'void (Slur_engraver::*)(Stream_event*)' because it is of type 'void 
> (Slur_proto_engraver::*)(Stream_event*)'
>   listen_finder<&cl::listen_ ## m> (),   \
> ^
> /home/knut/sources/lily/lily/slur-engraver.cc:65:3: note: in expansion of 
> macro 'ADD_LISTENER'
>ADD_LISTENER (Slur_engraver, slur);
>^
> /home/knut/sources/lily/lily/include/translator.icc:115:40: note: standard 
> conversions are not allowed in this context
>   listen_finder<&cl::listen_ ## m> (),   \
> ^
> /home/knut/sources/lily/lily/slur-engraver.cc:65:3: note: in expansion of 
> macro 'ADD_LISTENER'
>ADD_LISTENER (Slur_engraver, slur);
>^

Running out of ideas here.  Can you run this with -k (which means keep
going upon error) and direct error output to file, like 2>/tmp/make.log ?

I have a hard time understanding why this blows up and nothing else, and
maybe it's just because it is encountered first?  make -k should clear
that up.

-- 
David Kastrup

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


Re: compiling lilypond fails

2016-06-24 Thread David Kastrup
Knut Petersen  writes:

> Am 24.06.2016 um 18:15 schrieb David Kastrup:
>> Knut Petersen  writes:
>>
>>> Am 24.06.2016 um 16:43 schrieb David Kastrup:
>>>> Ok, next try.
>>>>
>>> On top of HEAD:
>>>
>>> In file included from /home/knut/sources/lily/lily/slur-engraver.cc:32:0:
>>> /home/knut/sources/lily/lily/slur-engraver.cc: In static member function 
>>> 'static void Slur_engraver::boot()':
>>> /home/knut/sources/lily/lily/include/translator.icc:115:40: error: 
>>> '&Slur_proto_engraver::listen_slur' is not a valid template argument for 
>>> type 'void (Slur_engraver::*)(Stream_event*)' because it is of type 'void 
>>> (Slur_proto_engraver::*)(Stream_event*)'
>>>listen_finder<&cl::listen_ ## m> (),   \
>>>  ^
>>> /home/knut/sources/lily/lily/slur-engraver.cc:65:3: note: in expansion of 
>>> macro 'ADD_LISTENER'
>>> ADD_LISTENER (Slur_engraver, slur);
>>> ^
>>> /home/knut/sources/lily/lily/include/translator.icc:115:40: note: standard 
>>> conversions are not allowed in this context
>>>listen_finder<&cl::listen_ ## m> (),   \
>>>  ^
>>> /home/knut/sources/lily/lily/slur-engraver.cc:65:3: note: in expansion of 
>>> macro 'ADD_LISTENER'
>>> ADD_LISTENER (Slur_engraver, slur);
>>> ^
>> Running out of ideas here.  Can you run this with -k (which means keep
>> going upon error) and direct error output to file, like 2>/tmp/make.log ?
>
> source: 975d6f176453d35367e3fa4... + 
> 0001-TRANSLATOR_INHERIT-ENGRAVER_INHERIT.patch
>
> autogen.sh --noconfigure
> configure --prefix=/home/knut/sources/lilybisect/
> make -k -j 1 CPU_COUNT=1 all
>
> Logfile attached.

I see a single error.  That's ... curious.  Have to go to rehearsal now,
will investigate later.

-- 
David Kastrup

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


Re: compiling lilypond fails

2016-06-24 Thread David Kastrup
David Kastrup  writes:

>> autogen.sh --noconfigure
>> configure --prefix=/home/knut/sources/lilybisect/
>> make -k -j 1 CPU_COUNT=1 all
>>
>> Logfile attached.
>
> I see a single error.  That's ... curious.  Have to go to rehearsal now,
> will investigate later.

Ok, I'll just push issue 4903 out right now.  Not because I think it
will fix the problem: I cannot really imagine that.  Merely because it
moves the goal posts far enough that I am loath to try finding a
solution for a problem that might or might not still apply two days
later.

I'll try picking up further on the problem in its then current state
tomorrow.

Sorry for the extra work.

-- 
David Kastrup

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


Re: compiling lilypond fails

2016-06-25 Thread David Kastrup
David Kastrup  writes:

> David Kastrup  writes:
>
>>> autogen.sh --noconfigure
>>> configure --prefix=/home/knut/sources/lilybisect/
>>> make -k -j 1 CPU_COUNT=1 all
>>>
>>> Logfile attached.
>>
>> I see a single error.  That's ... curious.  Have to go to rehearsal now,
>> will investigate later.
>
> Ok, I'll just push issue 4903 out right now.  Not because I think it
> will fix the problem: I cannot really imagine that.  Merely because it
> moves the goal posts far enough that I am loath to try finding a
> solution for a problem that might or might not still apply two days
> later.
>
> I'll try picking up further on the problem in its then current state
> tomorrow.
>
> Sorry for the extra work.

Ok, issue 4903 is now in master.  What's the news on make -k output now?
Does applying the last patch (the one with ENGRAVER_INHERIT in its
title) make any difference in the amount of reported errors?

-- 
David Kastrup

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


Re: compiling lilypond fails

2016-06-25 Thread David Kastrup
David Kastrup  writes:

> David Kastrup  writes:
>
>> David Kastrup  writes:
>>
>>>> autogen.sh --noconfigure
>>>> configure --prefix=/home/knut/sources/lilybisect/
>>>> make -k -j 1 CPU_COUNT=1 all
>>>>
>>>> Logfile attached.
>>>
>>> I see a single error.  That's ... curious.  Have to go to rehearsal now,
>>> will investigate later.
>>
>> Ok, I'll just push issue 4903 out right now.  Not because I think it
>> will fix the problem: I cannot really imagine that.  Merely because it
>> moves the goal posts far enough that I am loath to try finding a
>> solution for a problem that might or might not still apply two days
>> later.
>>
>> I'll try picking up further on the problem in its then current state
>> tomorrow.
>>
>> Sorry for the extra work.
>
> Ok, issue 4903 is now in master.  What's the news on make -k output now?
> Does applying the last patch (the one with ENGRAVER_INHERIT in its
> title) make any difference in the amount of reported errors?

Sigh.  I can answer this myself I think.  After installing g++-4.8 and
using

./configure CXX="g++-4.8 -m64" PYTHON_CONFIG="no"

(the -m64 is because I installed 64bit guile libraries since guile does
not seem to support multilib, and the PYTHON_CONFIG="no" is because
python-config --cflags puts out several flags not supported by g++-4.8)

I've been able to reproduce the error from yesterday.  But it compiles
on the code of today.  So 4903 seems to fix this problem as a side
effect; I have no good idea why.  But it seems somewhat pointless to go
hunting after it until it actually reoccurs.

I'll test the next few changes in this area with this setup before
submitting anyway.

-- 
David Kastrup

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


Re: compiling lilypond fails

2016-06-25 Thread David Kastrup
Knut Petersen  writes:

> Am 25.06.2016 um 10:36 schrieb David Kastrup:
>> Ok, issue 4903 is now in master. What's the news on make -k output
>> now? Does applying the last patch (the one with ENGRAVER_INHERIT in
>> its title) make any difference in the amount of reported errors? 
>
> knut@golem:~/sources/lily> ../mklily
>
> Building lilypond 01cf114a7808fb0d519d0619f6f56c524ce60399... this
> will take some time ;-)
>
> exec ./autogen.sh --noconfigure in /home/knut/sources/lily
> ... succeeded after 0 seconds
> exec ../configure --prefix=/home/knut/sources/lilybisect/ in
> /home/knut/sources/lily/build ... succeeded after 5 seconds
> exec make -k -j 11 CPU_COUNT=11 all in /home/knut/sources/lily/build
> ... succeeded after 71 seconds
> exec make -j 11 CPU_COUNT=11 install in /home/knut/sources/lily/build
> ... succeeded after 2 seconds
> exec make -j 11 CPU_COUNT=11 doc in /home/knut/sources/lily/build
> ... succeeded after 795 seconds
> exec make -j 11 CPU_COUNT=11 install-doc in
> /home/knut/sources/lily/build ... succeeded after 4 seconds
> Total lilypond build time: 877 seconds
>
> So everything looks fine again.

Not with my current patch-in-progress.  g++-4.8 seems to do some kind of
"overloading resolution" by just randomly picking a candidate from
several it fails to distinguish and then complaining when it does not
fit.  The errors I am getting seem sort of arbitrary regarding the
failing template argument candidates.

-- 
David Kastrup

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


Re: compiling lilypond fails

2016-06-25 Thread David Kastrup
David Kastrup  writes:

> Not with my current patch-in-progress.  g++-4.8 seems to do some kind
> of "overloading resolution" by just randomly picking a candidate from
> several it fails to distinguish and then complaining when it does not
> fit.  The errors I am getting seem sort of arbitrary regarding the
> failing template argument candidates.

Ok, I got it.  It's Slur_engraver::listen_slur which is available in two
overloaded versions.  Renaming the two-argument version to something
else brings g++-4.8 back into understanding.  Gratuitous complexity.
I should have known better than that.

Admittedly, that was rather ugly.  A useful error message would have
been nice, but instead GCC resolved something else prematurely and then
got stuck.  Or so.  At any rate, it's reasonably easy to get this out of
the way.

-- 
David Kastrup

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


Re: [GSoC] spanners project update

2016-06-26 Thread David Kastrup
Jan-Peter Voigt  writes:

> Hi all,
>
> @David: thank you for your "emergency call"!
> @Nathan: sorry, for giving you bad advise in this case!
>
> To summarize, what to do with spanners, tagged with an ID: Use context
> properties to store them "globally". You can consider the Score
> context "global". If there is a context defined with \=Staff.myid,
> store it in a context property of - in this case - the Staff context.
>
> Whenever you are up to using static members, change it to properties
> of the Score context - or look for session global objects.

"Session global" does not work with score markups in music:

>>A static engraver member would be a total disaster.  What happens for
>>stuff like
>>
>>{ c1-\markup \score { \new Staff { e1 } } }
>>
>>with global variables like that?

Anything following the progress of typesetting has to run through
engraver-local variables and context properties.

-- 
David Kastrup

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


Re: Fun with upgrades - not

2016-06-28 Thread David Kastrup
Phil Holmes  writes:

> Last week I decided to bite the bullet and upgrade from Ubuntu 10.04 to a 
> more recent version.  I downloaded an upgrade to 12.04, and then used that 
> to do an online upgrade to 14.04.  As a result of this, I lost most of the 
> applications needed to build LilyPond.  I've grabbed a number of then with 
> the software installer or apt, but gave that up for a while whilst I 
> needed the machine for another purpose.

sudo apt-get build-dep lilypond

> This was to run a Windows 7 VM - I use this with Adobe Lightroom 6
> (which won't run on my Vista desktop) for editing my photos.  So I
> installed the latest Oracle VirtualBox and discovered that 14.04
> mounts its disks in media/username, meaning that VB could not find the
> image of my VM.  I hacked the set up file by hand, and got the VM
> running.  Problem is, it runs like a complete drain, taking about two
> minutes to move between photos.  The VM on 10.04 was instantaneous.
> No idea why this should be, but I got so p**sed of with it that I've
> ordered a new PC just for my photography.

Hope that someone else has useful advice: I never ran on a VM.

-- 
David Kastrup

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


Re: Fun with upgrades - not

2016-06-29 Thread David Kastrup
Federico Bruni  writes:

> Il giorno mar 28 giu 2016 alle 19:27, James  ha scritto:
>>> I would first try to set up the system and avoid virtual machines
>>> for LilyPond development.
>>> Installing the dependencies should be as easy as:
>>>
>>> sudo apt-get build-dep lilypond
>>
>> Except when it isn't.
>>
>> I.e. all those extra bits that are documented in the CG.
>>
>> I did a bit of work on a number of Distributions and have had to
>> document those little idiosyncrasies there.
>>
>> http://lilypond.org/doc/v2.19/Documentation/contributor-big-page#requirements-for-compiling-lilypond
>
> Ok, but the point is that it usually works quite easily, at least in
> my experience.
>
> BTW, today I've set up a Debian container with debootstrap and
> systemd-container, to work around the problem of GCC6 in Fedora. It
> seems a very nice way to have a controlled environment for lilypond
> development. I think I'll send some notes soon in this list, in case
> someone wants to try it out.

As soon as GCC6 becomes usefully available for Ubuntu, I'll likely go
after the problem if it persists.  At the current point of time,
particularly with my somewhat weird 32/64-bit setup, that would be a lot
of effort.

I do think that GCC6 is rather bleeding-edge right now and I doubt you'd
find it in RedHat (which uses Fedora as sort of a pretest platform) yet.

-- 
David Kastrup

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


Re: [GSoC] spanners project update

2016-06-30 Thread David Kastrup
Nathan Chou  writes:

> Hello,
>
> I have tried the same idea with context properties, and it seems to
> work just as well as my previous approach with a static member. (To
> summarize: cross voice spanners and the voice they currently belong to
> are stored in a property of some context containing both voices, like
> Score. Each voice's engraver checks this property in its parent
> contexts during an engraving step, and acts on the spanners that
> currently belong to its voice.) Thanks again for the suggestion!
>
> There is a detail I would like to clarify. David suggested allowing \=
> to optionally specify the parent context in which a cross-voice
> spanner's information is shared (although I am not sure how that would
> be done with a key-list, since I think the spanner id itself is a
> string).

Right.  Maybe it should rather be a key?  That would also make
comparison generally faster than string comparisons.

> If this context is not specified, should it default to Score or Staff
> (or something else)?

Nothing at all?  Namely don't look anywhere else unless asked for?

> Also, I am trying to implement this by setting a property of the span
> event to the indicated context symbol; is that a reasonable approach?

Probably.

-- 
David Kastrup

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


Re: [GSoC] spanners project update

2016-06-30 Thread David Kastrup
Urs Liska  writes:

> Am 30.06.2016 um 11:52 schrieb David Kastrup:
>>> There is a detail I would like to clarify. David suggested allowing \=
>>> > to optionally specify the parent context in which a cross-voice
>>> > spanner's information is shared (although I am not sure how that would
>>> > be done with a key-list, since I think the spanner id itself is a
>>> > string).
>> Right.  Maybe it should rather be a key?  That would also make
>> comparison generally faster than string comparisons.
>>
>
> Please consider keeping that as a string.
> When we might start interacting with XML formats (MusicXML, MEI) we'll
> have to deal with string xmlid attributes.

What forms can they take?

-- 
David Kastrup

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


Re: [GSoC] spanners project update

2016-06-30 Thread David Kastrup
Urs Liska  writes:

> Am 30.06.2016 um 14:05 schrieb David Kastrup:
>> Urs Liska  writes:
>>
>>> Am 30.06.2016 um 11:52 schrieb David Kastrup:
>>>>> There is a detail I would like to clarify. David suggested allowing \=
>>>>>> to optionally specify the parent context in which a cross-voice
>>>>>> spanner's information is shared (although I am not sure how that would
>>>>>> be done with a key-list, since I think the spanner id itself is a
>>>>>> string).
>>>> Right.  Maybe it should rather be a key?  That would also make
>>>> comparison generally faster than string comparisons.
>>>>
>>> Please consider keeping that as a string.
>>> When we might start interacting with XML formats (MusicXML, MEI) we'll
>>> have to deal with string xmlid attributes.
>> What forms can they take?
>
> Well, basically whatever a given project may come up with or what an XML
> editor may choose to auto-generate or whatever.
> The following is from a file on http://verovio.org
>
> 
> 
> 
>  oct="3" dur="8" dots="1" stem.dir="up" accid.ges="f"/>
>  oct="3" dur="16" stem.dir="up" accid.ges="f"/>
> 
> 
>  oct="3" dur="8" dots="1" stem.dir="up" accid.ges="f"/>
>  oct="4" dur="16" stem.dir="up"/>
> 
>      oct="4" dur="4" stem.dir="up"/>
> 
> 

Those are rather simple.

> but I have also seen some more or less intuitive schemes attributing
> some semantic information to them (context, timing etc.). They might as
> well be timestamps and/or generated GUIDs.
>
> So, basically anything that a string can hold.

How does that differ from symbols?

-- 
David Kastrup

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


Re: [GSoC] spanners project update

2016-06-30 Thread David Kastrup
Urs Liska  writes:

> Am 30.06.2016 um 14:37 schrieb David Kastrup:
>
>> How does that differ from symbols?
>
> Ah, not in the Scheme domain, of course. But you can't *enter* them as
> LilyPond code, isn't it?

Can you give an example for symbols "entered as LilyPond code" as
opposed to "in the Scheme domain"?

Do you mean "without using #" here?  Why would it be relevant to XML how
you entered a symbol?

-- 
David Kastrup

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


Re: [GSoC] spanners project update

2016-06-30 Thread David Kastrup
Urs Liska  writes:

> Am 30.06.2016 um 14:47 schrieb David Kastrup:
>> Urs Liska  writes:
>>
>>> Am 30.06.2016 um 14:37 schrieb David Kastrup:
>>>
>>>> How does that differ from symbols?
>>> Ah, not in the Scheme domain, of course. But you can't *enter* them as
>>> LilyPond code, isn't it?
>> Can you give an example for symbols "entered as LilyPond code" as
>> opposed to "in the Scheme domain"?
>
> Ah, I mean
>
> #(define %9sn5@ "a")
> %9sn5@ = "a"
>
> but ...
>
>>
>> Do you mean "without using #" here?  Why would it be relevant to XML how
>> you entered a symbol?
>
> of course that doesn't matter here as you can always write
>
> \override NoteHead.id = #'09fjwg@

Well, there are a few strings requiring more complex input:

guile> (string->symbol "()")
#{\(\)}#
guile> (string->symbol "3")
#{3}#

But numbers in particular we'd likely convert to actual number keys.
And it's not like we don't have symbols in a few other places (tags, for
example).  So all in all, I think it should not be too much of a
nuisance.

-- 
David Kastrup

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


Responsiveness in the next days

2016-06-30 Thread David Kastrup

Hi folks,

it would appear that the graphics card on my laptop died on me.  After
an hour of black screen, it now managed to shut down and reboot in some
low-resolution mode.  I don't know how often I'll manage that however.
I'll likely need to take this one apart and look for loose connectors
and if nothing else works, transfer the working parts into another
computer (among two mostly identical laptops, I have one working
keyboard, one working fan assembly and so on).

Since this seems like a graphics card near-death, an external monitor
does not help.

Depending on my amount of success here, I might be of little
availability in the next days.

Sorry for that.

-- 
David Kastrup

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


Re: Responsiveness in the next days

2016-06-30 Thread David Kastrup
David Kastrup  writes:

> Hi folks,
>
> it would appear that the graphics card on my laptop died on me.  After
> an hour of black screen, it now managed to shut down and reboot in some
> low-resolution mode.  I don't know how often I'll manage that however.
> I'll likely need to take this one apart and look for loose connectors
> and if nothing else works, transfer the working parts into another
> computer (among two mostly identical laptops, I have one working
> keyboard, one working fan assembly and so on).
>
> Since this seems like a graphics card near-death, an external monitor
> does not help.
>
> Depending on my amount of success here, I might be of little
> availability in the next days.
>
> Sorry for that.

Looks like false alarm right now.  Functionality returned.  I doubt it
was a temperature problem (persisted too long even when switching the
computer off).  Maybe humidity that had to dissolve?

-- 
David Kastrup

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


Re: [GSoC] spanners project update

2016-07-01 Thread David Kastrup
Nathan Chou  writes:

> Thanks David and Urs for replying.
>
>>> There is a detail I would like to clarify. David suggested allowing \=
>>> to optionally specify the parent context in which a cross-voice
>>> spanner's information is shared (although I am not sure how that would
>>> be done with a key-list, since I think the spanner id itself is a
>>> string).
>>
>> Right.  Maybe it should rather be a key?  That would also make
>> comparison generally faster than string comparisons.
>
> Would I convert a string input to a key, or should I only accept a key
> as a valid id? The latter seems more convenient but I imagine would
> break backward compatibility.

Slightly so.  I'd still aim for that.  The original approach seems
un-Schemish anyway.  A symbol as unique identifier is what symbols are
intended for.

>>> If this context is not specified, should it default to Score or Staff
>>> (or something else)?
>>
>> Nothing at all?  Namely don't look anywhere else unless asked for?
>
> So cross voice spanners should only work if the context to share
> information is specified, right? If the context is not specified and
> there is no default, the spanner id would only be used within the same
> voice and not made known to any other contexts.

I think that would provide clear and obvious semantics.  That's an
advantage.  It's also somewhat cumbersome.  I think that the expected
frequency of occurence is low enough that the overall balance between
obviousness and convenience looks favorable to me.

-- 
David Kastrup

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


Re: [GSoC] spanners project update

2016-07-01 Thread David Kastrup
Urs Liska  writes:

> Am 01.07.2016 um 09:28 schrieb Jan-Peter Voigt:
>>> Hm. If this is a limitation required by the implementation then it's
>>> acceptable. But from a user perspective I would be very surprised if an
>>> ID isn't recognized without an explicitly named context around it. Isn't
>>> that the (one) idea of an ID in general, defining an ID and have it
>>> addressable from anywhere?
>> Well, the spanner-id is used right now to have multiple slurs (or
>> other spanners) in the same Voice. So keeping the spanner-ids in the
>> current Voice would only preserve the current behaviour, if no other
>> context is given. But OTOH (IISC) it wouldn't break the current
>> implementation, as long, as IDs are Score-unique and not only
>> Voice-unique. My preference would be to place it in the Score-context.
>
> I think for the given task (freeing spanners from the voice context
> limitation) it is clear that we'll require IDs to be unique within the
> whole score.

But that means that you can no longer let people write individual parts
with several spanner ids independently even when there never is even
going to be any cross-Voice spanner.  Spanner-ids like \=1 \=2 are not
likely to be unique when they are needed in independently written parts.
So you start trying to make rules which spanner-ids are only supposed to
be used locally and which are supposed to be unique at some level.  And
which level is better?  Staff or Score?

Lots and lots of decisions which are actually best made in connection
with an actual score.  And when they are written into the score, you
don't need to look them up or second-guess them.

-- 
David Kastrup

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


Re: [GSoC] spanners project update

2016-07-05 Thread David Kastrup
Nathan Chou  writes:

> On Fri, Jul 1, 2016 at 12:48 AM, David Kastrup  wrote:
>> But that means that you can no longer let people write individual parts
>> with several spanner ids independently even when there never is even
>> going to be any cross-Voice spanner.  Spanner-ids like \=1 \=2 are not
>> likely to be unique when they are needed in independently written parts.
>> So you start trying to make rules which spanner-ids are only supposed to
>> be used locally and which are supposed to be unique at some level.  And
>> which level is better?  Staff or Score?
>>
>> Lots and lots of decisions which are actually best made in connection
>> with an actual score.  And when they are written into the score, you
>> don't need to look them up or second-guess them.
>
> That is a good point; I might agree with spanner id's not being shared
> across voices if nothing has been indicated. To make this less
> tedious, however: what if after the parent context in which to share
> spanners has been given once, future spanner id's (in the same voice)
> default to share in that context? Or alternatively, perhaps this
> parent share context could be set as a context property, allowing the
> user to indicate a "default"?

How often are you expected to write this?

> Also, since I am accepting a key-list which includes indexes, should I
> treat, for example, the number 1 and the symbol #{1}# as the same id?

I wouldn't.  Other key-list uses don't.  The symbol #{1}# is more of a
curiosity than anything one wants to use regularly.  Basically, I would
change spanner-id to be a key (which does not include symbols).  This
would be a deliberate incompatibility and would mean using eqv (or
ly_is_equal) for comparing spanner id's instead of string comparison.
The spanner-id role of "" would be likely be taken over by the default
'() value.

-- 
David Kastrup

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


Re: [GSoC] spanners project update

2016-07-06 Thread David Kastrup
Nathan Chou  writes:

> On Tue, Jul 5, 2016 at 1:54 AM, David Kastrup  wrote:
>> Nathan Chou  writes:
>>> That is a good point; I might agree with spanner id's not being shared
>>> across voices if nothing has been indicated. To make this less
>>> tedious, however: what if after the parent context in which to share
>>> spanners has been given once, future spanner id's (in the same voice)
>>> default to share in that context? Or alternatively, perhaps this
>>> parent share context could be set as a context property, allowing the
>>> user to indicate a "default"?
>>
>> How often are you expected to write this?
>
> If I understand correctly, my idea was that after you write the shared
> parent context *once*, future cross-voice spanners in that voice would
> by default share in that context; or alternatively, the shared parent
> context would be set *once* as a context property.

My question rather was "how often are you expected to use cross-voice
spanners that the savings would be worth the trouble?".  We don't use a
similar address-saving technique for, say, \override.

> Although I am now having doubts since it does make sense for the
> default blank spanner id (i.e. when no id is given) to not be shared
> across voices, regardless of the presence of cross voice spanners. For
> now I will never share spanner ids unless the context is indicated
> with \=.

I think that's sanest.

> I am currently working on warnings for unterminated spanners. However,
> when I lookup the context property to identify such spanners, and that
> property was never set, Context::internal_get_property attempts to
> look in higher contexts, which sometimes causes warnings for contexts
> that have not actually ended. Does adding an optional argument to
> internal_get_property to prevent looking in higher contexts seem
> reasonable?

Anything wrong with Context::here_defined ?

-- 
David Kastrup

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


<    5   6   7   8   9   10   11   12   >