Re: Android question: how to connect to swank, running on android?

PR <[email protected]>
Newsgroups gmane.lisp.ecl.general
Message-ID <CAOJeB-Bje76bCOLtRz8+87ZEGtkXCzSXYUw4jQj4D1=JK50pzg@mail.gmail.com>
2017-08-20 21:47 GMT+02:00, Daniel Kochmański <[email protected]>:
> Did you try again (without restarting ECL on Android) to slime-connect
> to Android host? I don't remember, but I think I had such problem, but
> connecting again worked (but it may be just my imagination).
>
> Other ideas: are you sure your slime and swank versions match?
>
> Did you try to update slime and swank to the newest (i.e taken from
> github) versions?

oh yes, I tried everything I could imagine...

Both slime and swank versions match (it showed a warning previously,
so I updated them to the latest version, on both computers).

Me thinks it's something trivial, which simply needs some more fantasy
and patience (as always...). In fact, I have no experience with remote
Slime connections, so this is my first try.

(Never mind, I like "puzzles" like this one, they teach you so much
about things you didn't even intend to learn!)

Paul




>
>
> On 20.08.2017 21:39, PR wrote:
>> 2017-08-19 23:25 GMT+02:00, Daniel Kochmański <[email protected]>:
>>> AFAIR I was connecting over wifi to the REPL on my Android device.
>>>
>>> If the port forwarding works fine - do you have some logs either from
>>> emacs or running ECL process which show what's going on?
>> ok, just to report the current state:
>>
>>   - if I run '(start-swank)' from the desktop (same sources as on
>> android), it works locally
>>   - PC and tablet are connected via USB
>>   - both PC and tablet are in the same wlan, and can ping each other
>>   - port forwarding is enabled: 'adb forward tcp:4005 tcp:4005'
>>   - if I try to connect from the PC to Swank running on the tablet,
>> Emacs logs these messages:
>>
>>
>> <snip Emacs messages>
>>
>>    Connecting to Swank on port 4005..
>>    Lisp connection closed unexpectedly: connection broken by remote peer
>>
>>    error in process filter: if: Lisp connection closed unexpectedly
>>    error in process filter: Lisp connection closed unexpectedly
>>    Error running timer `slime-process-available-input': (error
>> "Selecting deleted buffer")
>>
>> </snip Emacs messages>
>>
>>
>> So, still no luck...
>>
>> Paul
>>
>>
>>
>>
>>
>>
>>> Daniel
>>>
>>>
>>> On 19.08.2017 22:24, PR wrote:
>>>> thanks to both of you, but it still doesn't work.
>>>>
>>>>   From the PC, I did:
>>>>
>>>>     $ adb forward tcp:4005 tcp:4005
>>>>
>>>> so, this part works.
>>>>
>>>> Daniel, I already "stole" the functions from the "ecl-android" project
>>>> (prior to post my question); without them I would have been lost...
>>>>
>>>> So, I'll have to play around a little... Of course I will post the
>>>> solution here, if I get it to work.
>>>>
>>>> Paul
>>>>
>>>>
>>>> 2017-08-19 17:27 GMT+02:00, Daniel Kochmański <[email protected]>:
>>>>> Hello,
>>>>>
>>>>> swank listens by default only for localhost connections (for a good
>>>>> reason!). To force it to listen for connections from specific host
>>>>> other
>>>>> than 127.0.0.1 you have to bind swank::*loopback-interface* to it. For
>>>>> instance to listen for connections from everywhere on port 4005 you
>>>>> could use functions from
>>>>> https://gitlab.common-lisp.net/ecl/ecl-android/blob/master/assets/lisp/etc/user.lisp
>>>>>
>>>>> (defun start-swank ()
>>>>>      (format t "Starting swank server~%")
>>>>>      (mp:process-run-function
>>>>>       "SLIME-listener"
>>>>>       (lambda ()
>>>>>         (let ((swank::*loopback-interface* "0.0.0.0"))
>>>>>           (swank:create-server :port 4005
>>>>>                                :dont-close t
>>>>>                                ;; :style nil #|:spawn|#
>>>>>                                )))))
>>>>>
>>>>> (defun stop-swank ()
>>>>>      (format t "Stopping swank server~%")
>>>>>      (swank:stop-server 4005)
>>>>>      (format t ";; Swank off-line~%"))
>>>>>
>>>>> Note, that newest slime/swank should support :spawn communication
>>>>> style
>>>>> just fine with ECL (my PR was merged lately). In that case it should
>>>>> be
>>>>> enough to call create-server which won't block (note that in the
>>>>> example
>>>>> above we create separate thread for that).
>>>>>
>>>>> Since ECL isn't run from CLI but as shared library, it is useful to
>>>>> define implementation for implementation program (don't remeber for
>>>>> sure, but I think lack of this caused some problems later)
>>>>>
>>>>> (defimplementation lisp-implementation-program ()
>>>>>      "Return the argv[0] of the running Lisp process, or NIL."
>>>>>      "org.lisp.ecl")
>>>>>
>>>>> Hope this helps.
>>>>>
>>>>> Best regards,
>>>>>
>>>>> Daniel
>>>>>
>>>>>
>>>>> On 19.08.2017 16:32, PR wrote:
>>>>>> Hi again,
>>>>>>
>>>>>> so, the progress of the new android REPL is going well, it already
>>>>>> runs Quicklisp and can start swank, and right there I'm stuck now:
>>>>>> How does one connect from the local computer to the android device,
>>>>>> which is running the SLIME-listener?
>>>>>>
>>>>>> They are connected via USB, and the device is /not/ rooted.
>>>>>>
>>>>>> Since this is certainly of public interest, I ask here, thanks for
>>>>>> any
>>>>>> help!
>>>>>> Below the link to the current APK of the REPL (you'll need android
>>>>>> version >= 4.1, API >= 16):
>>>>>>
>>>>>> http://lights-of-holiness.eu/tmp/repl.apk
>>>>>>
>>>>>> After launching the app, do (there is currently no feedback of the
>>>>>> progress, sorry):
>>>>>>
>>>>>>      (quicklisp)   ; should take less than a minute, with a fast
>>>>>> internet
>>>>>> connection
>>>>>>      (start-swank) ; same as above (needs to byte-compile all
>>>>>> 'contribs')
>>>>>>
>>>>>> If I run:
>>>>>>
>>>>>>      (mp:all-processes)
>>>>>>
>>>>>> it lists the running "SLIME-listener" process, so it seems to work...
>>>>>>
>>>>>> Thanks for any help!
>>>>>>
>>>>>> Paul
>>>>>>
>>>
>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.