When debug is set to #f, a guile error, like for example (cdr '()) will only
show the error message itself, but no indication whatsoever where the error
occured. This makes debugging scheme bugs in our lilypond code basically
impossible.
This patch properly fixes the debug settings, by either setting 'debug for
guile <2.0 or setting the finer-grained debug options for guile >=2.0.
That's also the correct fix that Ian Hulin suggest in a private mail.
Not tested with guile 2.0, though.
(defmacro-public _i (x) x)
(defmacro-public _i (x) x)
+;;; Boolean thunk - are we integrating Guile V2.0 or higher with LilyPond?
+(define-public (guile-v2)
+ (string>? (version) "1.9.10"))
+
+(if (not (guile-v2))
+ (debug-enable 'debug)
+ (begin
+ (debug-enable 'backtrace)
+ (debug-enable 'show-file-name)))
(define-public PLATFORM
(string->symbol
(define-public PLATFORM
(string->symbol
;;(set-debug-cell-accesses! 1000)
;;(set-debug-cell-accesses! 1000)
-;;; Boolean thunk - are we integrating Guile V2.0 or higher with LilyPond?
-(define-public (guile-v2)
- (string>? (version) "1.9.10"))
-
(use-modules (ice-9 regex)
(ice-9 safe)
(ice-9 format)
(use-modules (ice-9 regex)
(ice-9 safe)
(ice-9 format)
(use-modules (ice-9 curried-definitions)))
(else
(if (ly:get-option 'verbose)
(use-modules (ice-9 curried-definitions)))
(else
(if (ly:get-option 'verbose)
- (ly:message
- (_ "Guile 1.8\n")))))
+ (ly:message (_ "Guile 1.8\n")))))
;; TODO add in modules for V1.8.7 deprecated in V2.0 and integrated
;; into Guile base code, like (ice-9 syncase).
;; TODO add in modules for V1.8.7 deprecated in V2.0 and integrated
;; into Guile base code, like (ice-9 syncase).