Closed venantius closed 8 years ago
Hi,
I don't think the extension is wrong. According to this site, .scm files are compiled to .com files (at least in mit-scheme):
http://www.gnu.org/software/mit-scheme/documentation/mit-scheme-user/Compilation-Procedures.html
("... takes foo.scm' and generates
bar.com'...")
You can check it if you manually run scheme and execute (cf "herp.scm") in your project directory. There should be a herp.com file generated.
I suggest that you enable swank logging in slimv by setting this variable in your .vimrc:
let g:swank_log=1
And please repeat ,L. There should be a logfile called swank.log generated in your working directory. This file logs the communication between slimv and the swank server. Please send me that logfile.
Thank you and best regards /Tamas
On Mon, Mar 28, 2016 at 8:16 PM, Ursa americanus kermodei < notifications@github.com> wrote:
Hey there -
I'm working through SICP and while I can happily eval forms, drop into interactive eval, etc., if I try to load the entire file slimv seems to tell my swank server to look for the wrong file extension. Right now I'm working in a file helpfully named herp.scm, but when I do ,L I get the following error:
because: File does not exist. [file-operation-error] Cheers! This is an awesome project. — You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub https://github.com/kovisoft/slimv/issues/42
Tamas -
Thanks for the helpful links. I poked around the compiler options a bit and for whatever reason loading a file or compiling it does not generate a .com
file; instead, it generates .bin
, .o
, .so
, .bci
, and .c
files.
Attempting to do (cf "herp")
at the REPL gets me the following output:
1 ]=> (cf "herp")
;Generating SCode for file: "herp.scm" => "herp.bin"... done
;Compiling file: "herp.bin" => "herp.c"...
; clang -DHAVE_CONFIG_H -DMIT_SCHEME -I/usr/local/include -Wold-style-definition -Wextra -Wno-sign-compare -Wno-unused-parameter -Wstrict-prototypes -Wnested-externs -Wredundant-decls -Wall -Wundef -Wpointer-arith -Winline -O3 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -fconstant-cfstrings -DSIGNAL_HANDLERS_CAN_USE_SCHEME_STACK -frounding-math -DENABLE_LIARC_FILE_INIT -I/usr/local/Cellar/mit-scheme/9.2_1/lib/mit-scheme-c/include -o /Users/ursa/Code/school/sicp/chapter-1/herp.o -c /Users/ursa/Code/school/sicp/chapter-1/herp.c
; clang: warning: optimization flag '-frounding-math' is not supported
; clang: warning: argument unused during compilation: '-frounding-math'
; clang -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -fconstant-cfstrings -DSIGNAL_HANDLERS_CAN_USE_SCHEME_STACK -Wl,-syslibroot,/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -framework CoreFoundation -bundle -bundle_loader /usr/local/Cellar/mit-scheme/9.2_1/bin/mit-scheme-c -o /Users/ursa/Code/school/sicp/chapter-1/herp.so /Users/ursa/Code/school/sicp/chapter-1/herp.o
;... done
;Unspecified return value
I turned on swank logging, and the log looks like the following:
[---Sent---] 0.177223
(:emacs-rex (swank:connection-info) nil t 1)
[-Received-] 0.17949
(:return (:ok (:pid 37391 :package (:name "(user)" :prompt "(user)") :lisp-implementation (:type "MIT Scheme" :version "9.2") :encoding (:coding-systems ("iso-8859-1")))) 1)
[Actionlist] 0.179724
1: finished :connection-info
params: [':pid', '37391', ':package', [':name', '"(user)"', ':prompt', '"(user)"'], ':lisp-implementation', [':type', '"MIT Scheme"', ':version', '"9.2"'], ':encoding', [':coding-systems', ['"iso-8859-1"']]]
Package:(user) Prompt:(user)
[---Sent---] 0.236871
(:emacs-rex (swank:swank-require '(swank-presentations swank-fancy-inspector swank-c-p-c swank-arglists)) nil t 2)
[-Received-] 0.237186
(:return (:ok ()) 2)
[Actionlist] 0.237388
2: finished :swank-require
params: []
[---Sent---] 0.249379
(:emacs-rex (swank:swank-require 'swank-repl) nil t 3)
[-Received-] 0.249696
(:return (:ok ()) 3)
[Actionlist] 0.249845
3: finished :swank-require
params: []
[---Sent---] 0.263298
(:emacs-rex (swank-repl:create-repl nil) "(user)" t 4)
[-Received-] 0.263704
(:return (:ok ("(user)" "(user)")) 4)
[Actionlist] 0.263912
4: finished :create-repl
params: ['"(user)"', '"(user)"']
[---Sent---] 0.287443
(:emacs-rex (swank-repl:listener-eval "(define (square x)
(* x x))
") "(user)" :repl-thread 5)
[-Received-] 0.288189
(:return (:ok (:values "square")) 5)
[Actionlist] 0.288342
5: finished :listener-eval
params: [':values', '"square"']
[---Sent---] 0.365344
(:emacs-rex (swank:compile-file-for-emacs "/Users/ursa/Code/school/sicp/chapter-1/1.1.scm" t) nil t 6)
[-Received-] 0.366121
(:return (:ok (:compilation-result nil t 0. t "/Users/ursa/Code/school/sicp/chapter-1/1.1.com")) 6)
[Actionlist] 0.366448
6: finished :compile-file-for-emacs
params: [':compilation-result', 'nil', 't', '0.', 't', '"/Users/ursa/Code/school/sicp/chapter-1/1.1.com"']
[---Sent---] 0.381035
(:emacs-rex (swank:load-file "/Users/ursa/Code/school/sicp/chapter-1/1.1.com") nil t 7)
[-Received-] 0.38168
(:debug 0 1 ("Unable to find file \"/Users/ursa/Code/school/sicp/chapter-1/1.1.com\" because: File does not exist." " [file-operation-error]" ()) (("retry" "Try to find the same file again.") ("use-value" "Try to find a different file.") ("abort" "Return to SLIME top-level.") ("disconnect" "Close connection.") ("abort" "Return to read-eval-print level 1.")) ((0 ";undefined expression") (1 "(error:file-operation pathname \"find\" \"file\" \"file does not exist\" procedure (cons pathname arguments))") (2 "(thunk)") (3 "(let ((.load/loading?.4-0 #t) (.load/after-load-hooks.4-0 (quote ()))) (define (swap!) (set! load/loading? (set! .load/loading?.4-0 (set! load/loading?))) (set! load/after-load-hooks (set! .load/after-load-hooks.4-0 (set! load/after-load-hooks))) #!unspecific) (shallow-fluid-bind swap! (lambda () (let ((result (thunk))) (let ((#[uninterned-symbol 6 value-0] result) (#[uninterned-symbol 7 value-1] (reverse load/after-load-hooks))) (lambda (receiver) (receiver #[uninterned-symbol 6 value-0] #[uninterned-symbol 7 value-1]))))) swap!))") (4 "(load file (user-env *buffer-package*))") (5 "(eval (cons* (car sexp) socket (hack-quotes (cdr sexp))) swank-env)") (6 "(set! result (eval (cons* (car sexp) socket (hack-quotes (cdr sexp))) swank-env))") (7 "(with-simple-restart (quote abort) \"Return to SLIME top-level.\" (lambda () (let ((.*top-level-restart*.1-0 (find-restart (quote abort)))) (define (swap!) (set! *top-level-restart* (set! .*top-level-restart*.1-0 (set! *top-level-restart*))) unspecific) (shallow-fluid-bind swap! (lambda () (dispatch (read-packet socket) socket 0)) swap!))))") (8 "(swank 4005)") (9 ";Unknown (methodless) #[stack-frame 19]") (10 "(hook/repl-eval s-expression environment repl)") (11 "(repl-eval sexp environment)") (12 "(receiver port)") (13 "(let ((.*notification-depth*.1-0 (1+ *notification-depth*))) (define (swap!) (set! *notification-depth* (set! .*notification-depth*.1-0 (set! *notification-depth*))) #!unspecific) (shallow-fluid-bind swap! (lambda () (thunk)) swap!))") (14 "(thunk)") (15 "(let ((.load/loading?.4-0 #t) (.load/after-load-hooks.4-0 (quote ()))) (define (swap!) (set! load/loading? (set! .load/loading?.4-0 (set! load/loading?))) (set! load/after-load-hooks (set! .load/after-load-hooks.4-0 (set! load/after-load-hooks))) #!unspecific) (shallow-fluid-bind swap! (lambda () (let ((result (thunk))) (let ((#[uninterned-symbol 6 value-0] result) (#[uninterned-symbol 7 value-1] (reverse load/after-load-hooks))) (lambda (receiver) (receiver #[uninterned-symbol 6 value-0] #[uninterned-symbol 7 value-1]))))) swap!))") (16 "(if (queue-empty? queue) (let ((environment (%record-ref (cmdl/state repl) 2))) (%repl-eval/write (hook/repl-read environment repl) environment repl)) ((dequeue! queue) repl))") (17 "(bind-abort-restart cmdl (lambda () (deregister-all-events) (with-interrupt-mask interrupt-mask/all (lambda (interrupt-mask) (unblock-thread-events) (ignore-errors (lambda () ((->cmdl-message message) cmdl))) (call-with-current-continuation (lambda (continuation) (with-create-thread-continuation continuation (lambda () ((cmdl/driver cmdl) cmdl)))))))))")) ())
[-Received-] 0.40042
(:debug-activate 0 1)
Hi,
To be honest, I'm a little clueless. It seems that your scheme version compiles .scm files into .c (I guess these are regular C files, they are then further compiled into .o and I suppose finally into an executable). But I cannot find anything about that behaviour in the MIT Scheme user's manual. Is this a MacOS version of MIT Scheme? Do you have any user guide specific to that version?
I think the swank server also assumes that the compiled file will be a .com file, that's why it returns this in the compilation result:
(:return (:ok (:compilation-result nil t 0. t "/Users/ursa/Code/school/sicp/chapter-1/1.1.com")) 6)
The swank server is not written by me, it's just embedded into slimv. So one solution may be to find a more recent version of the swank server (especially slime/contrib/swank-mit-scheme.scm) that correctly handles scheme compilation options.
Another solution may be to do modify your swank server, so that it sends the correct extension in the response. Below is the related code in the MIT scheme swank server (slime/contrib/swank-mit-scheme.scm). Here you can see that it explicitly sets the file type to "com":
(define (swank:compile-file-for-emacs socket file load?) (apply (lambda (errors seconds) (list ':compilation-result errors 't seconds load? (->namestring (pathname-new-type file "com")))) (call-compiler (lambda () (with-output-to-repl socket (lambda () (compile-file file)))))))
So an easy hotfix may be that you replace "com" here with something else extension that your scheme produces upon compilation. The question is: what's this extension? Do you know that?
I suggest that you try this:
On Wed, Mar 30, 2016 at 12:15 AM, Ursa americanus kermodei < notifications@github.com> wrote:
Tamas -
Thanks for the helpful links. I poked around the compiler options a bit and for whatever reason loading a file or compiling it does not generate a .com file; instead, it generates .bin, .o, .so, .bci, and .c files.
Attempting to do (cf "herp") at the REPL gets me the following output:
1 ]=> (cf "herp") ;Generating SCode for file: "herp.scm" => "herp.bin"... done;Compiling file: "herp.bin" => "herp.c"...; clang -DHAVE_CONFIG_H -DMIT_SCHEME -I/usr/local/include -Wold-style-definition -Wextra -Wno-sign-compare -Wno-unused-parameter -Wstrict-prototypes -Wnested-externs -Wredundant-decls -Wall -Wundef -Wpointer-arith -Winline -O3 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -fconstant-cfstrings -DSIGNAL_HANDLERS_CAN_USE_SCHEME_STACK -frounding-math -DENABLE_LIARC_FILE_INIT -I/usr/local/Cellar/mit-scheme/9.2_1/lib/mit-scheme-c/include -o /Users/ursa/Code/school/sicp/chapter-1/herp.o -c /Users/ursa/Code/school/sicp/chapter-1/herp.c; clang: warning: optimization flag '-frounding-math' is not supported; clang: warning: argument unused during compilation: '-frounding-math'; clang -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -fconstant-cfstrings -DSIGNAL_HANDLERS_CAN_USE_SCHEME_STACK -Wl,-syslibroot,/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk -framework CoreFoundation -bundle -bundle_loader /usr/local/Cellar/mit-scheme/9.2_1/bin/mit-scheme-c -o /Users/ursa/Code/school/sicp/chapter-1/herp.so /Users/ursa/Code/school/sicp/chapter-1/herp.o;... done;Unspecified return value
I turned on swank logging, and the log looks like the following:
[---Sent---] 0.177223 (:emacs-rex (swank:connection-info) nil t 1)
[-Received-] 0.17949 (:return (:ok (:pid 37391 :package (:name "(user)" :prompt "(user)") :lisp-implementation (:type "MIT Scheme" :version "9.2") :encoding (:coding-systems ("iso-8859-1")))) 1) [Actionlist] 0.1797241: finished :connection-info params: [':pid', '37391', ':package', [':name', '"(user)"', ':prompt', '"(user)"'], ':lisp-implementation', [':type', '"MIT Scheme"', ':version', '"9.2"'], ':encoding', [':coding-systems', ['"iso-8859-1"']]] Package:(user) Prompt:(user) [---Sent---] 0.236871 (:emacs-rex (swank:swank-require '(swank-presentations swank-fancy-inspector swank-c-p-c swank-arglists)) nil t 2)
[-Received-] 0.237186 (:return (:ok ()) 2) [Actionlist] 0.2373882: finished :swank-require params: [] [---Sent---] 0.249379 (:emacs-rex (swank:swank-require 'swank-repl) nil t 3)
[-Received-] 0.249696 (:return (:ok ()) 3) [Actionlist] 0.2498453: finished :swank-require params: [] [---Sent---] 0.263298 (:emacs-rex (swank-repl:create-repl nil) "(user)" t 4)
[-Received-] 0.263704 (:return (:ok ("(user)" "(user)")) 4) [Actionlist] 0.2639124: finished :create-repl params: ['"(user)"', '"(user)"'] [---Sent---] 0.287443 (:emacs-rex (swank-repl:listener-eval "(define (square x) (* x x))") "(user)" :repl-thread 5)
[-Received-] 0.288189 (:return (:ok (:values "square")) 5) [Actionlist] 0.2883425: finished :listener-eval params: [':values', '"square"'] [---Sent---] 0.365344 (:emacs-rex (swank:compile-file-for-emacs "/Users/ursa/Code/school/sicp/chapter-1/1.1.scm" t) nil t 6)
[-Received-] 0.366121 (:return (:ok (:compilation-result nil t 0. t "/Users/ursa/Code/school/sicp/chapter-1/1.1.com")) 6) [Actionlist] 0.3664486: finished :compile-file-for-emacs params: [':compilation-result', 'nil', 't', '0.', 't', '"/Users/ursa/Code/school/sicp/chapter-1/1.1.com"'] [---Sent---] 0.381035 (:emacs-rex (swank:load-file "/Users/ursa/Code/school/sicp/chapter-1/1.1.com") nil t 7)
[-Received-] 0.38168 (:debug 0 1 ("Unable to find file \"/Users/ursa/Code/school/sicp/chapter-1/1.1.com\" because: File does not exist." " [file-operation-error]" ()) (("retry" "Try to find the same file again.") ("use-value" "Try to find a different file.") ("abort" "Return to SLIME top-level.") ("disconnect" "Close connection.") ("abort" "Return to read-eval-print level 1.")) ((0 ";undefined expression") (1 "(error:file-operation pathname \"find\" \"file\" \"file does not exist\" procedure (cons pathname arguments))") (2 "(thunk)") (3 "(let ((.load/loading?.4-0 #t) (.load/after-load-hooks.4-0 (quote ()))) (define (swap!) (set! load/loading? (set! .load/loading?.4-0 (set! load/loading?))) (set! load/after-load-hooks (set! .load/after-load-hooks.4-0 (set! load/after-load-hooks))) #!unspecific) (shallow-fluid-bind swap! (lambda () (let ((result (thunk))) (let ((#[uninterned-symbol 6 value-0] result) (#[uninterned-symbol 7 value-1](reverse load/after-load-hooks))) (lambda (receiver) (receiver #[uninterne d-symbol 6 value-0] #[uninterned-symbol 7 value-1]))))) swap!))") (4 "(load file (user-env buffer-package))") (5 "(eval (cons* (car sexp) socket (hack-quotes (cdr sexp))) swank-env)") (6 "(set! result (eval (cons* (car sexp) socket (hack-quotes (cdr sexp))) swank-env))") (7 "(with-simple-restart (quote abort) \"Return to SLIME top-level.\" (lambda () (let ((.top-level-restart.1-0 (find-restart (quote abort)))) (define (swap!) (set! top-level-restart (set! .top-level-restart.1-0 (set! top-level-restart))) unspecific) (shallow-fluid-bind swap! (lambda () (dispatch (read-packet socket) socket 0)) swap!))))") (8 "(swank 4005)") (9 ";Unknown (methodless) #[stack-frame 19]") (10 "(hook/repl-eval s-expression environment repl)") (11 "(repl-eval sexp environment)") (12 "(receiver port)") (13 "(let ((.notification-depth.1-0 (1+ notification-depth))) (define (swap!) (set! notification-depth (set! .notification-depth.1-0 (set! notification-depth))) #!unspecific) (shallow-fl uid-bind swap! (lambda () (thunk)) swap!))") (14 "(thunk)") (15 "(let ((.load/loading?.4-0 #t) (.load/after-load-hooks.4-0 (quote ()))) (define (swap!) (set! load/loading? (set! .load/loading?.4-0 (set! load/loading?))) (set! load/after-load-hooks (set! .load/after-load-hooks.4-0 (set! load/after-load-hooks))) #!unspecific) (shallow-fluid-bind swap! (lambda () (let ((result (thunk))) (let ((#[uninterned-symbol 6 value-0] result) (#[uninterned-symbol 7 value-1](reverse load/after-load-hooks))) (lambda (receiver) (receiver #[uninterned-symbol 6 value-0] #[uninterned-symbol 7 value-1]))))) swap!))") (16 "(if (queue-empty? queue) (let ((environment (%record-ref (cmdl/state repl) 2))) (%repl-eval/write (hook/repl-read environment repl) environment repl)) ((dequeue! queue) repl))") (17 "(bind-abort-restart cmdl (lambda () (deregister-all-events) (with-interrupt-mask interrupt-mask/all (lambda (interrupt-mask) (unblock-thread-events) (ignore-errors (lambda () ((->cmdl-message message) cmdl))) (call-with-current-continuation (lambda (continuation) (with-create-thread-continuation continuation (lambda () ((cmdl/driver cmdl) cmdl)))))))))")) ()) [-Received-] 0.40042 (:debug-activate 0 1)
— You are receiving this because you commented. Reply to this email directly or view it on GitHub https://github.com/kovisoft/slimv/issues/42#issuecomment-203135775
Both the .bin
and the .so
files can be loaded. I've tried this both at the MIT Scheme REPL and using slimv.
I suppose the next question is: what to do about it? The version of mit scheme I have installed is one that was built from source off of what's currently sitting in Homebrew.
I think one reasonable approach might be to change the com
suffix with bin
, which the compilation doc suggests is also created in the process of compiling com
files (as well as .so
files in my case). Thoughts?
There are other options like copying the swank-mit-scheme.scm
file into typical linux/unix v. osx architectures, which I suspect may be at the root of this, but if using bin
is platform agnostic then that would seem to be a harmless change in the meantime.
Okay, so if e.g. .bin files can be loaded then you could try to modify your swank server, so that it loads .bin files instead of .com files. (1) According to my previous mail, please try to change the below part of slime/contrib/swank-mit-scheme.scm: Replace "com" with "bin" (highlighted):
(define (swank:compile-file-for-emacs socket file load?) (apply (lambda (errors seconds) (list ':compilation-result errors 't seconds load? (->namestring (pathname-new-type file "bin")))) (call-compiler (lambda () (with-output-to-repl socket (lambda () (compile-file file)))))))
(2) Another approach may be to totally eliminate the extension, because as far as I know the scheme load function automatically identifies the correct extension. So if you just execute (load "herp"), then in theory it should load the compiled file (if exists). So you can try to replace (pathname-new-type ...) with (pathname-name ...) in slime/contrib/swank-mit-scheme.scm:
(define (swank:compile-file-for-emacs socket file load?) (apply (lambda (errors seconds) (list ':compilation-result errors 't seconds load? (->namestring (pathname-name file)))) (call-compiler (lambda () (with-output-to-repl socket (lambda () (compile-file file)))))))
On Sun, Apr 10, 2016 at 2:50 AM, Ursa americanus kermodei < notifications@github.com> wrote:
Both the .bin and the .so files can be loaded. I've tried this both at the MIT Scheme REPL and using slimv.
I suppose the next question is: what to do about it? The version of mit scheme I have installed is one that was built from source off of what's currently sitting in Homebrew.
I think one reasonable approach might be to change the com suffix with bin, which the compilation doc suggests is also created in the process of compiling com files (as well as .so files in my case). Thoughts?
— You are receiving this because you commented. Reply to this email directly or view it on GitHub https://github.com/kovisoft/slimv/issues/42#issuecomment-207892307
I've tried both of these and they both work (you actually don't even need pathname-name in swank-mit-scheme.scm, but we can leave it in for now). I think the latter is the better approach because, as you note, the scheme load function automatically identifies the correct extension anyways. Would you like me to open a PR for this?
Thank you for the tests. You don't need to open a PR, I can do the changes in the swank server that is embedded in slimv. But I think it would be nice if you could report this problem for the maintainers of SLIME (this is where I took the swank server from). I think the actual SLIME project can be found here: https://github.com/slime/slime/
On Sun, Apr 10, 2016 at 8:37 PM, Ursa americanus kermodei < notifications@github.com> wrote:
I've tried both of these and they both work (you actually don't even need pathname-name in swank-mit-scheme.scm, but we can leave it in for now). I think the latter is the better approach because, as you note, the scheme load function automatically identifies the correct extension anyways. Would you like me to open a PR for this?
— You are receiving this because you commented. Reply to this email directly or view it on GitHub https://github.com/kovisoft/slimv/issues/42#issuecomment-208041833
FYI: I modified swank-mit-scheme.scm according to our discussion. Of course this affects only the swank server embedded in slimv and does not affect the original SLIME project. I'm not even sure that this is the most proper way of fixing the problem.
Cheers /Tamas
On Sun, Apr 10, 2016 at 9:54 PM, Tamás Kovács kovisoft@gmail.com wrote:
Thank you for the tests. You don't need to open a PR, I can do the changes in the swank server that is embedded in slimv. But I think it would be nice if you could report this problem for the maintainers of SLIME (this is where I took the swank server from). I think the actual SLIME project can be found here: https://github.com/slime/slime/
On Sun, Apr 10, 2016 at 8:37 PM, Ursa americanus kermodei < notifications@github.com> wrote:
I've tried both of these and they both work (you actually don't even need pathname-name in swank-mit-scheme.scm, but we can leave it in for now). I think the latter is the better approach because, as you note, the scheme load function automatically identifies the correct extension anyways. Would you like me to open a PR for this?
— You are receiving this because you commented. Reply to this email directly or view it on GitHub https://github.com/kovisoft/slimv/issues/42#issuecomment-208041833
Awesome. I've opened a PR with SLIME to mirror these changes upstream and we'll see if they accept it: https://github.com/slime/slime/pull/311
Great! But I think your PR with SLIME is not okay. You removed the "com"
extension but did not change the function from pathname-new-type
to pathname-name
. Does it still work? I think pathname-new-type
keeps the .
at the end of the filename even if there is no extension.
Shoot, you're right. I'll have to fix that.
New PR opened to fix my mistakes D: https://github.com/slime/slime/pull/312
Hey there -
I'm working through SICP and while I can happily eval forms, drop into interactive eval, etc., if I try to load the entire file slimv seems to tell my swank server to look for the wrong file extension. Right now I'm working in a file helpfully named
herp.scm
, but when I do,L
I get the following error:Cheers!
This is an awesome project.