qtools
qtools copied to clipboard
Deployment to Windows not working
Today I was trying to check out how deployment worked but I ran into some issues. When I moved the deployment files over to a new windows computer it was immediately crashing. There was no window and nothing popped up in the task bar. I only saw it live for a brief second in the task manager. To set context I tried (on two windows 10 pc's)
Implementations: sbcl 1.4.14 ccl 1.11.5
Example programs: qtools-melody (with the added lines for deployment) halftone
Quicklisp was setup [qtools and related packages installed before building] and (asdf:operate :build-op :system-name :force T) was run in fresh images of both implementations with :system-name replaced by the correct name. [The "bin" directory was cleared for every different attempt I tried]
The deployment files were tested and ran on the original PC they compiled on. I also attempted to enable the debugging console on Windows but even though it would compile it never showed me the console. None of the attempts through any implementation ran on the second computer. There did not appear to be any errors in the compilation.
I'm not sure if lisp support for Windows is just iffy or if I'm missing something. I've surveyed a lot of gui toolkits and qtools by far seems the most pleasant to use, so hopefully this can get worked out. Let me know if any other information is needed, I will be messing with it myself to see if I can get it working. I decided to make an issue out of it because I'm unaware if there is a step I'm missing or if there's some current issue with running on Windows reliably.
Nah, windows itself should be fine, I've done it before. Do you have SBCL compiled with core compression on? If so, you need to make sure that the binary folder contains libz.dll. See shinmera/deploy#3
I also attempted to enable the debugging console on Windows but even though it would compile it never showed me the console.
This suggests an issue in Deploy's handling of whether it wants to build a console or graphical application. https://github.com/Shinmera/deploy/blob/7bd96ba3f88a424e03394de1adadf4a4993f849c/deploy.lisp#L157 I ran into a similar issue a few days ago but didn't have time to spend on it back then.
I can't support you with that at the moment as I no longer have a Windows machine available until 2nd Jan. Perhaps @Shinmera could take a look if he has a while.
It's more likely that this means it crashes before it gets to the console.
It's more likely that this means it crashes before it gets to the console.
I don't think Windows deployment works like that - an console application shows a CMD window as soon as it is started.
@Silverbeard00 Have you tried running your application from a Windows unixlike terminal, such as Git Bash or MinGW shell? It should show any and all console messages that the application prints.
@Shinmera It's whatever the default SBCL binary comes with for Windows, but I'll try including libz too just in case.
@phoe I haven't, only the Windows CLI.
I'm going to setup a more thorough dev environment on one of these PC's (Cygwin, Visual Studio) and try testing it more extensively. I'm guessing it's probably just a missing .dll at this point.
@Silverbeard00 Windows GUI would notify you with a pop-up if it was a missing DLL. That's what I'm worried about.
Try installing Git Bash or MinGW shell on your Windows machine and running with this - this should give you a standard output that Lisp is able to write to.
@phoe It appears all the work desktops got shutoff so I won't have remote access to a Windows machine til next week. That's unfortunate. I'll try what you said as soon as I'm able.
@phoe It only shows that dialog if the dependency is recorded in the binary, which it is not for dynamically loaded libraries.
I'll try to debug this tomorrow (provided I can remember to)
Hello, I have the same problem, I tested halftone
using (ql:quickload :halftone) (halftone:start)
works fine in sbcl
Creating the executable using the deployment instruction also works fine
When I double click the executable nothing happens, when I open it with cmd nothing is outputted, I just tried opening it with MSYS2 and finally got an error
$ ./halftone.exe
==> Performing warm boot.
-> Runtime directory is C:/Users/Hunar/quicklisp/dists/quicklisp/software/halftone-20190710-git/bin/
-> Resource directory is C:/Users/Hunar/quicklisp/dists/quicklisp/software/halftone-20190710-git/bin/
==> Running boot hooks.
-> Loading smoke module QTCORE.
-> Loading smoke module QTGUI.
-> Loading smoke module QTOPENGL.
==> Running Qtools boot hooks.
==> Reloading foreign libraries.
==> Launching application.
==> Encountered unhandled error: Class not found: QGLWidget
WARNING:
Runner #<SIMPLE-TASKS:QUEUED-RUNNER :STATUS :STOPPING {10016D3713}> did not stop.
==> Running quit hooks.
But I don't know how to solve that yet, I just started knowing about common lisp for a month