/usr/share/lilypond/2.18.2/ly/graphviz-init.ly is in lilypond-data 2.18.2-4.1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | \version "2.16.0"
#(use-modules (scm graphviz))
#(define last-grob-action '())
#(define sym-blacklist '())
#(define sym-whitelist '())
#(define file-line-blacklist '())
#(define file-line-whitelist '())
#(define grob-blacklist '())
#(define grob-whitelist '())
#(define (blacklist-symbol sym)
(set! sym-blacklist (cons sym sym-blacklist)))
#(define (whitelist-symbol sym)
(set! sym-whitelist (cons sym sym-whitelist)))
#(define (whitelist-grob sym)
(set! grob-whitelist (cons sym grob-whitelist)))
#(define graph (make-empty-graph (ly:parser-output-name parser)))
#(define (grob-name g)
(let* ((meta (ly:grob-property g 'meta))
(name-pair (assq 'name meta)))
(if (pair? name-pair)
(cdr name-pair)
#f)))
% an event is relevant if
% (it is on some whitelist or all whitelists are empty)
% and
% (it isn't on any blacklist)
#(define (relevant? grob file line prop)
(let ((file-line `(,file . ,line)))
(and
(or
(= 0 (length file-line-whitelist) (length sym-whitelist) (length grob-whitelist))
(memq prop sym-whitelist)
(memq (grob-name grob) grob-whitelist)
(member file-line file-line-whitelist))
(and
(not (memq prop sym-blacklist))
(not (memq (grob-name grob) grob-blacklist))
(not (member file-line file-line-blacklist))))))
#(define (grob-event-node grob label cluster)
(let ((node-id (add-node graph label cluster))
(prev (assv grob last-grob-action)))
(if (pair? prev)
(add-edge graph (cdr prev) node-id))
(set! last-grob-action (assv-set! last-grob-action grob node-id))))
#(define (truncate-value val)
(let ((val-str (format #f "~a" val)))
(string-take val-str (min 50 (string-length val-str)))))
#(define (grob-mod grob file line func prop val)
(let* ((val-str (truncate-value val))
(label (format #f "~a\\n~a:~a\\n~a <- ~a" (grob-name grob) file line prop val-str)))
(if (relevant? grob file line prop)
(grob-event-node grob label file))))
#(define (grob-cache grob prop callback value)
(let* ((val-str (truncate-value value))
(label (format #f "caching ~a.~a\\n~a -> ~a" (grob-name grob) prop callback value)))
(if (relevant? grob #f #f prop)
(grob-event-node grob label #f))))
#(define (grob-create grob file line func)
(let ((label (format #f "~a\\n~a:~a" (grob-name grob) file line)))
(grob-event-node grob label file)))
#(ly:set-grob-modification-callback grob-mod)
#(ly:set-property-cache-callback grob-cache)
%#(ly:set-grob-creation-callback grob-create)
|