[frogs] Re: Lilypond and Guile forward compatibility

[ Thread Index | Date Index | More lilynet.net/frogs Archives ]


Hi Patrick,

On 17/04/10 03:40, Patrick McCarty wrote:
Hi Ian,

On 2010-04-16, Ian Hulin wrote:
  
I've cloned the LilyPond git repo so I can play with the lily Scheme
scripts which barf with Guile 1.9.x.  If you've got any C++ patches
I can use so I can debug the .scm files I'd be grateful.  I've
already got a version of lily.scm which gets round the stuff with
testing PLATFORM to see if it's running on Windows, but I'm getting
crashes during initialization running with Guile V2.0 which I'm
finding difficult to debug.
    
I just pushed some fixes for these Guile compatibility issues.  I also
addressed the scm/lily.scm issue, so please pull and let me know how
it goes.

You'll have to run ./autogen.sh again, since I made some modifications
to the configure script.

For me, compilation now stops when scm/music-functions.scm tries to
load scm/display-lily.scm.


  
I've just done a fresh clone of lilypond git and picked up your fixes.
I've got Guile 1.9.10, and have set up a script guile-v2
to do
exec $HOME/Desktop/Development/Guile-and-Scheme/guile-1.9.10/meta/uninstalled-env bash
I executed this and then did a clean Lilypond build using the fresh git repo for lilypond.
After I patched the guile-config script to do this

#!/bin/sh
PKG_CONFIG_PATH="/home/ian/usr/lib/pkgconfig:$PKG_CONFIG_PATH"
GUILE_AUTO_COMPILE=0
export PKG_CONFIG_PATH GUILE_AUTO_COMPILE

exec "/home/ian/Desktop/Development/Guile-and-Scheme/guile-1.9.10/meta/guile" -e main -s $0 "$@"
!#
;;;; exec "/home/ian/usr/bin/guile" -e main -s $0 "$@"

The lilypond ./configure now runs to completion, so I did
sh autogen.sh --prefix=$HOME/usr --disable-optimising

After this, lilypond make all ran clear through to building the documentation when it terminated with a segmentation fault.

Poking around with ddd and gdb, it crashes here:

41 void
  42 ly_init_ly_module (void *)
  43 {
  44   for (vsize i = scm_init_funcs_->size (); i--;)
  45     (scm_init_funcs_->at (i)) ();
>>>>^^^^^^^^^^^^^^^^^^
crashes when i gets to 975 (initial value 980), scm_init_funcs_->size() is 981
 46
  47   if (be_verbose_global)
  48     {
  49       progress_indication ("[");
  50       scm_display (scm_c_eval_string ("(%search-load-path \"lily.scm\")"),
  51                    scm_current_error_port ());
  52       progress_indication ("]\n");
  53     }
  54
  55   scm_primitive_load_path (scm_from_locale_string ("lily.scm"));
  56 }
  57

Here's the program output from the run
GNU LilyPond 2.13.19                                                                                 
warning: Relocation: from cwd: argv0=out/bin/lilypond                                                
PATH=/home/ian/Desktop/Development/Guile-and-Scheme/guile-1.9.10/lilypond/out/bin (prepend)          
Setting PATH to /home/ian/Desktop/Development/Guile-and-Scheme/guile-1.9.10/lilypond/out/bin:/home/ian/Desktop/Development/Guile-and-Scheme/guile-1.9.10/meta:/home/ian/Desktop/Development/Guile-and-Scheme/guile-1.9.10/meta:/home/ian/Desktop/Development/Guile-and-Scheme/guile-1.9.10/libguile:/home/ian/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games                              
warning: Relocation: compile datadir=, new datadir=/home/ian/Desktop/Development/Guile-and-Scheme/guile-1.9.10/lilypond/out/share/lilypond//current
warning: Relocation: framework_prefix=/home/ian/Desktop/Development/Guile-and-Scheme/guile-1..9.10/lilypond/out/bin/..
Setting INSTALLER_PREFIX to /home/ian/Desktop/Development/Guile-and-Scheme/guile-1.9.10/lilypond/out/bin/..
PATH=/home/ian/Desktop/Development/Guile-and-Scheme/guile-1.9.10/lilypond/out/bin/../bin (prepend)
Setting PATH to /home/ian/Desktop/Development/Guile-and-Scheme/guile-1.9.10/lilypond/out/bin/../bin:/home/ian/Desktop/Development/Guile-and-Scheme/guile-1.9.10/lilypond/out/bin:/home/ian/Desktop/Development/Guile-and-Scheme/guile-1.9.10/meta:/home/ian/Desktop/Development/Guile-and-Scheme/guile-1.9.10/meta:/home/ian/Desktop/Development/Guile-and-Scheme/guile-1.9.10/libguile:/home/ian/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
Setting GUILE_MIN_YIELD_1 to 65
Setting GUILE_MIN_YIELD_2 to 65
Setting GUILE_MIN_YIELD_MALLOC to 65
Setting GUILE_INIT_SEGMENT_SIZE_1 to 10485760
Setting GUILE_MAX_SEGMENT_SIZE to 104857600

LILYPOND_DATADIR="/home/ian/usr/share/lilypond/2.13.19"
LOCALEDIR="/home/ian/usr/share/locale"

Effective prefix: "/home/ian/Desktop/Development/Guile-and-Scheme/guile-1.9.10/lilypond/out/share/lilypond/current"
GUILE_LOAD_PATH="/home/ian/Desktop/Development/Guile-and-Scheme/guile-1..9.10/guile-readline:/home/ian/Desktop/Development/Guile-and-Scheme/guile-1.9.10:/home/ian/Desktop/Development/Guile-and-Scheme/guile-1.9.10/module:/home/ian/Desktop/Development/Guile-and-Scheme/guile-1.9.10/module"
PATH="/home/ian/Desktop/Development/Guile-and-Scheme/guile-1.9.10/lilypond/out/bin/../bin:/home/ian/Desktop/Development/Guile-and-Scheme/guile-1..9.10/lilypond/out/bin:/home/ian/Desktop/Development/Guile-and-Scheme/guile-1.9.10/meta:/home/ian/Desktop/Development/Guile-and-Scheme/guile-1.9.10/meta:/home/ian/Desktop/Development/Guile-and-Scheme/guile-1.9.10/libguile:/home/ian/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
Segmentation fault
ian@nanny-ogg:~/Desktop/Development/Guile-and-Scheme/guile-1.9.10/lilypond$

The actual crash happens at a call to internal_add_interface
here
 29 SCM add_interface (char const *cxx_name,
  30                     char const *descr,
  31                     char const *vars)
  32 {
  33   string suffix ("-interface");
  34   string lispy_name = camel_case_to_lisp_identifier (cxx_name);
  35   vsize end = max (int (0), int (lispy_name.length () - suffix.length ()));
  36   if (lispy_name.substr (end) != suffix)
  37     lispy_name += suffix;
  38
  39   SCM s = ly_symbol2scm (lispy_name.c_str ());
  40   SCM d = scm_from_locale_string (descr);
  41   SCM l = parse_symbol_list (vars);
  42
  43   internal_add_interface (s, d, l);
>>>^^^^^^^^^^^^^^^^^^^<<<
  44
  45   return s;
  46 }


Any ideas?


Cheers,
Ian


Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/