[gnucash-de] Guile-Pfad und Gnucash

RBibrach at t-online.de RBibrach at t-online.de
Don Sep 22 05:53:38 EDT 2005


 
Hallo Liste!

Gibt es eine M�lichkeit, GnuCash irgendwie mitzugeben. wo Guile 
installiert ist?

Auf Suse 10.0RC1 schauts n�lich leider so aus, dass gnome unter 
/opt/gnome liegt,
guile jedoch komplett unter /usr.

GnuCash kompiliert zwar ohne ersichtliche fehler, beim Starten von 
GnuCash kommt dann
aber die Fehlermeldung:ERROR: Unbound variable: with-load-pathname

Das einzige, was ich dazu gefunden habe, war eine Mail von Derek Atkins, 
dass das irgendwie
mit einer defekten Guile-Installation zusammenh�gt. Die Pakete sind 
jedoch alle direkt von Suse
ohne �derungen!

Kann hier jemand helfen?

-rauch


Hallo,
Die Ursache ist slib 3a2. Dies ist die neue Version. Als Abhilfe empfiehlt 
OpenSuse die alte 3a1 zu installieren. Man kann aber auch versuchen die Datei 
guile.init zu ändern. Bei mir wird software-type in Zeile 25 mit unix 
(Kleinbuchstaben) definiert. In der Zeile 127 habe ich deshalb UNIX in unix 
geändert. Außerdem habe ich in der Datei ../guile/1.6/ice-9/slib.scm die 
folgende Funktionen aus Guile.init eingefügt. Hoffentlich hilft es .

(define software-type
  (if (string<? (version) "1.6")
      (lambda () 'UNIX)
      (lambda () 'unix)))

(define (user-vicinity)
  (case (software-type)
    ((VMS)	"[.]")
    (else	"")))

(define vicinity:suffix?
  (let ((suffi
	 (case (software-type)
	   ((amiga)				'(#\: #\/))
	   ((macos thinkc)			'(#\:))
	   ((ms-dos windows atarist os/2)	'(#\\ #\/))
	   ((nosve)				'(#\: #\.))
	   ((unix coherent plan9)		'(#\/))
	   ((vms)				'(#\: #\]))
	   (else
	    (warn "require.scm" 'unknown 'software-type (software-type))
	    "/"))))
    (lambda (chr) (and (memv chr suffi) #t))))

(define (pathname->vicinity pathname)
  (let loop ((i (- (string-length pathname) 1)))
    (cond ((negative? i) "")
	  ((vicinity:suffix? (string-ref pathname i))
	   (substring pathname 0 (+ i 1)))
	  (else (loop (- i 1))))))

(define (program-vicinity)
  (define clp (current-load-port))
  (if clp
      (pathname->vicinity (port-filename clp))
      (slib:error 'program-vicinity " called; use slib:load to load")))

(define sub-vicinity
  (case (software-type)
    ((VMS) (lambda
	       (vic name)
	     (let ((l (string-length vic)))
	       (if (or (zero? (string-length vic))
		       (not (char=? #\] (string-ref vic (- l 1)))))
		   (string-append vic "[" name "]")
		   (string-append (substring vic 0 (- l 1))
				  "." name "]")))))
    (else (let ((*vicinity-suffix*
		 (case (software-type)
		   ((NOSVE) ".")
		   ((MACOS THINKC) ":")
		   ((MS-DOS WINDOWS ATARIST OS/2) "\\")
		   ((unix COHERENT PLAN9 AMIGA) "/"))))
	    (lambda (vic name)
	      (string-append vic name *vicinity-suffix*))))))

(define with-load-pathname
  (let ((exchange
	 (lambda (new)
	   (let ((old program-vicinity))
	     (set! program-vicinity new)
	     old))))
    (lambda (path thunk)
      (define old #f)
      (define vic (pathname->vicinity path))
      (dynamic-wind
	  (lambda () (set! old (exchange (lambda () vic))))
	  thunk
	  (lambda () (exchange old))))))