qtools icon indicating copy to clipboard operation
qtools copied to clipboard

Deployment to Windows not working

Open ArnautDaniel opened this issue 6 years ago • 9 comments

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.

ArnautDaniel avatar Dec 22 '18 00:12 ArnautDaniel

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

Shinmera avatar Dec 22 '18 07:12 Shinmera

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.

phoe avatar Dec 22 '18 07:12 phoe

It's more likely that this means it crashes before it gets to the console.

Shinmera avatar Dec 22 '18 07:12 Shinmera

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.

phoe avatar Dec 22 '18 07:12 phoe

@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.

ArnautDaniel avatar Dec 22 '18 13:12 ArnautDaniel

@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 avatar Dec 22 '18 14:12 phoe

@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.

ArnautDaniel avatar Dec 22 '18 14:12 ArnautDaniel

@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)

Shinmera avatar Dec 22 '18 16:12 Shinmera

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

hunar1997 avatar Jan 30 '21 07:01 hunar1997