|
From: | david larsson |
Subject: | Re: python-on-guile |
Date: | Wed, 12 Feb 2020 20:47:01 +0100 |
On 2020-02-12 18:18, Stefan Israelsson Tampe wrote:
you should update the guile-persist repo and also stis-parser, there was some cond-expand issues in those as well
Ok. I tried that. stis-parser now built fine on commit 8d49401e238ae703a466b5b98d3068e4fa974f2c
but guile-persist failed on make for commit: 659abf1dc64c1aa9d9e4c27fe349100dc908ee6c
--------------------- make all-recursive make[1]: Entering directory '/home/user1/VirtualHome/src/guile-persist' Making all in src/make[2]: Entering directory '/home/user1/VirtualHome/src/guile-persist/src'
make all-ammake[3]: Entering directory '/home/user1/VirtualHome/src/guile-persist/src'
make[3]: Nothing to be done for 'all-am'.make[3]: Leaving directory '/home/user1/VirtualHome/src/guile-persist/src' make[2]: Leaving directory '/home/user1/VirtualHome/src/guile-persist/src'
make[2]: Entering directory '/home/user1/VirtualHome/src/guile-persist' GEN persist/slask.go guile: warning: failed to install locale warning: failed to install locale: Invalid argument wrote `persist/slask.go' GEN persist/primitive.go guile: warning: failed to install locale warning: failed to install locale: Invalid argument wrote `persist/primitive.go' GEN persist/persistance.go guile: warning: failed to install locale warning: failed to install locale: Invalid argument Backtrace: In ice-9/psyntax.scm: 1235:36 19 (expand-top-sequence ((define-module (persist #) # # ?)) ?) 1182:24 18 (parse _ (("placeholder" placeholder)) ((top) #(# # ?)) ?) 285:10 17 (parse _ (("placeholder" placeholder)) (()) _ c&e (# #) #) In ice-9/eval.scm: 293:34 16 (_ #<module (#{ g77}#) 55f2082600a0>) In ice-9/boot-9.scm: 2874:4 15 (define-module* _ #:filename _ #:pure _ #:version _ # _ ?) 2071:24 14 (call-with-deferred-observers #<procedure 55f20800c0f0 ?>) 2887:24 13 (_) 222:29 12 (map1 (((system vm loader)) ((system vm program)) (#) ?)) 222:29 11 (map1 (((system vm program)) ((system vm debug)) ((?)) ?)) 222:29 10 (map1 (((system vm debug)) ((system vm dwarf)) ((# ?)) ?)) 222:29 9 (map1 (((system vm dwarf)) ((ice-9 match)) ((ice-9 ?)) ?)) 222:29 8 (map1 (((ice-9 match)) ((ice-9 vlist)) ((ice-9 #)) (#) ?)) 222:29 7 (map1 (((ice-9 vlist)) ((ice-9 control)) ((ice-9 #)) # ?)) 222:29 6 (map1 (((ice-9 control)) ((ice-9 pretty-print)) ((?)) ?)) 222:29 5 (map1 (((ice-9 pretty-print)) ((oop goops)) ((oop #)) ?)) 222:29 4 (map1 (((oop goops)) ((oop dict)) ((persist #)) ((?)) ?)) 222:17 3 (map1 (((oop dict)) ((persist primitive)) ((# #)) (#) #)) 2803:6 2 (resolve-interface _ #:select _ #:hide _ #:prefix _ # _ ?) In unknown file: 1 (scm-error misc-error #f "~A ~S" ("no code for modu?" ?) ?) In ice-9/boot-9.scm: 752:25 0 (dispatch-exception _ _ _) ice-9/boot-9.scm:752:25: In procedure dispatch-exception: no code for module (oop dict) make[2]: *** [Makefile:945: persist/persistance.go] Error 1 make[2]: Leaving directory '/home/user1/VirtualHome/src/guile-persist' make[1]: *** [Makefile:519: all-recursive] Error 1 make[1]: Leaving directory '/home/user1/VirtualHome/src/guile-persist' make: *** [Makefile:399: all] Error 2 ------------------------- The error seems very related to the make error for python-on-guile. Regards, David
On Wed, Feb 12, 2020 at 4:26 PM david larsson <address@hidden> wrote:On 2020-02-12 10:59, Stefan Israelsson Tampe wrote:no code for module (persist persistance) can you use (persist persistance) e.g. from the guile shell,(use-modules (persist persistance) )Nope, that gives the same error. I had some issue when compiling the stis-parser and/or guile-persist as well and solved it by adding a symlink in /usr/local/include/ something. So Ill look into whether I have some path/environment variable issue on my machine. Im running PureOS which I think tracks Debian stable, so some stuff can be pretty old and maybe thats the reason. Regards, David... /Stefan On Wed, Feb 12, 2020 at 10:18 AM david larsson <address@hidden> wrote:On 2020-02-11 21:57, Stefan Israelsson Tampe wrote:This error is fixed in repository /StefanThanks. That solved that part. Now Im getting this error on make: (commit 226d33163e7f1e305c0b6e2ada37209513377dff) ---------------------- Makefile:1390: warning: overriding recipe for target 'python' Makefile:771: warning: ignoring old recipe for target 'python' GEN oop/pf-objects.go guile: warning: failed to install locale warning: failed to install locale: Invalid argument Backtrace: In ice-9/boot-9.scm: 2312:4 19 (save-module-excursion #<procedure 55a897256bc0 at lang?>) In language/scheme/compile-tree-il.scm: 31:15 18 (_) In ice-9/psyntax.scm: 1235:36 17 (expand-top-sequence ((define-module (oop #) # (# ?) ?)) ?) 1182:24 16 (parse _ (("placeholder" placeholder)) ((top) #(# # ?)) ?) 285:10 15 (parse _ (("placeholder" placeholder)) (()) _ c&e (# #) #) In ice-9/eval.scm: 293:34 14 (_ #<module (#{ g77}#) 55a8972dd0a0>) In ice-9/boot-9.scm: 2874:4 13 (define-module* _ #:filename _ #:pure _ #:version _ # _ ?) 2071:24 12 (call-with-deferred-observers #<procedure 55a897086910 ?>) 2887:24 11 (_) 222:29 10 (map1 (((oop goops)) ((oop dict) #:renamer #<proce?>) ?)) 222:29 9 (map1 (((oop dict) #:renamer #<procedure 55a8972fb?>) ?)) 222:29 8 (map1 (((ice-9 vlist)) ((ice-9 match)) ((system # #)) ?)) 222:29 7 (map1 (((ice-9 match)) ((system base message)) ((# ?)) ?)) 222:29 6 (map1 (((system base message)) ((language python #)) # ?)) 222:29 5 (map1 (((language python guilemod)) ((ice-9 #)) ((# ?)))) 222:29 4 (map1 (((ice-9 pretty-print)) ((persist persistance)))) 222:17 3 (map1 (((persist persistance)))) 2803:6 2 (resolve-interface _ #:select _ #:hide _ #:prefix _ # _ ?) In unknown file: 1 (scm-error misc-error #f "~A ~S" ("no code for modu?" ?) ?) In ice-9/boot-9.scm: 752:25 0 (dispatch-exception _ _ _) ice-9/boot-9.scm:752:25: In procedure dispatch-exception: no code for module (persist persistance) make: *** [Makefile:1385: oop/pf-objects.go] Error 1 ---------------------- Regards, DavidOn Tue, Feb 11, 2020 at 8:17 AM david larsson <address@hidden> wrote:On 2020-02-10 21:11, Stefan Israelsson Tampe wrote:I have now added the bytes constructor that was not working.Thanks!To compile from source please try use the git repository at: https://gitlab.com/python-on-guile/python-on-guile/ see readme for how to compile and what dependencies you have.I was able to build and install: - guile-persist: commitebebb66ae6d6c47dbc406cdbcaccb5ffed2e463a- stis-parser: commit 7673dd576abb445fbcfce8c4b6ae961ee860902e but for python-on-guile Im getting this error on make: -------------- Makefile:1390: warning: overriding recipe for target 'python' Makefile:771: warning: ignoring old recipe for target 'python' GEN language/python/guilemod.go guile: warning: failed to install locale warning: failed to install locale: Invalid argument ice-9/boot-9.scm:752:25: In procedure dispatch-exception: Syntax error: language/python/guilemod.scm:271:0: cond-expand: unfulfilled cond-expand in form (cond-expand (guile-3.0 (define-set-Mlookup-warning-typelookup-warning-type) (define-set-M warning warning) (set! %warning-types w-types)) (guile-2.0 or guile-2.2 (define-M %warning-typesw-types)(define-exp-M lookup-warning-type (lambda (name) "Return thewarningtype NAME or `#f' if not found." ((M find) (lambda (wt) (eq?name((M warning-type-name) wt))) (M %warning-types)))))) make: *** [Makefile:1385: language/python/guilemod.go] Error 1 --------------- Im compiling with guile2.2 Regards, DavidRegards Stefan On Mon, Feb 10, 2020 at 1:14 PM david larsson <address@hidden> wrote:On 2020-02-09 21:36, Stefan Israelsson Tampe wrote:in sys that is On Sun, Feb 9, 2020 at 9:36 PM Stefan Israelsson Tampe <address@hidden> wrote:OKey, I changed the values from immutable lists to lists.Great!On Sun, Feb 9, 2020 at 9:27 PM Stefan Israelsson Tampe <address@hidden> wrote: Note that a lot of things are untested because I'm alone onthedevelopment.Ok, I understand. I haven't been able to build a recent version, but if you cansharesome updated instructions, then I could perhaps help out with some occasional testing. I have only managed to build from the old commitfc0d7a9byupdating the current python-on-guile guix package locally.netlib is not included, you can test to add the pythonmodulefileto a (language python module) directoryWhat's been working for me so far is only (load"path/to/file.py")and (load-compiled "path/to/file.go"). (use-modules (a b c)) did not work for me, except to loadmodulesalready shipped with python-on-guile repo; (language pythonmodulepython) etc.I have recently added much more of the python stdlib aka3.7butnotall. Not sure what you mean by .scm file and .py fle when itcomestobase64 using that module in scheme gives scheme@(guile-user)> (b64decode (b64encode "abc")) $2 = b'abc' scheme@(guile-user)> (b64decode (b64encode #(1 2 3))) $3 = b'\x01\x02\x03' Which return a bytevector if you want a string back youneedtointerpret the bytevector back to a stringIm getting weird results when trying to output the base64 representation of a string, take btest.py: #import sys import base64 def mybmethod(x): mybytes = bytes(x, "utf-8") encodedbytes = base64.b64encode(mybytes) myb64string = str(encodedbytes, "utf-8") return myb64string #print(myb64string) #mybmethod(sys.argv[1]) and assume btest.scm using it with: (add-to-load-path (dirname (current-filename))) (use-modules (language python module python)) (load "btest.py") (define-public (mybmethodscm cmdline) (display (mybmethod (cadr cmdline)))) With this it will not work to run the scheme file with guile -e mybmethodscm btest.scm dfasdf The error I got indicated that btest.py uses the bytesprocedurefrom within python-on-guile instead of from the python3 base64lib:------------------- In/home/user1/VirtualHome/src/code_guile/python-on-guile-test/btest.scm:18:11 4 (mybmethodscm _) In btest.py: 10:584 3 (_ "dfasdf" . _) In oop/pf-objects.scm: 584:15 2 (create-object _ _) 567:11 1 (the-create-object _ _) In language/python/bytes.scm: 99:6 0 Exception thrown while printing backtrace: Unbound slot in object Error while printing exception. language/python/bytes.scm:99:6: Wrong number of arguments to #<procedure 7f2bab5d4560 at language/python/bytes.scm:92:0 (self) | (selfs)>------------------- For a moment though, I could run: guile -e mybmethodscm btest.scm dfasdf | rev | base64 -d |rev# gives: dfasdf which was also strange.modules are a bit difficult as I use the guile modulesystemandthepython modules are different. So nested modules needs some work. The best is to test andsee.Ok, got it!I will look into the sys thingies Regards Stefan On Sun, Feb 9, 2020 at 8:40 PM david larsson <address@hidden> wrote: Thanks for your explanations, but unfortunately I stillcan'tfigureout how to use this except in the simplest of cases. I am using the guix package python-on-guile 0.1.0-3.00a51a2-maybethats outdated? The simple things I have managed to do, are like: (add-to-load-path (dirname (current-filename))) (load-compiled python-test.go) where python-test.go is compiled with: guild compile python-test.py --output=python-test.go --from=python and contains simple things, like: f(s): a = s + 1 return a but if I add statements to python-test.py like: import netaddr def myfun(a) <something using netaddr> (netaddr is a module installed via: pip3 install --usernetaddr)I receive an error about not finding the module. I am able to add only the modules which exist in thepython-on-guilerepo, like: import sys import base64 but Im getting errors, for example Im not able to usethingsfromsys, like: sys.path.append(<somepath>) sys.path.insert(0, <somepath>) I was able to use some things from base64 but I onlyreceivedweirdresults when converting between bytevectors and stringsbetweenthe.scm file and .py file. What works fine using python3python-test.pydonot usually work when passing either a bytevector or string tothesamego-compiled file from the .scm file using the python-code.Notsurewhether there's a problem using python3 vs python2 here? Essentially, what Im looking for is how to proceed if Iwanttousemodules installed via the pip package manager from guile,andwhatpaths and imports I need to make, and how I might need to wrapthemcorrectly in the scheme and python files to invoke a pip packageprocedurefrom guile. Best regards, David On 2020-02-09 18:59, Stefan Israelsson Tampe wrote:I'm the author of that lib. 1) The main bindings are reachable through (language pythonmodulepython) So you could now go ahead and do(use-modules (language python module python)) ;L pythonAnd you will get a python shell that works quite ok foroneliners2) If you write a module and place it in a/b/c.py you can use the classes and functions theirin by (use-modules (a b c)) 3) you can load a .py file as (i hope this work) (load "a.py") 4) If you place a module in (language python module a.py) youcanimportir as a usual mode asfrom a import *The documentation is for the macro framework that enablesyoutoworkwith python classes and idioms like python iteration. Hope this helps /Stefan On Sun, Feb 9, 2020 at 6:31 PM david larsson <address@hidden> wrote:Hi everyone, I am trying to wrap my head around how to use thepython-on-guilelibrary, but Im struggling. Does anyone have example codethatmighthelp, and which isn't too advanced? All tips and suggestions appreciated! Best regards, David
[Prev in Thread] | Current Thread | [Next in Thread] |