lilypond-user
[Top][All Lists]
Advanced

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

Re: Which Linux distro for Lilypond


From: Thomas Morley
Subject: Re: Which Linux distro for Lilypond
Date: Sun, 15 Jan 2017 21:24:41 +0100

2017-01-13 20:53 GMT+01:00 David Pirotte <address@hidden>:
> Hello,
>
>> I never tried to compile lilypond with a guile version higher than
>> 2.0.13, so I can't say anything about it.
>
> I (really) recommend you to do so: guile 2.2 is due to be released in a month 
> or
> two, at the very most. 2.1.5 beta is the latest [1], 2.1.6 will be released 
> in a few
> days (and I think it fixes a(some) utf8 related bug(s).
>
> At this point in time Thomas, if I was in your position, I would not spend 
> time to
> get things done for 2.0, I would skip 2.0 and work on 2.2 instead, it is too 
> late,
> and imo totally useless, 2.2 is an order of magnitude better then 2.0, for 
> numerous
> reasons (read the NEWS since its first release...). Not only that, but when 
> 2.2 is
> released, support to 2.0 will be kept to the very strict minimum... Don't 
> loose your
> time here, it is my advice, maybe a bit more then 2c this time...
>
> Cheers,
> David
>
> [1]     http://lists.gnu.org/archive/html/guile-devel/2016-12/msg00005.html

I now compiled guile master from
35a90592501ebde7e7ddbf2486ca9d315e317d09
"Add unboxed floating point comparison instructions."

Getting Guile 2.1.5.21-35a90


Then I compiled LilyPond with this guile (thanks Werner fore the hints)
As mentioned before, scm_protects doesn't work anymore. Simply
replacing it with scm_gc_protect_object as the IRC-log
https://gnunet.org/bot/log/guile/2017-01-05
seems to sugest didn't work for me, so I commented the whole
definition of ly:protects and replaced the result of it's call with an
empty list.
I'm aware this is brute-force and one should do a proper fix instead,
but my most naive attempt (see above) didn't work, so someone with
better knowledge is needed.
A change in scheme-sandbox was needed as well, not for compilation but
I stumbled over it ...

Here the whole diff so far:

$ git diff
diff --git a/lily/general-scheme.cc b/lily/general-scheme.cc
index 1168ee9..e4efe60 100644
--- a/lily/general-scheme.cc
+++ b/lily/general-scheme.cc
@@ -267,17 +267,20 @@ LY_DEFINE (ly_dimension_p, "ly:dimension?", 1,
0, 0, (SCM d),
 /*
   Debugging mem leaks:
 */
+/*
 LY_DEFINE (ly_protects, "ly:protects",
            0, 0, 0, (),
            "Return hash of protected objects.")
 {
-  //scm_protects is available only in Guile versions before 2.1.
+  //scm_protects is available only in Guile versions before 2.1.  ->
scm_gc_protect_object ??
 #if SCM_MAJOR_VERSION < 2 || SCM_MAJOR_VERSION == 2 && SCM_MINOR_VERSION < 1
   return scm_protects;
 #else
-  return programming_error ("ly:protects is not supported in Guile 2.1");
+  // return programming_error ("ly:protects is not supported in Guile 2.1");
+  return scm_gc_protect_object;
 #endif
 }
+*/

 LY_DEFINE (ly_gettext, "ly:gettext",
            1, 0, 0, (SCM original),
diff --git a/ly/scheme-sandbox.ly b/ly/scheme-sandbox.ly
index 7dec0dc..1f233c0 100644
--- a/ly/scheme-sandbox.ly
+++ b/ly/scheme-sandbox.ly
@@ -13,4 +13,8 @@
 % requirements may be different.

 #(newline)
-#(scm-style-repl)
+#(if (guile-v2)
+     (begin
+       (use-modules (system repl repl))
+       (start-repl))
+     (scm-style-repl))
diff --git a/scm/lily.scm b/scm/lily.scm
index d3164e4..703b00e 100644
--- a/scm/lily.scm
+++ b/scm/lily.scm
@@ -840,6 +840,7 @@ messages into errors.")
                          (lambda (a b)
                            (< (object-address (car a))
                               (object-address (car b))))))
+         (protects '())
          (out-file-name (string-append
                          "gcstat-" (number->string gc-protect-stat-count)
                          ".scm"))

With this changes on top of my rebased local copy of the
dev/guile-v2-work)-branch I've got a successful make and a full make
doc.

Up to now I only made some observations, far too early for more.

(1)
While invoking lilypond I always get a guile-message:
Import (ice-9 threads) to have access to `call-with-new-thread'.
Import (ice-9 threads) to have access to `current-thread'.

(2)
Compiling a huge score
http://lists.gnu.org/archive/html/lilypond-user/2016-11/msg00943.html
lasts ~15 minutes
With lilypond and guile 2.0.13 it was ~17 minutes
Though, lilypond with guile 1.8.8 made it in ~5 minutes

(3)
guile now finds files with chinese, etc characters
guile --no-auto-compile filename_名字.scm
succeeded.

(4)
Trying to compile filename_名字.ly with lilypond still returns
warning: cannot find file: `filename_??????.ly'
fatal error: failed files: "filename_??????.ly"



So far for today. No time left to research about (ice-9 threads) or
what it is about that --no-auto-compile or other issues.

But let me say, why, I mean WHY?? did noone drop a note about (3) here
http://lists.gnu.org/archive/html/guile-devel/2017-01/msg00003.html
or here
http://lists.gnu.org/archive/html/guile-user/2016-11/msg00031.html


Cheers,
  Harm



reply via email to

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