lilypond-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: T1055: Avoid using deprecated %module-public-interface in guile init


From: Han-Wen Nienhuys
Subject: Re: T1055: Avoid using deprecated %module-public-interface in guile initialisation. (issue1160044)
Date: Wed, 4 Aug 2010 21:16:22 -0300

On Wed, Aug 4, 2010 at 8:13 PM, Ian Hulin <address@hidden> wrote:
> On 01/08/10 22:37, Patrick McCarty wrote:
>> On Sun, Aug 1, 2010 at 2:02 PM, Neil Puttock <address@hidden> wrote:
>>> On 1 August 2010 21:49, Patrick McCarty <address@hidden> wrote:
>>>
>>>> I think I found the problem.
>>>>
>>>> With Guile 1.9, `module-public-interface' doesn't return an interface
>>>> for `the-scm-module', which we rely on:
>>>>
>>>>  scheme@(guile-user)> (module-public-interface the-scm-module)
>>>>  $1 = #f
>>>>  scheme@(guile-user)>
>>>>
>>>> I'll report this upstream.
>>>
>>> OK.  I was just about to reply, since I've seen that error using 1.8
>>> (trying to use `resolve-interface' instead of
>>> module-public-interface).
>>
>> This is quite interesting.  :)
>>
>> I just did a little more research, and these three calls all return
>> the same interface, but the last one doesn't work with Guile 1.9:
>>
>>   guile> (resolve-interface '(guile))
>>   #<interface (guile) 7f3f91117840>
>>   guile> (module-public-interface the-root-module)
>>   #<interface (guile) 7f3f91117840>
>>   guile> (module-public-interface the-scm-module)
>>   #<interface (guile) 7f3f91117840>
>>   guile>
>>
>> So, it looks like we might want to do this:
>>
>> -      SCM scm_module = ly_lily_module_constant ("the-scm-module");
>> +      SCM scm_module = ly_lily_module_constant ("the-root-module");
>>
>>
> I'll ensure this change is in the next patch set for T1055.
>
> À propos of which, I've just hacked things so it gets through the
> regression tests without the call using %module-public-interface woot! :-).
>
> However, to do this I've had to change one regression test and one other
> .scm file used in initialization to add
> (use modules (scm clip-region)).
>
> It looks like the reason is that we have been using a side-effect of the
> call to %module-public-interface to pick up a call to the above
> use-modules in init.ly.  It looks like the side-effect was pick up not
> only the public interface (all the (define-public) declarations etc. of
> the current module, but also all the public interfaces on the uses list
> for the current module [i.e. our sole and only (scm clip-region)]. This
> allowed us to code as if all the public scheme declarations in
> clip-region.scm had been declared in lily.scm - but they weren't.
>
> I have hacked two .scm files input/regression/clip-systems.ly and
> scm/define-grob-properties.scm to include the calls.
>
> The downside of this is the change to the regression test.  The upside
> is that this module is being used as a module where it is needed.

Your approach sounds good to me.  The regression test is not holy, we
can change it if there are good reasons.

Congrats on making this work. I had a todo item in the back of my mind
to resolve this, but you got me to it! :)

-- 
Han-Wen Nienhuys - address@hidden - http://www.xs4all.nl/~hanwen



reply via email to

[Prev in Thread] Current Thread [Next in Thread]